Postfix/SpamAssassin은 SPF를 완전히 무시합니다.

Postfix/SpamAssassin은 SPF를 완전히 무시합니다.

나는 현재 "나 자신"으로부터 수많은 이메일을 받고 있으며 이를 필터링하는 데 많은 어려움을 겪고 있습니다. SPF를 확인하고 (아마도) 실패 시 거부하도록 postfix를 구성했으며 SpamAssassin에는 SPF 필터가 설치되어 있습니다. 그러나 아무것도 작동하지 않습니다. 텔넷을 통해 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가 차단해도 상관없습니다. 받은편지함에 넣기를 원하지 않습니다. 이 두 가지 유형의 차단을 통합하려고 하면 혼란스러울 수 있는데, 그래서 작동하지 않는 걸까요? 아니면 내 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. 그런 다음 spamassassin과 해당 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를 다시 시작하면 모든 것이 예상대로 작동합니다!

관련 정보