私は現在「自分自身」から多数の電子メールを受信しており、それをフィルタリングするのに多くの困難を抱えています。 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
私もspamassassin
SPFの実装が「不思議」であることを発見しました。postfix-policyd-spf-perl
それはpostfix-policyd-spf-python
動作しません。完璧。
そのために
SPFを最初に確認し
postfix-policyd-spf-python
、SPFルールに違反するすべてのコンテンツをブロックするようにpostfixを設定します。次に、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を再起動すると、すべてが期待どおりに機能します!