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

@tobi4
Ob du nun Nachrichtenübermittlung aktivierst oder nicht, sicherer oder weniger sicher ist das nicht.
Auch über Port 25 kannst du von Außen nur Mails an den eigenen Server bei existenten Postfächer senden, nicht woanders hin an andere Mailserver.

Spammer laden ihren Müll sowieso an Port 25 ab.

Was den PHPMailer bei dir anbelangt, ist der entweder global falsch konfiguriert, das von dir erstellte PHP-Programm ist falsch programmiert.

isSMTP() aktiviert ja nur den Versand über SMTP anstatt über den Mailagent wie sendmail, mail o. ä.

Ich kann dir nur raten, schalte mal bitte das SMTPDebug auf 1 bei PHPMailer. Steht dann mehr im Fehlerlog?
 
Ich hatte das Debug ja auf 2 stehen. Nun auf 1 gibt er folgendes aus:

CLIENT -> SERVER: EHLO nsxxx.ip-142-xx.net
CLIENT -> SERVER: AUTH LOGIN
SMTP ERROR: AUTH command failed: 503 5.5.1 Error: authentication not enabled
CLIENT -> SERVER: QUIT
SMTP Error: Could not authenticate.
SMTP Error: Could not authenticate.

Ich verwende die Original-Dateien wie sie von PHPmailer angeboten werden, und auch sonst habe ich nur das Schema angepasst, also das mit dem $mail->Username, $mail->FromName usw.

Auch hatte ich mal testweise die PHPmailer-Dateien einer älteren Version, welche ich auf einem anderen Server nutze, genommen. Da hat es auch nicht mit geklappt, die Ausgabe dort war folgende:

SMTP -> FROM SERVER:220 nsxxx.ip-xxx.net ESMTP Postfix
SMTP -> FROM SERVER: 250-nsxxx.ip-xxx.net 250-PIPELINING 250-SIZE 10240000 250-ETRN 250-STARTTLS 250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN
SMTP -> ERROR: AUTH not accepted from server: 503 5.5.1 Error: authentication not enabled
SMTP -> FROM SERVER:250 2.0.0 Ok
SMTP -> FROM SERVER:250 2.1.0 Ok
SMTP -> FROM SERVER:554 5.7.1 : Relay access denied
SMTP -> ERROR: RCPT not accepted from server: 554 5.7.1 : Relay access denied
SMTP Error: The following recipients failed: hellooo@xxx.com Mailer Error: SMTP Error: The following recipients failed: hellooo@xxx.com
SMTP server error: 5.7.1 : Relay access denied

Versende ich denn aktuell, wenn ich das isSMTP() rausnehme, nicht über SMTP? Sondern ganz ohne Anmeldung?!

Danke & Gruß
 
Wie gesagt, mir ist die Konfiguration unbekannt, die du gemacht hast.


Ansonsten frug vorher ich:
Der Mailserver, den PHPMailer verwendet (also $mail->Host), ist das derselbe wo PHPMailer läuft?
 
Also ich verstehe Deine Frage nicht. Ich habe bei $mail->Host den Hostname des Servers eingetragen, genauso könnte ich dort domain.com eingeben.

Aber was ist denn der Unterschied zwischen "den PHPmailer verwendet" und "wo PHPmailer läuft" ?!

Danke
 
Wozu denn?
Wenn PHPMailer den SMTP-Server auf deinem Server benutzt, ist das 127.0.0.1.
Da brauchst du doch keine Authentifizierung, oder.
 
Jetzt verstehe ich gar nichts mehr. D.h. ich kann $mail->SMTPAuth = true; deaktivieren? Brauche am besten auch keinen Benutzernamen (Mailadresse) und PW für das E-Mail Konto anzugeben?!

Also ich habe extra einen Mailaccount im Plesk erstellt, und die Daten von dem in dem PHPmailer Schema angegeben.

Natürlich nutzt das PHP-Script den Maildienst auf diesem Server, auf welchem denn sonst? Ich will doch einfach nur z.B. Benachrichtigungsmails, E-Mail Adresse ändern - Mails, Passwort vergessen - Mails usw. versenden.

Also nun hast Du mir die letzte Ahnung die ich noch hatte geraubt.
 
Aber wenn du von einem lokalen User an den eigenen SMTP-Server Mails senden willst, geht das ohne Authentifizierung.
 
Welche Angaben benötige ich denn dann in diesem Fall nun?

Kann ich:
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Port = 25;
$mail->SMTPSecure = 'starttls';
$mail->Username = $mailaddress_1; // SMTP username
$mail->Password = $mailpassword_1; // SMTP password

komplett rausnehmen?

Gruß
 
Bei mir nicht:

SERVER -> CLIENT: 220 nsxxx.ip-142-xxx.net ESMTP Postfix
CLIENT -> SERVER: EHLO nsxxx.ip-142-xxx.net
SERVER -> CLIENT: 250-nsxxx.ip-142-xxx.net250-PIPELINING250-SIZE 10240000250-ETRN250-STARTTLS250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN
CLIENT -> SERVER: MAIL FROM:<bounce-back@xxx.com>
SERVER -> CLIENT: 250 2.1.0 Ok
CLIENT -> SERVER: RCPT TO:<hallooo@xxx.com>
SERVER -> CLIENT: 554 5.7.1 <hallooo@xxx.com>: Relay access denied
SMTP ERROR: RCPT TO command failed: 554 5.7.1 <hallooo@xxx.com>: Relay access denied
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 Bye
SMTP Error: The following recipients failed: hallooo@xxx.com
SMTP Error: The following recipients failed: hallooo@xxx.com

hallooo@xxx.com ist der Empfänger, diese Domain liegt natürlich auf einem anderen Server. Versendet wird über eine Mailadresse ($mail->From = $mailaddress_1;) die als Mailaccount auf einer Domain dieses Servers existiert. Die anderen Angaben habe ich alle entfernt. Egal ob ich bei $mail->Host nun 127.0.0.1, den Server-Hostname, die Server-IP oder eine Domain meines Servers eintrage, es geht nicht.

Warum?

Maillog:

Aug 1 15:56:00 nsxxx postfix/smtpd[25308]: connect from localhost.localdomain[127.0.0.1]
Aug 1 15:56:00 nsxxx postfix/smtpd[25308]: NOQUEUE: reject: RCPT from localhost.localdomain[127.0.0.1]: 554 5.7.1 <hallooo@xxx.com>: Relay access denied
; from=<bounce-back@xxx.com> to=<hallooo@xxx.com> proto=ESMTP helo=<nsxxx.ip-142-xxx.net>
Aug 1 15:56:00 nsxxx /usr/lib64/plesk-9.0/psa-pc-remote[15071]: Message aborted.
Aug 1 15:56:00 nsxxx /usr/lib64/plesk-9.0/psa-pc-remote[15071]: Message aborted.
Aug 1 15:56:00 nsxxx postfix/smtpd[25308]: disconnect from localhost.localdomain[127.0.0.1]

Die Adresse bounce-back@xxx.com habe ich in dem PHPmailer-Script in class.phpmailer.php bei:
/**
* The Sender email (Return-Path) of the message.
* If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
* @type string
*/
public $Sender = 'bounce-back@xxx.com';
eingetragen. Weil das war leer und dann stand für den Empfänger im Header sichtbar immer apache@nsxxx.ipxxx.net. Warum die jetzt im Maillog bei From= steht weiß ich nicht, im PHP-Script habe ich ja als Absender bzw. From eine andere angegeben.


Gruß
 
Last edited by a moderator:
Mach es so wie es vorher ging. Nimm nur das $mail->isSMTP raus.

Plesk Greylisting spinnt, es nimmt noch nicht mal von 127.0.0.1 an.

Ich habe gerade wenig Lust nachzuvollzihen, was da bei Plesk spinnt und wie PHPMailer intern läuft.
Vielleicht klärt das jemand anders.
 
Du hast etwas gesagt, das hat in mir sofort einen Blitz ausgelöst.

Ich habe mal in den MTA-Einstellungen im Plesk in die Whitelist 127.0.0.1 eingetragen. Dies dann bei $mail->Host auch, und es geht!

Wenn ich den Whitelist-Eintrag wieder entferne, geht es nicht mehr.

Gruß
 
Aber wenn's jetzt bei dir geht, freut mich das.

Bei mir wollte Plesk trotzdem nicht, deswegen meine Aussage.

Wo und was genau hast du eingetragen bei Plesk?
 
Last edited by a moderator:
Hmm, es geht dann auch nur, wenn ich im Script auch 127.0.0.1 eintrage, wenn ich den Hostname des Server nehme, error.

Die Degub-Ausgabe beim Absenden sieht nun so aus. Ist das ok? Nicht, dass das jetzt nur bei mir klappt und ich dann später wenn es rund geht bei den Usern im google, yahoo oder sonstwo - Spamordner lande:

SERVER -> CLIENT: 220 nsxxx.ip-142-xxx.net ESMTP Postfix
CLIENT -> SERVER: EHLO nsxxx.ip-142-xxx.net
SERVER -> CLIENT: 250-nsxxx.ip-142-xxx.net250-PIPELINING250-SIZE 10240000250-ETRN250-STARTTLS250-XFORWARD NAME ADDR PROTO HELO SOURCE PORT IDENT250-ENHANCEDSTATUSCODES250-8BITMIME250 DSN
CLIENT -> SERVER: MAIL FROM:<bounce-back@xxx.com>
SERVER -> CLIENT: 250 2.1.0 Ok
CLIENT -> SERVER: RCPT TO:<hallooo@xxx.com>
SERVER -> CLIENT: 250 2.1.5 Ok
CLIENT -> SERVER: DATA
SERVER -> CLIENT: 354 End data with <CR><LF>.<CR><LF>
CLIENT -> SERVER: Date: Fri, 1 Aug 2014 18:48:09 +0200
CLIENT -> SERVER: To: xxx <hallooo@xxx.com>
CLIENT -> SERVER: From: xxx <website@xxx.com>
CLIENT -> SERVER: Reply-To: "xxx.com" <info@xxx.com>
CLIENT -> SERVER: Subject: Confirm your new email address for xxx
CLIENT -> SERVER: Message-ID: <6fb50611520e484465ddeff43dd12373@nsxxx.ip-142-xxx.net>
CLIENT -> SERVER: X-Priority: 3
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.8 (https://github.com/PHPMailer/PHPMailer/)
CLIENT -> SERVER: MIME-Version: 1.0
CLIENT -> SERVER: Content-Type: text/plain; charset=iso-8859-1
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: content
CLIENT -> SERVER:
CLIENT -> SERVER: .
SERVER -> CLIENT: 250 2.0.0 Ok: queued as E2EE32940058
CLIENT -> SERVER: QUIT
SERVER -> CLIENT: 221 2.0.0 Bye
Message Sent OK

Ich verstehe aber noch nicht so ganz, dass ich nun auf diese Weise offiziell eine Mail mit dem Konto versenden kann, von dem ich einzig und allein nur die Absender-Mailadresse angegeben habe. Kein Passwort. Was, wenn ein System mehrere Kunden hat, dann könnte ja der eine im Namen des anderen unbemerkt Mails über dessen Konten versenden.

Oder verstehe ich da irgendwas falsch? Ich dachte, man müsse sich in jedem Fall per Passwort und so anmelden, um eine Mail ordentlich über dieses Script zu senden.

Danke & Gruß

Nachtrag zu Deiner Frage:

Plesk 12 -> Server -> E-Mail -> Mailserver-Einstellungen -> Reiter "Whitelist" -> Hinzufügen -> IP-Adresse/Netzwerkmaske * : 127.0.0.1 eingegeben und Plesk zeigt mir in der Whitelist-Auflistung nun den Eintrag 127.0.0.1 / 32 an.
 
Dann mache es mit Authentifizierung und lass es mit der Whitelist für 127.0.0.1.

Ich kann nicht sagen ob das mehr Sicherheit wegen möglicherweise spammenden Kunden oder Spamfiltern bringt.
 
Ich lasse es jetzt ohne PW / Authentifizierung und mit 127.0.0.1. Habe ja keine anderen Nerver mit drauf. Solange von außen niemand das Teil aus Spamschleuder verwenden kann, alles gut.

Das kann doch niemand, oder?

Danke & Gruß
 
Ob irgendjemand PHPMailer missbrauchen kann, hängt davon ab wie es in deine Webseiten/Programme eingebaut ist.

Wenn du darüber unsicher bist wie sowas geprüft werden kann, frage bitte jemand der täglich Sicherheitslücken bei Webanwendungen testet, stelle unter Suche ein Gesuch ein.
 
Back
Top