Sie befinden sich hier: Technik / Strato / Plesk Panel / E-mail-Versand-Problem mit Domains
Deutsch
English
Dienstag, 25.09.2018

Problem: Es lassen sich keine Mails an eine Domain auf dem Rootserver schicken, deren Mail von einem anderem Server verwaltet wird

Wenn man von einer Domain auf einem anderen Server eine DNS-Umleitung (A-record) auf einen virtuellen Host auf dem Rootserver vornimmt, kann es zu Problemen beim Versenden von Mails an diese Domain kommen.

Es handelt sich hierbei um einen Fehler, der bereits seit langem in Plesk vorhanden ist, hierzu diese Links:

Hier konnte das Problem auf zwei Servern nachvollzogen werden:

  • opensuse 11.0 und Plesk 9.0.1
  • opensuse 11.1 und Plesk 9.5.1

Die Lösung wurde gefunden, nachdem ein (natürlich bezahltes) Plesk service ticket auf dem 2nd level entsprechende Hinweise gab, die dann zum Auffinden der obigen Links geführt haben.

Die Vorbedingungen

  1. Auf dem Rootserver wurde eine Domain domain.tld angelegt.
  2. Die Domain wurde über den A-record Eintrag auf die IP des Rootservers umgeleitet.
  3. Auf dem Rootserver wurde die Option E-Mail-Dienst auf Domain aktivieren deaktiviert.

Der Webseitenaufruf wird nun ohne Problem auf den Rootserver umgeleitet. Die Auslieferung der Webseiten erfolgt durch den Rootserver.

Auf dem Plesk-Server wird postfix als MTA verwendet. Ob das Problem auch bei Verwendung von qmail als MTA auftritt wurde nicht verifiziert.

Das Problem

Wenn nun von irgendeinem Mail-Account auf dem Rootserver Mails an eine Adresse unter domain.tld geschickt werden soll, dann kommt folgende Fehlermeldung zurück:

"<_plesk_bounce_domain.tld@localhost.localdomain> (expanded from
<test@domain.tld>): This address no longer accepts mail."

Das Problem tritt auch auf, wenn in den Einstellungen zur Domain in Domains > domain.tld > E-Mail-Accounts > E-Mail-Einstellungen die Option E-Mail an nicht existierenden Benutzer auf Zurückweisen steht.

Der Fehler liegt bei Plesk. Wenn einmal in den E-Mail-Einstellungen die Option E-Mail an nicht existierenden Benutzer auf Bounce mit Nachricht gestellt und so abgespeichert worden ist, wird in der Datenbank-Datei /var/spool/postfix/plesk/aliases.db ein Eintrag in folgenden Form vorgenommen:

_plesk_bounce_domain.tld       "|/usr/lib64/plesk-9.0/bouncemessage This\\\ address\\\ no\\\ longer\\\ accepts\\\ mail."

Dieser Eintrag wird von Plesk nicht mehr entfernt, wenn eine Umstellung der Option E-Mail an nicht existierenden Benutzer erfolgt.

Ob ein entsprechender Eintrag Datenbankdatei enthalten ist, lässt sich mit den folgenden Befehlen feststellen:

postalias -s /var/spool/postfix/plesk/aliases | grep domain.tld

oder

postmap -s /var/spool/postfix/plesk/aliases | grep domain.tld

Ausserdem sollte man überprüfen, ob in der Datenbank-Datei /var/spool/postfix/plesk/virtual.db Einträge für domain.tld enthalten sind. Das erfolgt ebenfalls mit den o.g. Befehlen:

postalias -s /var/spool/postfix/plesk/virtual | grep domain.tld

Sollten in dieser Datenbank ebenfalls Einträge enthalten sein, so ist zusätzlich noch die Lösung - Teil 2 (siehe weiter unten) zu beachten, insbesondere wenn ein Eintrag in der folgenden Form enthalten ist:

@domain.tld: _plesk_bounce_domain.tld@localhost.localdomain

In diesem Fall klappt die Mailzustellung an eine Adresse von domain.tld noch nicht. Die von Plesk standardmässig erzeugten Einträge sollten dagegen normalerweise (sofern man keine Mails an diese Adressen verschicken möchte) kein Problem darstellen.

postmaster@domain.tld        postmaster@localhost.localdomain
root@domain.tld      root@localhost.localdomain
drweb@domain.tld     drweb@localhost.localdomain
mailer-daemon@domain.tld     mailer-daemon@localhost.localdomain
anonymous@domain.tld anonymous@localhost.localdomain

Wie man diese dennoch entfernen kann, kann man ebenfalls aus Lösung - Teil 2 entnehmen. Dabei sollte man beachten, dass diese Einträge wohl nach dem nächsten Aufruf von mchk (siehe Lösung - Teil 1) wieder erstellt werden.

Die Lösung - Teil 1

Es gibt die Möglichkeit, die Mailkonfiguration mit Hilfe eine CLI-Programms (CLI = Command line interpreter) von Plesk zu aktualisieren. Das Programm mchk ist im Verzeichnis /usr/local/psa/admin/sbin/ zu finden, der Programmaufruf und die Programmausgaben erfolgen in etwa so:

# /usr/local/psa/admin/sbin/mchk
==> Checking for: mail_spam_restore... ok
==> Checking for: mailsrv_conf_init... ok
==> Checking for: mail_mailbox_restore... ok
==> Checking for: mailsrv_entities_dump... ok
==> Checking for: mail_admin_aliases... ok
==> Checking for: mail_auth_dump... ok
==> Checking for: mailman_lists_dump... ok
==> Checking for: mail_responder_restore... ok
==> Checking for: mail_drweb_restore... ok
==> Checking for: mail_kav_restore... ok
==> Checking for: mail_spf_restore... ok
==> Checking for: mail_dk_restore... ok
==> Checking for: mail_grey_restore... ok

Mögliche Parameter für mchk erhält man durch mchk --help.

mchk baut die Mail-Konfiguration neu von den Plesk-Datenbankeinträgen auf. Hat man also zuvor die Einstellung Option E-Mail an nicht existierenden Benutzer auf Zurückweisen umgestellt und abgespeichert, dann wird der Eintrag _plesk_bounce_domain.tld in der Datenbank-Datei /var/spool/postfix/plesk/aliases.db nach dem mchk-Befehl nicht mehr enthalten sein.

Nachtrag:

Von der Verwendung von mchk ist (zumindest unter Plesk 9.0.1) abzuraten, da es u.a. auch Einträge vom Typ

info@domain.tld     info@localhost.localdomain

erstellt, was bereits vorhandene E-mail-Accounts mit dem Namen info überschreibt.

Besser ist die Verwendung von

postalias -d <key> aliases-file

zum selektiven Löschen von Einträgen aus der aliases-Datei.

Die Lösung - Teil 2

Diese Teillösung beruht auf diesem Posting hier.

In Plesk wird unter der Domain in den E-Mail-Einstellungen die Option E-Mail an nicht existierenden Benutzer auf Zurückweisen umgestellt und abgespeichert.

Nun sollte der Eintrag

@domain.tld: _plesk_bounce_domain.tld@localhost.localdomain

nicht mehr in der virtual.db enthalten sein, zu prüfen durch:

postalias -s /var/spool/postfix/plesk/virtual | grep domain.tld

Möchte man nun auch noch die übrigen Einträge für domain.tld löschen, dann legt man für jeden dieser Einträge einen Mail-Account an. Man kann auch einen Mail-Account anlegen und diesem die restlichen Einträge als Aliase zuordnen. Dann löscht man diese Account. Nun sind auch diese Einträge nicht mehr in der virtual.db enthalten.

Allerdings werden diese Einträge nach einen mchk-Befehl von Plesk wiederhergestellt.