Wie erzwinge ich, dass die Absenderadresse in Postfix "[email protected]" ist?

15

Ich habe einen Postfix-Server mit SMTP AUTH eingerichtet (STARTTLS an Port 587). Alle meine Benutzer befinden sich in der Domain "example.org". Ich möchte erzwingen, dass die Absenderadresse "[email protected]" ist.

Ich habe gelernt, dass dies mit den Optionen main.cf erreicht werden kann

smtpd_sender_restrictions = reject_sender_login_mismatch, ...
smtpd_sender_login_maps = hash:/etc/postfix/smtpd_sender_login_maps

mit einer login_maps Datei wie:

[email protected] a
[email protected] b
[email protected] c
...

(Siehe auch Spoofing von Absenderadressen mit SMPT AUTH blockieren ), aber dies würde bedeuten, dass ich die Datei login_maps jedes Mal bearbeiten muss, wenn ich einen neuen Benutzer habe. Ich brauche kein so flexibles Mapping: Es sollte immer "[email protected]" sein. Gibt es eine einfachere Möglichkeit?

Chris Lercher
quelle

Antworten:

14

Überprüfen Sie zunächst, ob Ihre Postfix-Installation pcre unterstützt, indem Sie den Befehl eingeben postconf -mund nach einer Zeile mit pcredarin suchen . Sobald Sie überprüft haben, dass Sie pcre-Unterstützung haben, können Sie wie folgt vorgehen:

/etc/postfix/login_maps.pcre:

/^(.*)@example\.org$/   ${1}

In main.cf:

smtpd_sender_login_maps = pcre:/etc/postfix/login_maps.pcre

Dies sollte gut funktionieren.

mailq
quelle
Dies ist perfekt. Genau das, wonach ich gesucht habe!
Chris Lercher
3
Für Ubuntu-Benutzer können Sie postfix pcre mit bekommen sudo apt-get install postfix-pcre. Vielleicht war das für die meisten offensichtlich.
NeilMonday
Keine Möglichkeit, die Domäne in der Regex- oder Referenzvariablen auszulassen $myhostname?. Hier können Sie sehen, dass Postfix in der Lage ist, die Nachschlagetabelle nach dem Benutzerteil der E-Mail zu durchsuchen ...
Jaime Hablutzel
Ich glaube, Sie wollen dem "Backslash" entkommen. Zeichen im Domain-Namen, so dass es als wörtliche Übereinstimmung interpretiert wird: /^(.*)@example\.org$/
Arnon
Andernfalls entspricht dies "test @ exampleXorg" sowie "[email protected]", was möglicherweise nicht genau dem beabsichtigten Verhalten entspricht.
Arnon
6

Der in der anderen Antwort erwähnte reguläre Ausdruck stimmt mit dem Benutzerteil der E-Mail-Adresse überein ( Eingeloggter Benutzer @ example.org). Hier finden Sie einige zusätzliche Informationen.

Verwenden Sie den folgenden regulären Ausdruck (zum Beispiel in /etc/postfix/login_map), um die vollständige E-Mail-Adresse als Benutzernamen zu verwenden :

/^(.*)$/   ${1}

Dies bedeutet, dass Ihr Benutzername immer Ihre vollständige E-Mail-Adresse ist ( [email protected] ) - von dieser Adresse darf kein anderer vorhandener Benutzername gesendet werden - und Sie müssen nicht jedes Mal eine zusätzliche Postfix-Konfigurationsdatei aktualisieren Einen Benutzer hinzufügen.

Dies kann auf einem Server verwendet werden, auf dem mehrere Domänen konfiguriert sind. Der Benutzer [email protected] darf nur von dieser Adresse senden, nicht jedoch von [email protected] (anderer Benutzer und E-Mail- Adresse , andere Person). Der Benutzername john.doe wäre in diesem Fall nicht eindeutig.

Abhängig von Ihrer Konfiguration befindet sich die Einstellung smtpd_sender_login_maps, die auf diese Datei verweisen muss, möglicherweise in der Datei master.cf (anstelle der Datei main.cf). Die offizielle Dovecot-Dokumentation enthält das folgende Beispiel (wenn Sie SASL / Submission verwenden):

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
  -o smtpd_sender_restrictions=reject_sender_login_mismatch
  -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

In diesem Beispiel sollte die Einstellung so angepasst werden, dass sie auf die richtige Datei zeigt und Regex oder (besser) pcre als Typ verwendet. Insbesondere wenn eine Datei mit dem Namen "virtual" bereits für einen anderen Zweck verwendet wird (zum Beispiel für virtual_alias_maps, wie in einem offiziellen Postfix-Beispiel gezeigt ), sollte eine andere Datei für das Login-Mapping verwendet werden.

Von:

smtpd_sender_login_maps=hash:/etc/postfix/virtual

Zu:

smtpd_sender_login_maps=pcre:/etc/postfix/login_map
c0xc
quelle
0

Können Sie eine Kombination von regulären Ausdrücken für den Header verwenden, wie hier gezeigt: http://www.akadia.com/services/postfix_uce.html ? Dann können Sie mit regulären Ausdrücken wie [*@example.org] kombinieren, um sicherzustellen, dass nur Absender von example.org vorhanden sind.

sonstabo
quelle
Nehmen wir an, ich kann "regexp:" hier verwenden (?). Wie kann ich den regulären Ausdruck so festlegen, dass Benutzer "a" als "[email protected]" senden kann, aber nicht als "[email protected]"?
Chris Lercher
@sonstabo es wäre schön, wenn Sie das Konfigurationsbeispiel
einschließen