USD*_*att 3 freebsd postfix procmail
我正在使用 Postfix 和 Procmail 的组合来处理我的一台服务器上的入站电子邮件。每个用户都有一个本地帐户,多年来我一直在/usr/local/etc/procmailrc
成功使用以下帐户:
DEFAULT=$HOME/mail/
LOGFILE=/var/log/procmail
Run Code Online (Sandbox Code Playgroud)
我最近添加了一个方法,将标记为垃圾邮件的邮件定向到一个单独的文件夹:
:0
* ^X-Spam-Flag: YES
$HOME/mail/.Junk/
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,进入此文件夹的邮件似乎归 root 而不是正确的用户所有。我的收件箱从来没有遇到过这个问题,而且它似乎只影响某些用户。
我设法捕获了其中一个 Procmail 进程ps
,它似乎确实以正确的用户身份运行。(此用户在 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
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么由配方处理的消息最终归 root 所有,而进入默认文件夹的消息将获得正确的所有者?
有什么我可以做的(即使它很笨拙,例如从 Procmail 配方中调用 chown)来确保消息始终归正确的用户所有?
以防万一,Procmail 在 Postix 中的配置如下:
mailbox_command = /usr/local/bin/procmail -a "$EXTENSION"
Run Code Online (Sandbox Code Playgroud)
检查垃圾文件夹的权限是否正确,但您是否还可以将以下内容添加到您的 procmail.cf:
DROPPRIVS=yes
Run Code Online (Sandbox Code Playgroud)
我不是 procmail 的专家,但根据这个 man 条目,它应该放弃 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.
Run Code Online (Sandbox Code Playgroud)
关键部分; 代表收件人执行。
从用户@Tripleee 解释为什么这样做:
DEFAULT 传递发生在隐式 DROPPRIVS 之后,但如果您在特权模式下显式传递某些内容,则还需要显式删除您的权限。
归档时间: |
|
查看次数: |
1227 次 |
最近记录: |