web-dev-qa-db-ja.com

SpamassassinのPostfixは、スパムフォルダに配信する代わりにスパムを破棄します

Spamassassinに問題があり、実際のスパムフォルダに配信する代わりにメールを破棄します。メールがスパムではなかった場合に備えて、このオプションを変更する必要がありますが、スパムであるとマークされたので、確認できます。時々スパムフォルダ。

/etc/postfix/master.cf

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
spamassassin unix -     n       n       -       -       pipe user=spamd argv=/usr/bin/spamc -f -e  /usr/sbin/sendmail -oi -f ${sender} ${recipient}

私の構成はに設定されています

/etc/postfix/header_checks 
/^X-Spam-Flag:.YES/ DISCARD This is spam

メッセージをスパムとしてマークし、spam/junkフォルダーに配信するように構成する方法はありますか?

ログ

Apr 28 09:55:26 testmail postfix/pickup[2171]: BF55C2C2451: uid=1001 from=<email@email>  
Apr 28 09:55:26 testmail postfix/pipe[2275]: 006602C244C: to=<[email protected]>, relay=spamassassin, delay=0.99, delays=0.34/0.03/0/0.62, dsn=2.0.0, status=sent (delivered via spamassassin service)  
Apr 28 09:55:26 testmail postfix/qmgr[2172]: 006602C244C: removed  
Apr 28 09:55:26 testmail postfix/cleanup[2274]: BF55C2C2451: message-id=<[email protected]>  
Apr 28 09:55:26 testmail postfix/cleanup[2274]: BF55C2C2451: discard: header X-Spam-Flag: YES from local; from=<email@email> to=<email@email>: This is spam  
2
J.K

可能性を理解するために、 Postfix Architecture の概念を持っているとよいでしょう。

この最初の画像は、現在の状況を視覚化したものです。 PostfixはすべてのメッセージをSpamAssassinの前後の2回処理します。したがって、X-Spamヘッダーは2回目のラウンドでのみ設定され、スパムとしてフラグが付けられたメッセージは2回目のラウンドでサイレントにDISCARDされます cleanup

Current configuration with header_checks

より便利なのは、REJECT明確なスパム(SPFハード障害、存在しない送信者ドメイン、一部のブラックリストに登録されたIPなど)です。 smtpd によって最初に受信されます。これにより、メッセージをキューに入れるのではなく、対応するSMTPエラーコードを含むメッセージを実際に拒否する可能性があります。キューに入れると、メッセージが受け入れられたという誤ったヒントが得られるためです。これは、 helosender 、および recipient の制限で構成できます。この2番目の図は、通常、受信トレイに配信されるメッセージのパスをさらに表しています。

Rejecting messages before queuing

希望する状態は、メッセージをスパムとしてマークし、それをメールボックスSpamに配信することだけでした。実際、SpamAssassinはすでにそれを行っているので、メール転送エージェントの代わりにメール配信エージェントMDAに状況を処理させる必要がありますMTA。最後の図では ProcmailX-Spam-Flagに基づいて正しいメールボックスにメッセージを配信します。

enter image description here

この機能の場合:

  • /^X-Spam-Flag:.YES/ DISCARDから/etc/postfix/header_checksを削除します。
  • mailbox_command = procmail -a "$EXTENSION"main.cfに追加します。
  • /etc/procmailrc(またはユーザーごとの~/.procmailrc)の構成例:

    MAILDIR=$HOME/mail/
    DEFAULT=$HOME/mail/Inbox
    
    :0:
    * ^X-Spam-Flag: Yes
    Spam
    

いくつかの選択肢もあります。 ProcmailはPostfixの代わりにSpamAssassinにパイプすることができ、ユーザーごとの(スコアリング)設定を可能にします。 Maildrop もMDAであることに気付くかもしれません。

1
Esa Jokinen