Postfix: SMTP, Port 587 statt 465 verwenden

4080
Wairowe

Ich habe einen E-Mail-Server in AWS EC2 mit den Anweisungen von Flurdy eingerichtet: http://flurdy.com/docs/postfix/ Meistens ist es gut gegangen.

Mein Problem ist, dass ich es vorziehen würde, den SMTP-Port 587 mit TLS anstelle von 465 mit SSL zu verwenden. Ich glaube, dass dies eine relevante Anforderung ist, da Port 465 nicht zukunftssicher ist.

Die Anweisungen auf der Flurdy-Site sind so konzipiert, dass beides möglich ist, aber ich kann 587 nicht zur Arbeit bringen! 465 mit SSL wirkt ein Zauber.

Ich sollte auch erwähnen, dass dieser Build sasl mit MySQL verwendet, und ich denke, aus diesem Grund habe ich keine große Hilfe gefunden, wenn ich die Fehler bei Google finde. Ich glaube, der Fehler liegt irgendwo in der SASL / PAM-Arena, aber ich hatte kein Glück.

Hier sind einige der Log-Ausgaben:

E-MAIL-PROTOKOLL

postfix/smtpd[11328]: connect from MY.ISP.PROVIDER[MY.IP.0.0] postfix/smtpd[11328]: Anonymous TLS connection established from MY.ISP.PROVIDER[MY.IP.0.0]: TLSv1.2 with cipher AES128-SHA256 (128/128 bits) postfix/smtpd[11328]: warning: SASL authentication failure: client response doesn't match what we generated (tried bogus) postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL DIGEST-MD5 authentication failed: authentication failure postfix/smtpd[11328]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory postfix/smtpd[11328]: warning: MY.ISP.PROVIDER[MY.IP.0.0]: SASL LOGIN authentication failed: generic failure postfix/smtpd[11328]: lost connection after AUTH from MY.ISP.PROVIDER[MY.IP.0.0] postfix/smtpd[11328]: disconnect from MY.ISP.PROVIDER[MY.IP.0.0]* 

Meine master.cf

submission inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject -o smtpd_sasl_security_options=noanonymous,noplaintext -o smtpd_sasl_tls_security_options=noanonymous  smtps inet n - - - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_tls_auth_only=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_sasl_security_options=noanonymous,noplaintext -o smtpd_sasl_tls_security_options=noanonymous 

Es gibt auch andere Konfessionen wie AMAVIS, aber ich vermute, das ist alles in Ordnung.

Im SQL-Protokoll werden alle Verbindungen und Abfragen korrekt angezeigt.

Ich habe TELNET zum Testen verwendet und die Verbindung wird einfach geschlossen, wenn ich versuche, mit Port 587 eine Authentifizierung durchzuführen. Wenn ich Port 25 auf meinem Server öffne, kann ich ein erfolgreiches AUTH LOGIN durchführen.

Hier ist der Unterschied in der EHLO-Antwort mit 25 (wenn geöffnet) und 587. Ich habe bemerkt, dass 587 AUTH nicht enthält. Ist das das Problem?

$ telnet my.mailserver.com 587 Trying MY.IP.0.0... Connected to my.mailserver.com. Escape character is '^]'. 220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix EHLO my.mailserver.com 250-MY-EC2-SERVER-NAME.localdomain 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN  $ telnet my.mailserver.com 25 Trying MY.IP.0.0... Connected to my.mailserver.com. Escape character is '^]'. 220 MY-EC2-SERVER-NAME.localdomain ESMTP Postfix EHLO my.mailserver.com 250-MY-EC2-SERVER-NAME.localdomain 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN CRAM-MD5 DIGEST-MD5 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 

Ich habe die Dienste postfix und saslauthd mehrmals neu gestartet. Ich habe auch die Passwörter und Benutzernamen in der DB überprüft. Ich habe die Anweisungen durchgespielt und auf Fehlkonfiguration und Rechtschreibfehler überprüft, obwohl dies wahrscheinlich das ist, was am Ende der Fall sein wird :-)

Der Server ist UBUNTU 13.10

Bitte lassen Sie mich wissen, ob ich weitere Informationen zum Debuggen zur Verfügung stellen kann.

Alle Gedanken sind willkommen!

4
Diese Art von Frage würde ServerVault besser bekannt machen. Aber wenn wir schon dabei sind, denke ich, dass AUTH verfügbar ist, nachdem sich TLS etabliert hat. Vielleicht möchte Google, wie STARTTLS funktioniert. Arya S. vor 10 Jahren 0

1 Antwort auf die Frage

1
Claudio

Ich folgte auch Flurdys Tutorial und hatte ein ähnliches Problem: Ich konnte Post nur über Port 25 (smtpd) senden, aber nicht über 587 (Vorlage). Ich habe herausgefunden, dass das Problem genau so ist, dass Port 25 gemäß seinen Anweisungen so konfiguriert wurde, dass er in chroot ausgeführt wird, 587 jedoch nicht - es scheint ein Fehler im Tutorial zu sein. Schauen Sie sich diesen Teil von flurdys Anweisungen an:

Standardmäßig ist nur der normale SMTP-Dienst aktiviert, was in Ordnung ist. Ich ziehe es jedoch vor, die Übermittlung zu aktivieren (Port 587), damit die Clients sie verwenden können und ich sie nur auf TLS beschränken kann. Außerdem wurde der smtps-Dienst (Port 465) aktiviert, um mit einigen älteren Clients kompatibel zu sein (Outlook Express usw.).

Direkt unter diesem Text können Sie diese Zeile finden, die besagt, dass der Daemon für den Übergabeport keine chroot verwendet:

submission inet n - n - - smtpd 

Ich weiß das, weil meine Originaldatei /etc/postfix/master.cfKommentare mit dieser Legende hatte:

# ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== 

Direkt unterhalb der Optionsliste für den Übergabeport befindet sich die folgende Zeile, in der smtps (Port 465) konfiguriert wird:

smtps inet n - - - - smtpd 

Daraus kann man sehen, dass es die Standardeinstellung verwendet (das -Zeichen bedeutet, dass es die Standardeinstellung verwendet, nämlich chroot).

Ok, wenn Sie sich den Abschnitt zur SASL-Authentifizierung ansehen, wo es heißt:

Ändern Sie, wie SASLAUTHD ausgeführt wird:

Sie können sehen, dass die OPTIONSVariable den folgenden Pfad enthält:

# Switch this to be under postfix's spool # And add -r so that the realm(domain) is part of the username OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd" 

Mit Hilfe meiner ursprünglich kommentierten /etc/default/saslauthdDatei habe ich wieder folgende klare Erklärung erhalten:

# Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # WARNING: DO NOT SPECIFY THE -d OPTION. # The -d option will cause saslauthd to run in the foreground instead of as # a daemon. This will PREVENT YOUR SYSTEM FROM BOOTING PROPERLY. If you wish # to run saslauthd in debug mode, please run it by hand to be safe. # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page and the output of 'saslauthd -h' for general # information about these options. # # Example for chroot Postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" # Example for non-chroot Postfix users: "-c -m /var/run/saslauthd" # # To know if your Postfix is running chroot, check /etc/postfix/master.cf. # If it has the line "smtp inet n - y - - smtpd" or "smtp inet n - - - - smtpd" # then your Postfix is running in a chroot. # If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT # running in a chroot. OPTIONS="-r -c -m /var/spool/postfix/var/run/saslauthd" 

Da meine OPTIONSVariable den chroot-Fall eindeutig spezifizierte, habe ich gerade meine Einreichungskonfiguration auf geändert, /etc/postfix/master.cfum auch chroot zu verwenden. Nach dem Neustart des Servers - nur um sicherzustellen, dass alle Dienste ordnungsgemäß neu gestartet wurden - funktionierte es wie ein Zauber, jetzt kann ich E-Mails entweder über Port 25 oder 587 senden.

Hoffe es hilft dir auch aus! Ich habe auch einige Zeit verloren, um das zu sehen ...