Exim liefert keine E-Mails an Dovecot, wenn diese von einem externen Relais empfangen werden (nicht routbare Adresse)

633
Adambean

Ich habe einen virtuellen Server, auf dem Debian Stretch ausgeführt wird, von dem ich beabsichtige, einen E-Mail-Austausch (und möglicherweise einen Webserver) für nur eine Handvoll persönlicher Domänennamen auszuführen. (Derzeit 1, aber 2 weitere.) Ich verwende Exim als Mail-Austausch und Dovecot für virtuelle Benutzer, um auf Mailboxen zuzugreifen.

Ich verwende das Paket " exim4-daemon-heavy " mit dem kombinierten Konfigurationsformat, gespeichert unter /etc/exim4/exim4.conf.template. Ich habe dieses Handbuch auch als Grundlage für das Einrichten von Exims Routing für virtuelle Benutzer von Dovecot verwendet, mit einigen Anpassungen für das, was ich will (Multi-Domain) und damit Debian Stretch funktionieren kann.

Meine Absichten für jeden Domainnamen, für den ich Mail / Web hosten möchte, sind:

  • Einen einzigen Systembenutzer haben.
  • Jede Domain speichert alles (Mail und Web) auf /home/.
  • Mail an /home//mail.
  • Web bei /home//public_html.
  • Jedes Postfach innerhalb einer Domäne um /home//mail/.
  • Jedes Postfach verwendet das MAILDIR-Format, nicht MBOX.
  • Keine Systembenutzereinträge für jedes virtuelle Postfach. Dovecot ist für die Verwaltung einer Liste virtueller Benutzer verantwortlich.

Sie haben wahrscheinlich bemerkt, dass dies in etwa so ist, wie cPanel / WHM die Dinge tut. Warum benutze ich das nicht einfach? Zu teuer für einen persönlichen VPS, der bei mir zu Hause als virtueller Server gehostet wird. (Außerdem habe ich eine ziemlich große Vorliebe für den Debian-Distributionszweig als für RHEL, den cPanel / WHM nicht unterstützt.)

Sowohl Exim als auch Dovecot schienen ihre Arbeit zunächst sehr gut zu machen. Ich kann (die meisten) E-Mails ohne Probleme senden / empfangen. Ich habe auch Roundcube für den Web-Mail-Zugriff angelegt, kein Problem.

Wenn Exim jedoch E-Mails von externen Relays für bestimmte E-Mail-Adressen erhält, lehnt es die E-Mail mit "Unrouteable address" ab. Es könnte sich nur um einen Konfigurationskonflikt handeln.

Das Szenario ist:

  • Der FQDN des VPS stimmt mit dem ersten virtuellen Domänennamen überein, für den Mail / Web derzeit gehostet wird. (Nennen wir es "example.com".)
  • Die Mailbox, die vollständig funktioniert (und ich merke am meisten) ist meine eigene Mailbox "adam@example.com".
  • Ich habe einen Systembenutzer "adam", den ich für die Verwaltung über SSH verwende. (Dies hat Sudo-Erlaubnis.)
  • Es gibt ein Postfach für Systemwarnungen, "server@example.com", von dem ich beabsichtigte, dass E-Mails von CRON, CSF + LFD, Webmin usw. ankommen. (Der Alias ​​"root" wird dieser E-Mail-Adresse zugeordnet.)

Was funktioniert ohne Problem:

  • IMAP / SMTP-Zugriff auf "adam@example.com".
  • IMAP / SMTP-Zugriff auf "server@example.com".
  • E-Mail von einem virtuellen Postfach "adam@example.com" an "server@example.com".
  • E-Mail von einem virtuellen Postfach "server@example.com" an "adam@example.com".
  • Mail von einem Alias, zB "root@example.com" oder "webmin@example.com" an "server@example.com".
  • E-Mail von "anywhere-else@example.org" an "adam@example.com".
  • E-Mail, die von einem vom ISP gehosteten Postfach "adam@my-isp.example.org" an "adam@example.com" weitergeleitet wird.

Die Dinge, die nicht funktionieren, sind:

  • E-Mails von "anywhere-else@example.org" an "server@example.com" werden mit "nicht routbare Adresse" abgelehnt.
  • E-Mails, die von einem vom ISP gehosteten Postfach "server@my-isp.example.org" an "server@example.com" weitergeleitet werden, werden mit "nicht routbare Adresse" abgelehnt.

Eine Beispielzeile aus Exims Ablehnungsprotokoll:

H=some-relay.my-isp.example.org [a.b.c.d] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128 CV=no F=<anywhere-else@example.org> rejected RCPT <server@example.com>: Unrouteable address 

Ich denke, das Problem könnte entweder Exim nicht wissen, wo er E-Mails von einem externen Relay verschicken soll, oder Dovecot glaubt nicht, dass das Postfach "server@example.com" existiert. Letzteres ist schwieriger zu glauben, da E-Mails von "adam@example.com" dazu in Ordnung gehen, und dies würde auch die virtuelle Benutzerliste von Dovecot verwenden.

Hier ist die Exim-Router-Konfiguration für Dovecot:

##################################################### ### router/299_exim4-config_dovecot_router #####################################################  ### router/299_exim4-config_dovecot_router #################################  # This router delivers mail to any dovecot virtual # user who has a directory under /home/$domain/mail # Place after remote router and before localuser router # + addressing support requires uncommenting dovecot_router: driver = accept #local_part_suffix = +* #local_part_suffix_optional require_files = +/home/$domain/mail/$local_part/ transport = dovecot_transport  ##################################################### ### end router/299_exim4-config_dovecot_router ##################################################### 

Da ich dachte, dass es einen möglichen Konflikt mit dem router/300_exim4-config_real_localSitzen an der 300. Priorität geben könnte, habe ich 299_exim4-config_dovecot_routervon der ursprünglichen Priorität 320 auf 299 verschoben, was jedoch keinen Unterschied machte. (In meinem Kopf dachte ich, vielleicht würde Exim versuchen, die Post an Dovecot zu übergeben, bevor er sie an die Mailbox eines Systembenutzers weiterleitet.)

Hier ist die Transportkonfiguration für Dovecot:

##################################################### ### transport/40_exim4-config_dovecot_transport #####################################################  # Transport to send any mail for virtual dovecot users to correct maildir box dovecot_transport: debug_print = "T: dovecot_virtual appendfile for $local_part@$domain" driver = appendfile create_directory directory_mode = 0750 directory = /home/$domain/mail/$local_part maildir_format = true delivery_date_add envelope_to_add return_path_add user = $domain group = $domain mode = 0640 mode_fail_narrower = false  ##################################################### ### end transport/40_exim4-config_dovecot_transport ##################################################### 

Ich denke nicht, dass dies so relevant sein wird, aber hier ist die Konfiguration für die Authentifizierung von SMTP-Anmeldungen durch Exim über Dovecot:

# Authenticate against Dovecot dovecot_plain: driver = dovecot public_name = PLAIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1  dovecot_login: driver = dovecot public_name = LOGIN server_socket = /var/run/dovecot/auth-client server_set_id = $auth1 

Exim Back-Trace von einer Shell auf "example.com":

# exim -bt server@example.com server@example.com router = dovecot_router, transport = dovecot_transport 

Exim-Rückverfolgung von einer Shell auf einem unabhängigen Debian-System, das Exim im Satellitenmodus verwendet:

# exim -bt server@example.com R: smarthost for server@example.com server@example.com router = smarthost, transport = remote_smtp_smarthost host mailhost.my-isp.example.org [a.b.c.d] port=587 host mailhost.my-isp.example.org [a.b.c.e] port=587 

Die Rückverfolgungen waren die gleichen, wenn "adam@example.com" und "server@example.com" von beiden Systemen abgefragt wurden.

Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen oder wenn Sie weitere Tests durchführen möchten. Ich hoffe, dass dies ein ziemlich einfaches Konfigurationsproblem ist, das ich übersehen habe.

Ich weiß, dass dies ein Serverproblem ist und kein Endbenutzerproblem. Ich habe das ursprünglich bei Server Fault gefragt, aber es wurde für diese Community nicht als "Geschäft" angesehen.

Danke fürs Lesen. :)

0

0 Antworten auf die Frage