【问题标题】:procmail - using {} won't deliver to mboxprocmail - 使用 {} 不会传送到 mbox
【发布时间】:2021-03-13 23:23:58
【问题描述】:

我正在尝试使用 procmail 将一些旧电子邮件整理到我的雷鸟 mbox 文件中,但是在使用大括号时我似乎无法将其归档到 mbox 文件中。使用和不使用大括号进行下面的简单测试会提供不同的结果 - 请问我错过了什么:

SHELL=/bin/sh
# --- OPTIONAL, USED FOR DEBUGGING (comment out)
VERBOSE=yes
LOGABSTRACT=all
LOGFILE="procmail.log"
MAILDIR=/home/jake/windows/Thunderbird/Mail/Local\ Folders
DEFAULT=/home/jake/done/

# goes into MAILDIR/processed
:0
processed

# goes into DEFAULT/msg.gAmAAAAA4F/etc.
:0
{
processed
}

【问题讨论】:

    标签: procmail


    【解决方案1】:

    您的第二个配方基本上是一个语法错误,尽管 Procmal 解析器实际上将它解析为一个表达式,但它的含义与您的预期完全不同。以下是你实际写的,完整的拼写。

    :0
    {
      processed=''
    }
    

    因此,Procmail 进入大括号,执行分配,退出大括号,并在到达配方文件末尾时传递给 $DEFAULT

    要真正交付到文件中,您需要一个完整的配方,例如

    :0
    {
        :0
        processed
    }
    

    ...但显然带有大括号的外部配方在这里完全是多余的。

    一个符号本身被解析为一个空变量赋值,它清除了由该符号命名的变量这一事实并不明显,而且不仅对初学者来说非常混乱,所以不要因为你无法理解这一点而感到特别难过一出局。

    使用VERBOSE=yes,您实际上应该会发现日志文件准确地向您显示了这个事件链。您的日志文件最终会出现在您的 MAILDIR 中,所以也许您没有找到它...?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多