Postfix: smtpd_relay_restrictions
Ich habe mir diese Woche mal wieder Zeit genommen, die Konfiguration meiner privaten Mailserver zu entstauben. Nicht, dass die nicht mehr funktioniert hätte, aber sie stammt zum einen aus einer Zeit, als Postfix noch keine offiziellen Kompatibilitäts-Mechanismen hatte, und zum aus einer Zeit, in der ich noch deutlich motivierter war, alles bis in’s kleinste Detail zu konfigurieren. Davon bin ich zwar mittlerweile geheilt, aber die alte Konfiguration hatte alleine 28 Einträge für smtpd_recipient_restrictions. Also habe ich da die Axt angesetzt :-)
Kurz, es geht generell um Relaying- und
Mail-Annahme. Postfix kennt
verschiedene Restriktionen, die man setzen kann, mit der man eine Mail dann z.B.
anhand formaler Kriterien, DNS-Lookups etc. abweisen kann, wenn man sie für Spam
hält, oder falls es sich um den Versuch handelt, den eigenen Mailserver
unberechtigterweise als Relay, also zum Versand, zu benutzen. Diese
Restriktionen sind meistens nach dem entsprechenden Schritt aus dem
SMTP-Protokoll benannt. Es gibt z.B.
Restriktionen, die die IP des Clients auswerten (smtpd_client_restrictions
),
für die Begrüßung der Mailserver untereinander (smtpd_helo_restrictions
) oder
eben auch für die Liste der Empfänger - eben smtpd_recipient_restrictions
.
Nun ist es so, dass Postfix per Default alle diese Restriktionen sowieso erst
auswertet, wenn die Empfänger bekannt sind (vgl.
smtpd_delay_reject).
Weil es also de-facto keinen Unterschied gemacht hat, und weil man sich leichter
damit getan hat, Ausnahme einzubauen, hat so ziemlich jeder auf diesem Planeten
alle seine Anti-Spam- und Anti-Relay-Restriktionen unter
smtpd_recipient_restrictions
gepackt - ich war einer davon.
Mit dem Release 2.10 hat Postfix jedoch den neuen Parameter
smtpd_relay_restrictions
bekommen, um genau diese beiden Funktionen zu trennen. Ich habe die Gelegenheit,
diesen neuen Parameter in meine Konfiguration zu packen, gleich genutzt, um
Kahlschlag zu üben: Von den mehr als 28 Restriktionen haben im täglichen Betrieb
ungefähr drei oder vier angeschlagen. Und das über Jahre hinweg. Und da ich kein
Freund von umfangreichen Konfigurationen bin sehen die entsprechenden Stellen in
der main.cf
jetzt so aus:
|
|
Bei hard_blacklist.cidr
handelt es sich um eine Liste von Netzen, die ich
manuell Pflege, und aus denen noch NIE was ordentliches Kam. Die Map in
relay_clients.cidr
dagegen wird von Puppet gerendert und enthält alle meine
Maschinen, die statische IPs haben.