SMTP über PHP geht nicht: 503 5.5.1 Error: authentication not enabled

tobi4

Member
Hallo,

ich wollte mir den PHPmailer einrichten, leider schlägt das Senden jedes Mal fehl. Konfiguration ist soweit gleich wie auf einem anderen Server, auf dem es klappt.

Verwendet wird hierbei Plesk 12, CentOs 6.

Die Ausgabe des PHPmailer ist diese:

SERVER -> CLIENT: 220 nsxxx.ip-xxx.net ESMTP Postfix
CLIENT -> SERVER: EHLO nsxxx.ip-xxx.net
SERVER -> CLIENT: 250-nsxxx.ip-xxx.net250-PIPELINING250-SIZE 10240000250-ETRN250-STARTTLS250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN
CLIENT -> SERVER: AUTH LOGIN
SERVER -> CLIENT: 503 5.5.1 Error: authentication not enabled
SMTP ERROR: AUTH command failed: 503 5.5.1 Error: authentication not enabled
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 Bye
SMTP connect() failed.
Mailer Error: SMTP connect() failed.

In der /etc/postfix/main.cf ist smtpd_sasl_auth_enable auf yes.

Hat jemand eine Idee?

Danke.
 
Entscheidend ist, wie du dein SASL konfiguriert hast. Anscheinend ist dort bei dir die Methode LOGIN nicht aktiviert
 
Hmm, also eigentlich habe ich gar nichts konfiguriert, sondern das macht eigentlich Plesk. Und dort habe ich im Panel in den Mailservereinstellungen nichts außer der max. Nachrichtengröße verändert.

Auch habe ich den Server wegen eines anderen Problemes kürzlich komplett neu installiert über das Interface des Providers, dieses Problem bestand jedoch auch schon vorher.

Kann ich mal eine entsprechende Konfigurationsdatei hier posten oder kannst Du mir sagen, wie die entsprechende heißt wo ich nachsehen kann ob Login aktiviert ist oder nicht.

Ich habe bislang nur die /etc/postfix/main.cf gefunden, aber darin wird das Wort "login" nicht gefunden.

Außerdem klappt das Senden über Thunderbird problemlos.

Danke & Gruß
 
Wenn ich mich Recht erinnere gibt es unter centOS irgendwo ein Verzeichnis sasl2 mit einer smtpd.conf.

Dort sollte dann eine Zeile mechlist: .... sein.
Was steht da drin?
 
Es gibt ein Verzeichnis "sasl2" in /etc/, aber das ist leer.

[root@nsxxx sasl2]# ls -la
insgesamt 8
drwxr-xr-x 2 root root 4096 20. Jul 10:17 .
drwxr-xr-x 85 root root 4096 31. Jul 16:09 ..
[root@nsxxx sasl2]#

Komisch, warum steht da insgesamt 8 ?!

Danke & Gruß
 
[...]Ich habe bislang nur die /etc/postfix/main.cf gefunden, aber darin wird das Wort "login" nicht gefunden.[...]
Das wirst Du da auch nicht finden sondern wie bereits schon erwähnt in der SASL-Konfiguration zum Bleistift (Debian/Ubuntu):

/etc/postfix/sasl/smtpd.conf

Code:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
saslauthd_path: /var/run/saslauthd/mux

und /etc/default/saslauthd

Code:
START=yes
MECHANISMS="shadow"

Das wären erstmal die Basics. Da in Deinem Falle noch Plesk mit ins Handwerk pfuscht, sehen die Pfade und Einträge sicherlich noch etwas anders aus.

P.S.: Was mir in Deinem Falle noch auffällt ist das STARTTLS250. Ich nehme an, Dein Server ist so eingestellt, dass er verschlüsselte Verbindungen bevorzugt. Ich meine mich zu erinnern, dass der Aufbau einer Klartextverbindung in so einem Falle immer zu einem Abbruch führt. Normale Mailclients handeln das im Hintergrund irgendwie automatisch, bei Deinem PHP-Script ist das wohl nicht so einfach.
 
Last edited by a moderator:
Habe nun nach einer smtpd.conf gesucht und 2 Ergebnisse erhalten:

/usr/lib64/sasl/smtpd.conf
/usr/lib64/sasl2/smtpd.conf

Inhalt der ersten:
Code:
pwcheck_method: saslauthd
mech_list: plain login
saslauthd_version: 2

Inhalt der zweiten:
Code:
pwcheck_method: auxprop saslauthd
auxprop_plugin: plesk
saslauthd_path: /var/spool/postfix/private/plesk_saslauthd
mech_list: DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
sql_engine: intentionally disabled
log_level: 4

Nun bin ich mal dem Pfad /var/spool/postfix/private/ gefolgt. Die Dateien in dem Verzeichnis private haben alle ein = voraus und können scheinbar nicht geöffnet werden...

Was kann ich tun?
 
Danke für den Plesk Artikel.

Habe mal geschaut, also der Pfad in der /etc/postfix/master.cf zeigt schonmal auf die existierende passwd.db.

Der Inhalt der '/usr/lib64/sasl2/smtpd.conf' stimmt auch überein. Ich finde bei mir allerdings nicht die Zeile "auto_transition: yes". Soll ich diese mal einfügen?

Wenn ich das eingebe was bei "Symptoms" da steht, kommt das:

Code:
[root@nsxxx plesk]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 nsxxx.ip-142-xxx.net ESMTP Postfix
auth login
503 5.5.1 Error: authentication not enabled

Es kommt ja gar nicht erst zum Anmeldeversuch.

Und im Gegensatz zu der Logmeldung "SASL login authentication failed: authentication failure" in dem Plesk Artikel erhalte ich gar keine, weder in /usr/local/psa/var/log/maillog, da steht nämlich nur folgendes drin wenn ich mein PHP-Mailscript starte:
Aug 1 11:30:22 nsxxx postfix/smtpd[8688]: connect from nsxxx.ip-142-xxx.net[xxx:d0d::1]
Aug 1 11:30:22 nsxxx postfix/smtpd[8688]: disconnect from nsxxx.ip-142-xxx.net[xxx:d0d::1]

noch im /var/log/maillog, da steht das gleiche.

Danke & Gruß
 
Last edited by a moderator:
Update:

Ich habe es gerade noch einmal im Thunderbird getestet, und da funktioniert es tadellos. Mail geht raus und kommt an.

Ich verwende dort folgende Einstellungen:
SMTP-Server
Server: nsxxx.ip-142-xxx.net
Port: 25
Verbindungssicherheit: STARTTLS
Authentifizierungsmethode: Verschlüsseltes Passwort
Benutzername: tobi@nsxxx.ip-142-xxx.net
 
Keinerlei Einträge wie plesk_saslauthd[....]: ?

Warum bei CentOS da zwei Konfigurationsdateien sind? Alte Updatereste?
Bennene die /usr/lib64/sasl/smtpd.conf mal in /usr/lib64/sasl/smtpd.conf_bak um.
Starte Postfix neu mit Postfix reload
Wenns dann noch nicht geht, die /usr/lib64/sasl/smtpd.conf_bak wieder zurück in /usr/lib64/sasl/smtpd.conf
 
Wo meinst Du denn "Einträge wie plesk_saslauthd[....]:" ? In den maillogs? Nein.

Habe die genannte Datei mal umbenannt, postfix reloaded und auch restarted, aber keine Änderung.

Aber kann mir mal einer erklären, warum das über Thunderbird einwandfrei klappt und über das PHPmailer-Script nicht?

Das würde ja heißen, dass irgendwas mit dem Script nicht stimmt. Ich habe dort aber die gleichen Einstellungen drin. Und er tut ja auch was, aber beim Anmeldeversuch stoppt es halt. Wie kann denn das sein, geht das PHP-Script da über einen anderen Weg als Thunderbird rein :confused:

Danke & Gruß
 
Wie kann denn das sein, geht das PHP-Script da über einen anderen Weg als Thunderbird rein :confused:
Die Authentifierzierungsmethoden und Ports/SSL o. ä. könnten da bei Mailclient und PHPMailer unterschiedlich sein.
Das kann nur ein komplettes Server-Maillog klären, wenn du die Einlieferung bei Thunderbird und PHPmailer vergleichst.
 
[...]Aber kann mir mal einer erklären, warum das über Thunderbird einwandfrei klappt und über das PHPmailer-Script nicht?[...]
Hast Du Dir schon meinen einen Nachtrag (unter P.S.) angeschaut - Stichwort: STARTTLS.

Kurzfassung: Erst muss mittels STARTTLS die Verschlüsselung ausgehandelt werden, dann erst kannst Du Dich authen. Versuche in Klartext zu authen werden umgehend abgebrochen - genau das, was bei Dir passiert.

Warum geht's über Thunderbird - weil Du das da richtig eingestellt hast und Thunderbird die Aufforderung zur Verschlüsselung erkennt.
 
Das kann nur ein komplettes Server-Maillog klären, wenn du die Einlieferung bei Thunderbird und PHPmailer vergleichst.

Ok, dann bleibt mir wohl nichts anderes übrig als das zu machen. Und wo finde ich entsprechendes Logfile?

Also wenn ich über Thunderbird eine Mail verschicke, steht folgendes im /var/log/maillog:

Aug 1 12:11:26 nsxxx courier-pop3d: Connection, ip=[::ffff:xx.xx.98.243]
Aug 1 12:11:27 nsxxx courier-pop3d: LOGIN, user=tobi@nsxxx.ip-142-xxx.net, ip=[::ffff:xx.xx.98.243], port=[26734]
Aug 1 12:11:27 nsxxx courier-pop3d: LOGOUT, user=tobi@nsxxx.ip-142-xxx.net, ip=[::ffff:xx.xx.98.243], port=[26734], top=0, retr=0, rcvd=12, sent=3
9, time=0, stls=1
Aug 1 12:12:23 nsxxx postfix/smtpd[11912]: connect from dslb-xxx.xxx.xxx.pools.vodafone-ip.de[xx.xx.98.243]
Aug 1 12:12:25 nsxxx postfix/smtpd[11912]: 0D11D2940058: client=dslb-xxx.xxx.xxx.pools.vodafone-ip.de[xx.xx.98.243], sasl_method=CRAM-MD5, s
asl_username=tobi@nsxxx.ip-142-xxx.net
Aug 1 12:12:25 nsxxx postfix/cleanup[11916]: 0D11D2940058: message-id=<53DB67F9.1070408@nsxxx.ip-142-xxx.net>
Aug 1 12:12:25 nsxxx /usr/lib64/plesk-9.0/psa-pc-remote[15071]: handlers_stderr: SKIP
Aug 1 12:12:25 nsxxx /usr/lib64/plesk-9.0/psa-pc-remote[15071]: SKIP during call 'check-quota' handler
Aug 1 12:12:25 nsxxx postfix/qmgr[10438]: 0D11D2940058: from=<tobi@nsxxx.ip-142-xxx.net>, size=1196, nrcpt=1 (queue active)
Aug 1 12:12:25 nsxxx postfix/smtpd[11912]: disconnect from dslb-xxx.xxx.xxx.pools.vodafone-ip.de[xx.xx.98.243]
Aug 1 12:12:26 nsxxx postfix/smtp[11919]: 0D11D2940058: to=<xxx@xxx.com>, relay=mail.xxx.com[213.165.xx.xx]:25, delay=1.6, delays=0.46/0.01/0.89/0.27,
dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C3E112BEFE642)
Aug 1 12:12:26 nsxxx postfix/qmgr[10438]: 0D11D2940058: removed

Im /usr/local/psa/var/log/maillog steht das selbe.

Danke & Gruß
 
Hast Du Dir schon meinen einen Nachtrag (unter P.S.) angeschaut - Stichwort: STARTTLS.

Kurzfassung: Erst muss mittels STARTTLS die Verschlüsselung ausgehandelt werden, dann erst kannst Du Dich authen. Versuche in Klartext zu authen werden umgehend abgebrochen - genau das, was bei Dir passiert.

Warum geht's über Thunderbird - weil Du das da richtig eingestellt hast und Thunderbird die Aufforderung zur Verschlüsselung erkennt.

Danke für die Information. Ich habe im PHP-Script $mail->SMTPSecure = 'starttls'; eingetragen, dies ändert aber nichts an der Fehlermeldung.

Ich habe dafür gerade etwas ganz... Fatales entdeckt:
http://stackoverflow.com/a/12410579

Ich habe also mein $mail->isSMTP(); entfernt, und schwups ist die Ausgabe kein Fehler sondern "Message Sent OK". Und tatsächlich, die Mail ist angekommen.

Echt nicht zu fassen... Wer soll sowas wissen. In den Beispielen auf ihrer Seite steht das $mail->isSMTP(); doch auch drin...

Danke für Eure Unterstützung.
 
D.h. normalerweise müsste es mit dieser Angabe funktionieren, oder? :eek:

Meinem Programmierer habe ich auch den Auftrag gegeben, den Fehler zu finden, und er schickte mir ich glaube exakt diese Datei und sagte, bei ihm würde es so (also auch mit diesem isSMTP) funktionieren.

Was heißt das nun für mich? Doch irgendwas faul an meiner Geschichte hier?

An dieser Stelle noch eine Frage, was mich schon immer interessiert hat und ich bisher noch keine Antwort für gefunden habe. Im Plesk kann ich in den MTA-Einstellungen "Nachrichtenübermittlung" aktivieren. Aber was ist das? Kann mit der Bezeichnung nichts anfangen. Die Plesk Hilfe sagt:

Plesk Hilfe said:
To protect your server against unauthorized mail relaying or injection of unsolicited bulk mail, select the Enable message submission checkbox to allow your customers to send email messages through the port 587.

Also notify your customers that they need to specify the port 587 for outgoing SMTP connections in their email programs' settings, and be sure to allow connections to this port in your firewall settings.

D.h. wenn ich es nicht aktiviert habe, und es ist standardm. nicht aktiviert, habe ich ein Sicherheitsrisiko in Bezug auf missbräuchliches Versenden von Mails über meinen Server? Was genau ist denn da für Spammer/Angreifer bei nicht-aktivierter Funktion geöffnet?!

Sollte ich es aktivieren?

Danke.
 
Den Sinn dieses Port-Splittings zumindest im Hinblick auf Postfix habe ich noch nie so richtig verstanden. Maybe kann uns ja jemand dbzgl. erleuchten.
 
Back
Top