web-dev-qa-db-ja.com

procmailはユーザー設定を無視しています

私はpostfixと組み合わせてメールをフィルタリングするためにprocmailを使用しています。 procmailは、main.cf mailbox_commandを介してpostfixによってトリガーされます。

mailbox_command = /usr/bin/procmail -t -a "$EXTENSION"

しかしmaster.cfでは

procmail unix    n    n    -    20    pipe
    flags=R user=vmail argv=/usr/bin/procmail -o SENDER=${sender} -m USER=${user} EXTENSION=${extension}

正確にはわかりませんが、2つは同じコマンドではないようです。この状況が、procmailが/home/user/.procmailrcのユーザー設定を無視している理由である可能性はありますか?

procmailログを見ると、次のことがわかります。

From info@some_spam_domain.com  Sat Mar  1 17:10:24 2014
 Subject: ***** SPAM 27.4 ***** Hi i'm Masha 22 yo. do you have web camera?
  Folder: /usr/lib/dovecot/deliver -m Junk -d hans                       4202

実際には、dovecotを使用してメールを配信しています。 hansはユーザーであり、JUNKはメインの/ etc/procmailrcで次のように定義されたフォルダーです。

DROPPRIVS=no    
DELIVER="/usr/lib/dovecot/deliver"
SPAMORDNER="$DELIVER -m Junk -d $USER"

:0 w
* ^X-Spam-Status: Yes
| $SPAMORDNER

Procmailcfにあります

DROPPRIVS=no

DROPPRIVS = noは-dで機能しますが、ユーザーをオフにします。procmailrcDROPPRIVS= yes強制されたprocmailは、ユーザーwitchとして機能するため、-dなしで機能し、/ var/mail /に配信されます。ポイントわからない。

dROPPRIVSをオンにすると、ユーザーのホームフォルダに.prcocmailrcがある場合にのみ機能するようです。これは、/ home /に配信するように定義できるためです。そうでない場合、メールは/ var/mail /に配信され、maildir形式ではなくmbox形式で配信されます。


回避策は、/ etc/procmailrcにある次のようなもの(擬似コードの例)になると思います。

if exist  /home/<username>/.procmailrc
    set DROPPRIVS=yes
else
    set DROPPRIVS=no

これをprocmail言語で書くにはどうすればよいですか?

1
Max Muster

解決策はこれのようです

TMPFILE="$HOME/.procmailrc"
:0 w
* ?test -f $TMPFILE
{
    DROPPRIVS=yes
}

:0 Ew
* !test -f $TMPFILE
{
    DROPPRIVS=no
}

完璧に動作しますが、ログファイルに次のように書き込むバグがあるようです

procmail: Executing "test -f $TMPFILE"
procmail: Match on "test -f $TMPFILE"
procmail: Assigning "DROPPRIVS=yes"
procmail: Assuming identity of the recipient, VERBOSE=off
procmail: Program failure (75) of "/usr/lib/dovecot/deliver"

誰がこのVERBOSE = offを設定したのか理解できません。これは、私のprocmailrcにないため、deliverのコードのどこかにあるようです。

とにかく、この行の後、ユーザー.procmailrcに正しくジャンプし、失敗することなく実行します。したがって、この失敗は単なる表面的なもののようです。

P.S.問題を理解する最良の方法は、他の誰かにそれを説明しようとすることです:))

0
Max Muster