我正在使用Postfix和Procmail的组合来处理我的一台服务器上的入站电子邮件。 每个用户都有一个本地帐户,多年来我一直使用下面的/usr/local/etc/procmailrc
:
DEFAULT=$HOME/mail/ LOGFILE=/var/log/procmail
我最近添加了一个配方,将标记为垃圾邮件的邮件指向一个单独的文件夹:
:0 * ^X-Spam-Flag: YES $HOME/mail/.Junk/
但是,在某些情况下,进入该文件夹的消息似乎是由root用户拥有的,而不是正确的用户。 我从来没有收到这个问题,它似乎也只是影响某些用户。
我设法捕捉在ps
中的Procmail进程之一,它似乎运行正确的用户。 (这个用户在垃圾文件夹中也有根拥有的邮件)
# 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
有没有人有一个想法,为什么消息处理的食谱将由根拥有,而消息去默认文件夹会得到正确的所有者?
有什么我可以做的(即使它是hacky,例如从Procmail配方中调用chown)来确保消息始终由正确的用户拥有?
如果重要,Procmail在Postix中configuration如下:
mailbox_command = /usr/local/bin/procmail -a "$EXTENSION"
检查垃圾文件夹的权限是否正确,但您是否也可以将以下内容添加到procmail.cf中:
DROPPRIVS=yes
我不是procmail的专家,但根据这个人的条目 ,它应该放弃procmail已经有的任何priveleges,而收件人不(强调我的)。
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.
关键部分; 代表收件人执行 。
为什么这个工作formsuser @Tripleee的解释:
DEFAULT传递发生在隐式DROPPRIVS之后,但是如果您在特权模式下显式传递某些内容,则还需要显式删除您的权限。