我正在使用Postfix和Procmail的组合来处理我的一台服务器上的入站电子邮件.每个用户都有一个本地帐户,我已经成功使用下面的/usr/local / etc / procmailrc多年:
DEFAULT=$HOME/mail/ LOGFILE=/var/log/procmail
我最近添加了一个配方,将标记为垃圾邮件的邮件定向到一个单独的文件夹:
:0 * ^X-Spam-Flag: YES $HOME/mail/.Junk/
但是,在某些情况下,进入此文件夹的消息似乎归root而不是正确的用户所有.我从未在收件箱中遇到此问题,而且它似乎只影响某些用户.
我设法在ps中捕获了一个Procmail进程,它似乎确实以正确的用户身份运行. (此用户在Junk文件夹中也有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拥有,而进入默认文件夹的消息将获得正确的所有者?
有什么我可以做的(即使它是hacky,如从procmail配方调用chown),以确保消息始终由正确的用户拥有?
如果它很重要,Procmail在Postix中配置如下:
mailBox_command = /usr/local/bin/procmail -a "$EXTENSION"
解决方法
检查垃圾文件夹的权限是否正确,但是您是否还可以将以下内容添加到procmail.cf中:
DROPPRIVS=yes
我不是procmail的专家,但根据this man entry,它应该放弃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:
The DEFAULT delivery happens after an implicit DROPPRIVS,but if you explicitly deliver something while in privileged mode,you also need to explicitly drop your privileges.