我在 /etc/procmailrc 中有这段代码:
DROPPRIVS=yes
DEFAULT=$HOME/Maildir/
:0
* ? /usr/bin/test -d $DEFAULT || /bin/mkdir $DEFAULT
{ }
:0 E
{
# Bail out if directory could not be created
EXITCODE=127
HOST=bail.out
}
MAILDIR=$HOME/Maildir/
但是,当目录已经存在时,有时它会发送一封带有此错误的返回电子邮件:554 5.3.0 unknown mailer error 127
. 请注意,电子邮件仍会送达,但它也会将错误代码发送回发送用户。
我通过注释掉EXITCODE
和HOST
线暂时解决了这个问题,但我想知道是否有更好的解决方案。
我在网络上的多个地方找到了这段代码,但真的找不到为什么这个错误会回到我身边。当我向本地用户发送电子邮件时似乎会发生这种情况。有时用户有一个.forward
文件要发送给其他用户,有时没有,但结果是一样的。我也试过删除DROPPRIVS
,以防它搞砸了转发,但它似乎并没有影响它。
- 线路开始有
* ? /usr/bin/test
问题吗? *
表示一个正则表达式,但它?
使它返回一个整数值,对吗?- 匹配的整数是什么?还是只是比较整数返回值?
- 我需要两个块之间的空间吗?
谢谢您的帮助。
我敢打赌某种比赛条件。如果将 /usr/bin/test 行包装成一个小 shell 脚本,这有关系吗?喜欢:
使用 make-sure-exists-dir 执行以下操作:
此外,在查看 mkdir 的手册页时,-p 不会出错,所以你可以这样做:
实际上procmail 的 dovecot 说明是我正在寻找的。
感谢您的帮助。