main.cf

Quelle1)

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

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.

Einhaltung von des RFC821 in Bezug auf Mailadressen erzwingen. Das lehnt schlecht generierte Mailadressen ab, aber auch evtl. Mails von fehlerhaften Scripten.

Schaltet das VRFY-Command aus, mit dem Spammer die Gültigkeit von Mailadressen überprüfen könnte.

Schaltet einen Modus ein, in dem die REJECTS verzögert werden, damit auch die Clients von Microsoft es verstehen… (ohne Worte).

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).

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).

Lehnt die Mail ab, wenn die Domain der Absenderadresse nicht existiert.

Lehnt die Mail ab, wenn die Domain der Empfängeradresse nicht existiert.

Erlaube die Mail, wenn der User sich gegenüber dem Mailserver authentifiziert hat (SASL muss eingerichtet sein).

Erlaube die Mail, wenn der Absender aus $mynetworks kommt.

Lehnt die Mail ab, wenn der Hostname (überliefert mit dem HELO-Command) eine falsche Syntax hat.

Lehnt die Mail ab, wenn die Domain der Absenderadresse nicht ein FQDN (fully qualified domain name) ist.

Lehnt die Mail ab, wenn die Domain der Empfängeradresse nicht ein FQDN (fully qualified domain name) ist.

Lehnt die Mail ab, wenn die Zieladresse nicht unter $inet_interfaces, $mydestination, $virtual_alias_domains, $virtual_mailbox_domains oder $relay_domains gelistet ist.

Lässt einen policy-Server (hier policyd-weight) über das Verfahren mit der Mail entscheiden.

Lässt einen policy-Server (hier sqlgrey) über das Verfahren mit der Mail entscheiden.

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.

Lehnt die Mail ab, wenn der Hostname, der im HELO-Command übergeben wurde, keinen DNS-Eintrag hat.

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.