Procmail 配方,邮件归 root 所有

Procmail 配方,邮件归 root 所有

我使用 Postfix 和 Procmail 的组合来处理我的一台服务器上的入站电子邮件。每个用户都有一个本地帐户,/usr/local/etc/procmailrc多年来我一直成功使用以下帐户:

DEFAULT=$HOME/mail/
LOGFILE=/var/log/procmail

我最近添加了一种方法,将标记为垃圾邮件的邮件直接发送到单独的文件夹:

:0
* ^X-Spam-Flag: YES
$HOME/mail/.Junk/

但是,在某些情况下,进入此文件夹的邮件似乎归 root 所有,而不是正确的用户。我从未遇到过收件箱问题,而且它似乎只影响某些用户。

我设法捕获了其中一个 Procmail 进程,ps它似乎以正确的用户身份运行。(此用户在垃圾邮件文件夹中也有 root 拥有的邮件)

# ps axu | grep procmail
{correct-local-username}   7402   0.0  0.2  12140   1780 ??  Ss   11:37AM      0:00.01 /usr/local/bin/procmail -a

有谁知道为什么通过配方处理的消息最终会归 root 所有,而进入默认文件夹的消息会得到正确的所有者?

我能做什么(即使它很不专业,比如从 Procmail 配方中调用 chown)来确保消息始终属于正确的用户?

如果它很重要,Procmail 在 Postix 中的配置如下:

mailbox_command = /usr/local/bin/procmail -a "$EXTENSION"

答案1

检查垃圾邮件文件夹的权限是否正确,但您也可以将以下内容添加到您的 procmail.cf 中:

DROPPRIVS=yes

我不是 procmail 方面的专家,但根据这个人进入,它应该放弃 procmail 所拥有的任何特权,而收件人则不会(强调我的)。

 DROPPRIVS            If  set  to  `yes'  procmail   will   drop   all
                      privileges  it  might  have  had (suid or sgid).
                      This is only useful if  you  want  to  guarantee
                      that the bottom half of the /etc/procmailrc file
                      is executed on behalf of the recipient.

关键部分;代收款人执行

用户@Tripleee 解释了此方法为何有效:

DEFAULT 传递发生在隐式 DROPPRIVS 之后,但如果您在特权模式下明确传递某些内容,则还需要明确放弃您的权限。

相关内容