postfix – Procmail配方,root拥有的邮件

我正在使用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.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...