Ich richte gerade ein CRM-System auf Basis von VTiger 5.4.0 ein und versuche, den Versand von E-Mails über SMTP zum Laufen zu bekommen.
Im Menüpunkt Einstellungen > Mailserver1 von VTiger kann man dafür die Absender-Adresse, den Namen des SMTP-Servers, einen Nutzernamen und ein Passwort für die Authentifizierung vorgeben. Sofort beim Speichern der Einstellungen sollte VTiger zur Bestätigung eine Testmail an das Postfach des gerade angemeldeten Benutzers senden.
Stattdessen erhalte ich diese Fehlermeldung:
teste Mail Status: Es wurde erfolglos versucht, eine E-Mail zu der Adresse Ihres CRM Administrators zu senden. Bitte prüfen Sie die zugewiesene E-Mail Adresse und Ihre Servereinstellungen.2
Die Benutzerdaten sind korrekt, der Mailserver läuft, der Webserver kann E-Mails aus anderen Webanwendungen senden – nur VTiger zickt herum.
Ursache
Der Grund dafür ist nicht einfach zu finden:
VTiger verwendet beim Versand von E-Mails eine fest vorgegebene Adresse im Sender:
-Feld der Nachricht, um sensible Spamfilter zu besänftigen. Diese Adresse besteht aus dem festen local part noreply
und dem Domainnamen des SMTP-Servers, zum Beispiel noreply@example.com
).
In der Funktion getReturnPath() wird dazu der Name des SMTP-Servers an den trennenden Punkten in seine Einzelstandteile zerlegt, der erste Teil entfernt und wieder zusammengefügt. Aus mail.example.com
wird also zuerst example.com
und danach die Sendeadresse noreply@example.com
.
Das geht geht für alle Mailserver gut, die einen Hostname als ersten Bestandteil im Namen tragen, und funktioniert nicht bei Servern, die über IP-Adressen wir 127.0.0.1 oder nur über die Domain adressiert werden (example.com
). In solchen Fällen bildet vTiger ungültige Sender-Adressen noreply@0.0.1
bzw. noreply@com
, die der SMTP-Server nicht akzeptiert und mit einer Fehlermeldung ähnlich der folgenden quittiert:
450 4.1.8 : Sender address rejected: Domain not found
Auf verschlungenen Wegen findet diese Fehlermeldung in der Klasse PHPMailer ihren Niederschlag in der Diagnose, dass die *Empfänger*-Adresse ungültig wäre.
Lösung
In den Foren von VTiger wird vorgeschlagen, eine Zeile in der Datei /modules/Emails/mail.php
zu ändern.
Ich hab’s mir einfacher gemacht, den Patch in VTiger vermieden und stattdessen den Alias-Namen des SMTP-Servers mail.example.com
in die VTiger-Konfiguration bei Einstellungen > Mailserver eingetragen.
1 Settings > Outgoing Server
2 Test Mail Status : Mail could not be sent to the admin user. Please check the admin emailid/Server settings