Postfix
Procmail 配方,root 擁有的郵件
我正在使用 Postfix 和 Procmail 的組合來處理我的一台伺服器上的入站電子郵件。每個使用者都有一個本地帳戶,多年來我一直在
/usr/local/etc/procmailrc
成功使用以下帳戶:DEFAULT=$HOME/mail/ LOGFILE=/var/log/procmail
我最近添加了一個配方,可以將標記為垃圾郵件的郵件定向到單獨的文件夾:
:0 * ^X-Spam-Flag: YES $HOME/mail/.Junk/
但是,在某些情況下,進入此文件夾的消息似乎歸根使用者所有,而不是正確的使用者。我的收件箱從來沒有遇到過這個問題,而且它似乎只影響某些使用者。
我設法擷取了其中一個 Procmail 程序,
ps
它似乎確實以正確的使用者身份執行。(此使用者在垃圾文件夾中也有根擁有的郵件)# 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
有誰知道為什麼配方處理的消息最終會歸根所有,而進入預設文件夾的消息會得到正確的所有者?
有什麼我可以做的(即使它很棘手,例如從 Procmail 配方中呼叫 chown )以確保消息始終由正確的使用者擁有?
如果它很重要,Procmail 在 Postix 中的配置如下:
mailbox_command = /usr/local/bin/procmail -a "$EXTENSION"
檢查垃圾文件夾的權限是否正確,但您是否也可以將以下內容添加到您的 procmail.cf:
DROPPRIVS=yes
我不是 procmail 方面的專家,但根據這個 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 解釋為什麼這樣做:
DEFAULT 傳遞發生在隱式 DROPPRIVS 之後,但如果您在特權模式下顯式傳遞某些內容,則還需要顯式刪除您的權限。