
Mein Postfix sendet kein AUTH PLAIN an den ausgehenden Relay-Server. Vor ein paar Tagen muss es noch funktioniert haben, aber jetzt bekomme ich Bouncemails mit der Meldung „Relay nicht zulässig“.
Das Mailsystem läuft in einer Alpine Linux VM mit Postfix, Fetchmail und Dovecot. Postfix verwendet die Cyrus SASL-Bibliothek, nicht die von Dovecot.
Relevanter Teil von main.cf:
relayhost = [RELAY_HOST]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/mailsrv/etc/postfix/sasl_passwd
smtp_sasl_security_options =
sasl_passwd:
[RELAY_HOST] USER:PASSWORD
Ich habe eine ausgehende Sitzung mit tcpdump aufgezeichnet und es wurde kein AUTH PLAIN gesendet. Ich habe das manuelle Senden von E-Mails mit Telnet unter Verwendung der richtigen AUTH PLAIN-Zeile getestet und es hat funktioniert.
Meine Interpretation ist also, dass Postfix sich nicht irgendwann dafür entscheidet, SASL/AUTH PLAIN zu verwenden.
Was könnte das Problem sein?
Die Berechtigungen sollten in Ordnung sein, Postmap wurde aufgerufen, Postfix neu gestartet und neu geladen, Libsasl ist installiert und Postfix meldet, mit Cyrus erstellt worden zu sein. Ich weiß, es ist ein Klischee, aber das System hat vor ein paar Tagen noch funktioniert. Könnte hier ein abgelaufenes Zertifikat ein Problem sein, das ich in den Protokollen nicht sehe?
Antwort1
Postfix sendet HELO, das die AUTH PLAIN-Zeilen nicht erzeugt
HELO ist der ursprüngliche Handshake-Befehl ohne die Möglichkeit, Erweiterungen auszuhandeln. Bevor der Client SASL verwenden kann, muss er EHLO (extended-hello) senden und prüfen, ob der Serverwirbtdie gewünschten SASL-Mechanismen.
Standardmäßig senden viele SMTP-Clients – einschließlich Postfix – EHLO nur, wenn das Wort „ESMTP" erscheint im Begrüßungsbanner des Servers (z. B. 220 foo.example.com ESMTP Sendmail
). Es wird davon ausgegangen, dass Server, die ESMTP nicht unterstützen, auch SASL nicht unterstützen.
Wenn die Begrüßung des Servers korrekt ist, stellen Sie sicher, dass Sie die Optionen
smtp_never_send_ehlo
oder nichtsmtp_pix_workarounds
versehentlich aktiviert haben.Wenn die Begrüßung des Servers falsch ist, er aber trotzdem EHLO akzeptiert, können Sie die Verwendung von EHLO erzwingen, indem Sie es
smtp_always_send_ehlo = yes
in Ihrer Postfix-Konfiguration aktivieren.
Wenn Sie den Server verwalten, versuchen Sie, seine Begrüßung zu korrigieren, da dies wahrscheinlich auch die Zustellung eingehender Nachrichten aus anderen Domänen beeinflusst – ohne ESMTP gibt es beispielsweise auch kein opportunistisches STARTTLS.
Wenn auf dem Server beispielsweise auch Postfix ausgeführt wird, muss in der smtpd_banner
Option „ESMTP“ enthalten sein:
smtpd_banner = $myhostname ESMTP $mail_name
(Es könnte auch sein, dass die Verbindung über ein Anti-Spam-Gateway läuft, das mit dieser Methode versucht, die Verwendung von STARTTLS zu verbieten – anstatt es einfach aus der EHLO-Antwort zu entfernen, versucht es, EHLO selbst zu verbieten.)
Beachten Sie, dass Port 25 normalerweise nur für den Nachrichtenempfang vorgesehen ist (eingehende Zustellung von anderen Domänen) – 587 oder 465 sind die Ports für die Nachrichtenübermittlung (ausgehend von Clients).
Wenn Ihr Postfix also als lokaler Client fungiert (weil es über einen Relayhost verfügt und eine Authentifizierung verwenden möchte), sollte es stattdessen tatsächlich eine Verbindung zum Relayhost über Port 587 herstellen.
Beachten Sie, dass für die Verbindung mit Port 465 erforderlich ist smtp_tls_wrappermode = yes
, da dieser von Anfang an TLS verwendet. (Das ist tatsächlich ein Vorteil, da es Firewalls daran hindert, den Handshake zu manipulieren.)
Bei Verwendung von Port 587 ist TLS optional (wird nur mit dem Befehl „STARTTLS“ aktiviert), aber Sie können auchsollte wirklichErzwingen Sie die Verwendung von TLS, wenn der Server dies unterstützt. Legen Sie hierzu fest smtp_tls_security_level = verify
.