Postfix / SpamAssassinはSPFを完全に無視します。

Postfix / SpamAssassinはSPFを完全に無視します。

私は現在「自分自身」から多数の電子メールを受信して​​おり、それをフィルタリングするのに多くの困難を抱えています。 SPFをチェックし(おそらく)失敗したときに拒否するようにpostfixを設定し、SpamAssassinにSPFフィルタがインストールされています。しかし、何も動作しません。 Telnetを介してpostfixに接続し、「自分」は認証なしでプレーンテキストで自分にメッセージを送信できます。

$ sudo -u spamd -H spamassassin -D --lint 2>&1 | grep SPF
May 24 10:12:04.282 [15707] dbg: diag: [...] module installed: Mail::SPF, version v2.008
May 24 10:12:04.289 [15707] dbg: plugin: loading Mail::SpamAssassin::Plugin::SPF from @INC

master.cfの関連ビット

...
smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
submission inet n       -       n       -       -       smtpd -o content_filter=spamassassin
smtps     inet  n       -       n       -       -       smtpd -o content_filter=spamassassin
policyd-spf unix - n n - - spawn user=nobody argv=/bin/python /usr/libexec/postfix/policyd-spf
spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
...

抜粋main.cf

smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    check_policy_service unix:private/policyd-spf,
    reject_unauth_destination,
    reject_rhsbl_reverse_client dbl.spamhaus.org,
    reject_rhsbl_helo dbl.spamhaus.org,
    reject_rhsbl_sender dbl.spamhaus.org,
    reject_rbl_client zen.spamhaus.org

DNSのtxtレコードにSPFが定義されています(ネットワークの制限により、メールジェットを介してすべてのメールを中継します)。

example.com. 20020 IN TXT "v=spf1 include:spf.mailjet.com ?all"

編集する:提案どおりにDNSを更新しましたが、正確な動作は持続します。

example.com. 86400 IN TXT "v=spf1 include:spf.mailjet.com -all"

編集2:違反を100%分離するためにDMARCレコードを追加しましたが、まだ機能しません。

_DMARC.example.com. 86400 IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1; pct=100"

mxtoolboxでSPFとDMARCをチェックしましたが、すべてが大丈夫です。

ただし、Postfixは電子メールを直接転送しますが、SAはSPF_NEUTRAL電子メールヘッダに追加されます。それでは...これをどうやって行いますか?この種のスパムメールが送信されないようにするにはどうすればよいですか?

編集:SAやPostfixがブロックしても構いません。受信トレイに入れたくありません。この2種類のブロックを統合しようとすると混乱する可能性がありますが、うまくいきませんか?それとも私のDNSが間違って設定されていますか?

編集3:方法2によると、https://serverfault.com/questions/905591/receive-spam-from-my-own-email-address-postfixこれはうまくいくべきですか? (この質問はPerlモジュールを使用する古い質問であり、最新のPythonモジュールを使用していますが、同じ方法で実装しました。)

答え1

私もspamassassinSPFの実装が「不思議」であることを発見しました。postfix-policyd-spf-perlそれはpostfix-policyd-spf-python動作しません。完璧

そのために

  1. SPFを最初に確認しpostfix-policyd-spf-python、SPFルールに違反するすべてのコンテンツをブロックするようにpostfixを設定します。

  2. 次に、spamasassinとそのSPFルールを使用して電子メールの内容を確認します。

取付ける:

apt install postfix-policyd-spf-python

次に、ファイルを編集し、 spamassassin の前にフィルタを/etc/postfix/main.cf挿入しますspf(私の場合はamavis)。

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,  reject_unauth_destination, check_policy_service unix:private/policy-spf, check_policy_service inet:127.0.0.1:10023

そして、次の行を追加してください/etc/postfix/master.cf

policy-spf  unix  -       n       n       -       -       spawn user=nobody argv=/usr/bin/policyd-spf

その後、postfixを再起動すると、すべてが期待どおりに機能します!

関連情報