Postfix: optimierte Konfiguration gegen Spam und Missbrauch
In einem früheren Artikel versprach ich, eine Postfix-Konfiguration zu posten, die nach (meinen) neuen Erkentnissen eingerichet ist.
So sah meine Konfiguration nach der Einrichtung von sqlgrey aus:
[...]
smtpd_recipient_restrictions =
permit_sasl_authenticated
permit_mynetworks
reject_invalid_hostname
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unauth_destination
reject_unknown_sender_domain
reject_unknown_recipient_domain
reject_rbl_client dnsbl.ahbl.org
reject_rbl_client cbl.abuseat.org
reject_rbl_client sbl-xbl.spamhaus.org
reject_rbl_client dul.dnsbl.sorbs.net
reject_rbl_client bl.spamcop.net
check_policy_service inet:127.0.0.1:60000
reject_unknown_client
warn_if_reject reject_unknown_hostname
permit
[...]
Mehrere Hinweise aus der Postfix-Mailgruppe brachten mich jedoch auf folgende Konfiguration, die weiter unten noch genauer erläutere:
#
# restrictions
#
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_delay_reject = yes
#
# Recipient Restrictions
#
smtpd_recipient_restrictions =
reject_unlisted_sender
reject_unlisted_recipient
reject_unknown_sender_domain
reject_unknown_recipient_domain
permit_sasl_authenticated
permit_mynetworks
reject_invalid_hostname
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unauth_destination
#policyd-weight
check_policy_service inet:127.0.0.1:60001
#sqlgrey
check_policy_service inet:127.0.0.1:60000
reject_unknown_client
reject_unknown_hostname
permit
Es handelt sich hier natürlich nur um einen Ausschnitt aus der main.cf, diese Parameter sind sehr wichtig, wenn es darum geht, welche Mails von Postfix zur Zustellung angenommen werden.
Konfigurationsparameter im Einzelnen
- smtpd_helo_required = yes
Der Client muss ein HELO/EHLO zum Beginn der Session senden. Ist zwar mittlerweile auch fast von jedem Spammer implementiert, aber könnte vielleicht doch die eine oder andere Spamsession verhindern. Zusätzlich gibt es so mehr Informationen für policyd-weight zur Auswertung. - strict_rfc821_envelopes = yes
Einhaltung von des RFC821 in Bezug auf Mailadressen erzwingen. Das lehnt schlecht generierte Mailadressen ab, aber auch evtl. Mails von fehlerhaften Scripten. - disable_vrfy_command = yes
Schaltet das VRFY-Command aus, mit dem Spammer die Gültigkeit von Mailadressen überprüfen könnte. - smtpd_delay_reject = yes
Schaltet einen Modus ein, in dem die REJECTS verzögert werden, damit auch die Clients von Microsoft es verstehen… (ohne Worte). - reject_unlisted_sender
Lehnt die Mail ab, wenn die Domain der Absenderadresse zum Mailserver gehört, der aber User nicht existiert. Sorgt dafür, dass nur existente Adressen als Absender akzeptiert werden (prüfbar natürlich nur für die eigenen Domains). - reject_unlisted_recipient
Lehnt die Mail ab, wenn die Domain der Empfängeradresse zum Mailserver gehört, der aber User nicht existiert. Sorgt dafür, dass nur existente Adressen als Empfänger akzeptiert werden (prüfbar natürlich nur für die eigenen Domains). - reject_unknown_sender_domain
Lehnt die Mail ab, wenn die Domain der Absenderadresse nicht existiert. - reject_unknown_recipient_domain
Lehnt die Mail ab, wenn die Domain der Empfängeradresse nicht existiert. - permit_sasl_authenticated
Erlaube die Mail, wenn der User sich gegenüber dem Mailserver authentifiziert hat (SASL muss eingerichtet sein). - permit_mynetworks
Erlaube die Mail, wenn der Absender aus $mynetworks kommt. - reject_invalid_hostname
Lehnt die Mail ab, wenn der Hostname (überliefert mit dem HELO-Command) eine falsche Syntax hat. - reject_non_fqdn_sender
Lehnt die Mail ab, wenn die Domain der Absenderadresse nicht ein FQDN (fully qualified domain name) ist. - reject_non_fqdn_recipient
Lehnt die Mail ab, wenn die Domain der Empfängeradresse nicht ein FQDN (fully qualified domain name) ist. - reject_unauth_destination
Lehnt die Mail ab, wenn die Zieladresse nicht unter $inet_interfaces, $mydestination, $virtual_alias_domains, $virtual_mailbox_domains oder $relay_domains gelistet ist. - check_policy_service inet:127.0.0.1:60001
Lässt einen policy-Server (hier policyd-weight) über das Verfahren mit der Mail entscheiden. - check_policy_service inet:127.0.0.1:60000
Lässt einen policy-Server (hier sqlgrey) über das Verfahren mit der Mail entscheiden. - reject_unknown_client
Lehnt die Mail ab, wenn die IP-Adresse keinen PTR im DNS-Eintrag hat. Sorgt für das Ablehnen von manchen Spam-Maschinen, die von dynamischen IPs senden. - reject_unknown_hostname
Lehnt die Mail ab, wenn der Hostname, der im HELO-Command übergeben wurde, keinen DNS-Eintrag hat. - permit
Nimmt die Mail zur Zustellung an.
Die gesamte Liste der Parameter sind in der Dokumentation von Postfix zu finden.
Sollte man einen Parameter erst testen wollen kann man “warn_if_reject <regelname>” schreiben, um beim Zutreffen der Regel keine Ablehnung, sondern nur einen Eintrag im Log zu erzeugen.



Stopp-Seite schließen und weiter - Close and continue


Aktionen: Trackback URL Kommentarfeed
Ein Trackback/Pingback
Pingback von WE ARE ROOT :: be admin or die tryin'&hellip am 22. Januar 2008 um 1:54 Uhr :
[...] weiter oben im Text versprochene neue Version der Konfiguration von Postfix ist in diesem Artikel zu finden, da ich dazu noch kurze Erläuterungen geben will und es hier etwas OT [...]
Ein Kommentar
Volker
24. Juni 2009
( 11:18 Uhr )
Leider führen die Befehle reject_unknown_client und reject_unknown_hostname dazu, dass zahlreiche falsch konfigurierte, aber legitime E-Mail Server keine Mails mehr einliefern dürfen. Unter anderem auch der Xing-Mail-Robot! Ich habe deshalb gegen reject_unknown_reverse_client_hostname getauscht, das weniger restriktiv zu Werke geht. Steht es eigentlich hinter policyd-weight noch an der richtigen Stelle? Auszug aus meiner main.cf: smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination reject_invalid_hostname reject_non_fqdn_sender reject_non_fqdn_recipient reject_unauth_destination check_client_access hash:/etc/postfix/policyd_weight_client_whitelist #policyd-weight check_policy_service inet:127.0.0.1:60001 reject_unknown_reverse_client_hostname permit
Schreibe einen Kommentar