私はPostfixとProcmailの組み合わせを使用して、サーバーの1つで受信メールを処理しています。各ユーザーはローカルアカウントを持っており、私は以下を使用しています/usr/local/etc/procmailrc
何年にもわたって成功:
DEFAULT=$HOME/mail/
LOGFILE=/var/log/procmail
最近、スパムとしてフラグが付けられたメッセージを別のフォルダーに送信するレシピを追加しました。
:0
* ^X-Spam-Flag: YES
$HOME/mail/.Junk/
ただし、このフォルダーに送信されるメッセージは、正しいユーザーではなくrootによって所有されているように見える場合があります。 Inboxでこの問題が発生したことは一度もありません。また、特定のユーザーにのみ影響するようです。
ps
でProcmailプロセスの1つをキャッチできましたが、正しいユーザーとして実行されているようです。 (このユーザーは、ジャンクフォルダーに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によって所有され、デフォルトのフォルダーに送信されるメッセージが正しい所有者になる理由を誰かが知っていますか?
メッセージが常に正しいユーザーによって所有されていることを確認するために(Procmailレシピからchownを呼び出すなどのハッキーであっても)できることはありますか?
重要な場合、ProcmailはPostixで次のように設定されています。
mailbox_command = /usr/local/bin/procmail -a "$EXTENSION"
ジャンクフォルダの権限が正しいことを確認しますが、procmail.cfに次を追加することもできます。
DROPPRIVS=yes
私はprocmailの専門家ではありませんが、 この男性のエントリ によると、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の後に発生しますが、特権モードで何かを明示的に配信する場合は、特権も明示的に削除する必要があります。