Lassen Sie eingehende E-Mails von postfix als von meiner eigenen Domain abgelehnt abweisen

13798
dataless

Ich habe einen Postfix-Server, der korrekt konfiguriert ist, um eingehende E-Mails an meine Domäne zuzulassen und eine Authentifizierung erforderlich zu machen, um E-Mails an andere Netzwerke zu senden.

Eine Menge Spam, die ich bekomme, hat eine falsche Adresse von nicht existierenden Benutzern auf meiner eigenen Domain. SPF könnte dies beenden, und ich habe SPF in meinem DNS konfiguriert, aber ich bin nicht sicher, ob ich den Weg des vollständigen Blockierens aller SPF-Fehler auf der SMTP-Ebene gehen möchte.

Gibt es ein schnelles Postfix-Konfigurationselement, das ich hinzufügen kann, um eingehende E-Mails abzulehnen, die FROM mydomain sind und nicht authentifiziert wurden?

Um genau zu sein, das ist mein postfix conf:

smtpd_relay_restrictions = permit_sasl_authenticated, reject_unauth_destination smtpd_recipient_restrictions = permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_rhsbl_sender dbl.spamhaus.org, permit smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_helo_restrictions = reject_unknown_helo_hostname, reject_invalid_helo_hostname 

es ist jedoch immer noch möglich, an port 25 und anzuschließen

MAIL FROM: foo@mydomain.com RCPT TO: bar@mydomain.com ohne zu authentifizieren.

6

3 Antworten auf die Frage

7
nKn

Gibt es ein schnelles Postfix-Konfigurationselement, das ich hinzufügen kann, um eingehende E-Mails abzulehnen, die FROM mydomain sind und nicht authentifiziert wurden?

Nicht so schnell, aber man könnte eine einfache Implementierung SMTPD Politik und holt die senderund sasl_usernameund prüfen, ob die erste von Ihrer Domain kommt und die zweite besteht und kommt auch aus Ihrer Domain, wenn ja, Rückkehr DUNNO, andernfalls REJECT. Auf diese Weise stellen Sie sicher, dass für eingehende E-Mails, wenn diese von Ihren Benutzern stammen, die SASL-Authentifizierung erfolgen muss.

Um genau zu sein, das ist mein postfix conf:

Es gibt einige zusätzliche Elemente, die Sie Ihrer smtpd_recipient_restrictionsRichtlinie hinzufügen können, um den Spam zu stoppen und gleichzeitig Ihre Sicherheit zu verbessern:

smtpd_sender_restrictions = permit_mynetworks reject_unknown_sender_domain reject_sender_login_mismatch reject_unauth_pipelining reject_non_fqdn_sender permit 

Was bedeutet, dass jedes auf der Seite " Postfix Configuration Parameters " zu finden ist.

Es gibt einige zusätzliche Elemente, die Sie möglicherweise einschließen möchten, um den Spam zu stoppen:

  • SPF ist einer von ihnen, aber ich stimme zu, dass das Blockieren von nicht übereinstimmenden Tests recht schwer ist, wenn man bedenkt, dass einige schlecht implementierte Mailing-Listen E-Mails mit der ursprünglichen Absenderadresse von ihren Servern senden, sodass sie ausfallen.

  • DKIMist auch sehr mächtig (check OpenDKIM).

  • SpamAssassinkann in diesem Fall sehr hilfreich sein. E-Mails werden nicht blockiert, es wird jedoch ein Spam-Header hinzugefügt und somit klassifiziert.

  • Sie haben keine Postfix-Nachricht für einen dieser gefälschten Versuche bereitgestellt, Sie können jedoch überprüfen, ob sie von derselben IP-Adresse oder zumindest einer konkreten CIDR-Adresse stammen und sie mit dem smtpd_client_restrictionsParameter in eine schwarze Liste setzen .

  • Dasselbe kann auf die HELO/EHLONachricht angewendet und in eingefügt werden smtpd_helo_restrictions.

Wie Sie sehen, gibt es viele Möglichkeiten. Vielleicht finden Sie eine Kombination, die zu Ihrem Fall passt, und stoppen Sie alle gefälschten Versuche.

2
ThatGuy

Wenn Sie den Nachrichtenübermittlungsdienst von Postfix aktivieren (an Port 587), können Sie die Nachrichtenübermittlung von der Nachrichtenweiterleitung trennen, sodass jeder Dienst nach seinen eigenen Regeln (für Sicherheit, Richtlinien usw.) arbeiten kann ( RFC 4409 ).

Da sich berechtigte Benutzer unter dieser Konfiguration authentifizieren müssen, um den Port 587 für die Nachrichtenübermittlung zu verwenden, können Sie gefälschte, nicht authentifizierte E-Mails, die über Port 25 gesendet werden, sicher ablehnen.

Um die Übermittlung von (SASL-authentifizierten) Nachrichten an Port 587 zu aktivieren, fügen Sie der master.cf von Postfix einen Abschnitt wie den folgenden hinzu:

submission inet n - n - - smtpd -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_sasl_security_options=noanonymous -o smtpd_sasl_local_domain=$myhostname -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sender_login_maps=hash:/etc/postfix/virtual -o smtpd_sender_restrictions=reject_sender_login_mismatch -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject 

( Quelle )

Erstellen Sie dann eine Postfix-Zugriffstabelle (unter / etc / postfix / access), in der Sie angeben, wie Postfix auf bestimmte Absender reagieren soll:

allow_this_for_some_reason@mydomain.com OK keep_in_hold_queue@mydomain.com HOLD mydomain.com REJECT 

Weitere Informationen finden Sie in der accessManpage .

Führen Sie postmapdie Zugriffsdatei aus (um eine indizierte Nachschlagetabelle zu erstellen):

postmap /etc/postfix/access 

In entsprechenden Sender Einschränkungen zu main.cf:

smtpd_sender_restrictions = permit_sasl_authenticated, check_sender_access hash:/etc/postfix/access 

Laden Sie schließlich die neue Konfiguration neu. Auf Debian-basierten Systemen geschieht dies mit

sudo service postfix reload 
0
dataless

Ich habe einen Weg gefunden, um es zu lösen, obwohl ich neugierig bin, ob jemand eine direktere / einfachere Antwort hat.

Ich die verwendete reject_sender_login_mismatchEinstellung, so dass, wenn Postfix eine Zuordnung von „FROM“ Adresse einen Benutzernamen finden kann, erfordert es, dass dieser Benutzername authentifiziert werden.

Die Aufgabe besteht dann darin, eine Map zu erstellen, die alle Adressen @mydomain verarbeitet, lokale Benutzer jedoch ordnungsgemäß Mail für ihre Adresse senden kann.

Bei meiner speziellen Konfiguration verwende ich

virtual_alias_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf 

Adressen den tatsächlichen Benutzern zuordnen.

Ich fügte pcre:/etc/postfix/db-sender-logins-fallback.cfmeinem Hauptbenutzer eine weitere Adressdatenbank hinzu, die aus allen meinen Domains einen Regex enthält. Also jetzt in Kombination:

smtpd_sender_login_maps = sqlite:/etc/postfix/db-public-alias.cf pcre:/etc/postfix/db-public-alias-regex.cf pcre:/etc/postfix/db-sender-logins-fallback.cf smtpd_sender_restrictions = reject_unknown_sender_domain, reject_sender_login_mismatch 

Jeder Alias ​​kann nur von dem Benutzer gesendet werden, an den er weitergeleitet wird, und jede andere Adresse in meinen Domains kann nur von meinem Hauptbenutzerkonto aus gesendet werden. Jeder Spammer, der versucht, FROM zu senden: Meine Domain schlägt fehl, weil sie nicht protokolliert werden als ich.

Dies ist zwar eine gute Verbesserung für meine E-Mail-Einrichtung (lokale Benutzer können sich nicht mehr als andere Person ausgeben), aber für Benutzer mit sehr erweiterten Benutzerkontokonfigurationen kann es zu kompliziert sein. Ich bin immer noch neugierig, ob es eine Möglichkeit gibt, einfach zu sagen "für diese Domains in FROM: Der Benutzer muss angemeldet sein".