
Ich möchte ein Postfix haben, das Mail-Relay an einen Relayhost ermöglicht, wenn
a) die Absender-Domain ist zulässig
und eines von:
b) der Absender hat sich authentifiziert c) der Client hat einen IP-Whitelist-Eintrag
mein aktueller Ansatz ist bisher:
relayhost = [RELAYHOST]:25
smtpd_reject_unlisted_sender = yes
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders
smtpd_recipient_restrictions =
check_client_access cidr:/etc/postfix/ip_whitelist,
permit_sasl_authenticated,
reject_unauth_destination
mit restricted_senders enthalten
example.com OK
und ip_whitelist mit
192.168.1.3 OK
Während das Senden von E-Mails von authentifizierten Clients oder von Clients auf der IP-Whitelist funktioniert, funktioniert die Absenderdomänenbeschränkung nicht. Sobald Authentifizierung oder Clientzugriff übereinstimmen, wird die Absenderbeschränkung anscheinend nicht mehr überprüft.
Antwort1
Warum funktioniert das nicht?
Die Standardeinstellung ist, alles zuzulassen.
Geben Sie eine Liste von Einschränkungen an, getrennt durch Kommas und/oder Leerzeichen. Setzen Sie lange Zeilen fort, indem Sie die nächste Zeile mit einem Leerzeichen beginnen. Einschränkungen werden in der angegebenen Reihenfolge angewendet; die erste Einschränkung, die zutrifft, hat Vorrang.
Und
check_sender_access type:table
Suchen Sie nach den angegebenenZugang(5)Datenbank für die
MAIL FROM
Adresse, Domäne, übergeordnete Domänen oderlocalpart@
und führen Sie die entsprechende Aktion aus.
Daher lässt Ihre Konfiguration zuerst example.com
von /etc/postfix/restricted_senders
und dann alles andere zu. Diesmtpd_reject_unlisted_sender
ändert daran nichts, denn:
Eine Adresse gilt als "unbekannt", wenn 1) sie nicht mit einervirtuell(5)Alias oderkanonisch(5)Mapping und 2) die Adresse ist für ihre Adressklasse nicht gültig. Eine Definition der klassenbasierten Adressvalidierung finden Sie unterADRESSE_KLASSE_README.
Die Domäne ist beispielsweise example.org
nicht inlokal,virtueller Alias,virtuelles PostfachnochRelaisDomänenklasse, also fällt es in dieStandarddomänenklasse. Diese Klasse hat weder Ziel- noch gültige Empfängertabellen. Offensichtlich ist jede Adresse, die nicht zu den anderen Domänenklassen gehört, für diese Adressklasse gültig. Das ist logisch, da das lokale System nicht weiß, welche Adressen auf dem Remote-System verfügbar sind.
smtpd_sender_restrictions
reichen hierfür aus
Vergessen Sie diesmtpd_reject_unlisted_sender
da dies allein durchführbar ist smtpd_sender_restrictions
.
Die einfachste Konfiguration wäre:
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders, reject
Eine Alternative könnte die Verwendung von
regex:
Tabellen sein:smtpd_sender_restrictions = check_sender_access regex:/etc/postfix/restricted_senders
Dies ermöglicht die VerwendungReguläre Ausdrücke:
/example\.com$/ OK // 550 You are not allowed to use this sender address.
Sie können die Suchergebnisse testen mit
postmap -q
:$ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders 550 You are not allowed to use this sender address. $ /usr/sbin/postmap -q [email protected] regexp:/etc/postfix/restricted_senders OK