Warum funktioniert das nicht?

Warum funktioniert das nicht?

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?

Dersmtpd_sender_restrictions:

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 FROMAdresse, Domäne, übergeordnete Domänen oder localpart@und führen Sie die entsprechende Aktion aus.

Daher lässt Ihre Konfiguration zuerst example.comvon /etc/postfix/restricted_sendersund 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.orgnicht 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_restrictionsreichen hierfür aus

Vergessen Sie diesmtpd_reject_unlisted_senderda 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 mitpostmap -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
    

verwandte Informationen