exim4-Konfiguration mit SRS-Daemon

exim4-Konfiguration mit SRS-Daemon

Ich habe Probleme, Exim 4 mit einem externen SRS-Daemon (Debian-Paket srs) einzurichten. Der srsd läuft und konvertiert Adressen problemlos hin und her. Ich kann den integrierten SRS-Code von Exim nicht verwenden, da er in Debian nicht aktiviert ist (ich weiß, dass ich ihn selbst kompilieren kann, aber das ist keine Option).

Ich habe Probleme mit dem srs_forward-Router in Exim, der weitergeleiteten E-Mails SRS-Tags hinzufügt. Ich habe den folgenden Umleitungsrouter eingerichtet, der nur für Nicht-Fehlernachrichten von nicht lokalen Absendern und nicht lokalen Empfängern ausgeführt werden sollte, die nicht für ein anderes MX weitergeleitet werden – zumindest verstehe ich, dass SRS auf solche Nachrichten angewendet wird. Bitte korrigieren Sie mich, wenn das falsch ist. Ich habe den folgenden Code:

srs_forward:
  debug_print = "R: srs_forward for $local_part@$domain"
  driver = redirect
  senders = ! :
  condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}
  domains = ! +local_domains : ! +relay_to_domains
  address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $domain\n}\
                                        {5s}{\n}{:defer: SRS daemon failure}}
  errors_to = ${quote_local_part:${local_part:$address_data}}@${domain:$address_data}
  data = ${quote_local_part:$local_part}@$domain
  headers_add = X-SRS: Sender address rewritten from $sender_address to ${quote_local_part:${local_part:$address_data}}@$$
  repeat_use = false
  allow_defer
  no_verify

Was ich testen konnte und was funktioniert: Der Rückpfad wird richtig generiert (Zeilen mit address_data und errors_to, sowie die To-Adresse (Zeile beginnend mit data).

Ich bin mir bei den Voraussetzungen unsicher:

senders = ! : 

Diese Zeile soll verhindern, dass der Router bei Fehlermeldungen anläuft.

condition = ${if ! match_domain{$sender_address_domain}{+local_domains}}

Diese Zeile soll verhindern, dass der Router nach Nachrichten von lokalen Absendern sucht.

domains = ! +local_domains : ! +relay_to_domains

Diese Zeile soll verhindern, dass der Router für Nachrichten an lokale Empfänger oder für weitergeleitete Nachrichten ausgeführt wird.

Könnte das bitte jemand klarstellen?

(Ich habe einHandbuchals Ausgangspunkt, allerdings ohne Erfolg.)

Antwort1

Sie haben nicht richtig getestet. Die Informationen, die Sie an den SRS-Daemon weitergeben, sind nicht korrekt:

FORWARD $sender_address_local_part@$sender_address_domain $domain\n

Das führt nicht zu dem gewünschten Ergebnis: $domain enthält die Empfängerdomäne und nicht die Absenderdomäne. Ihre Absicht, den Rückpfad zur Domäne umzuschreiben, von der die Nachricht weitergeleitet wurde, ist ehrenhaft, funktioniert aber nicht so: Die Nachricht erreicht Ihren SRS-Routernachdie Weiterleitung wurde bereits durchgeführt, daher enthält $domain nicht mehr die Domäne, an die die Nachricht gesendet wurde. Sie sollten $primary_hostname oder $original_domain verwenden. Diese Zeile sollte also folgendermaßen aussehen:

address_data = ${readsocket{/tmp/srsd}\
                {FORWARD $sender_address_local_part@$sender_address_domain $original_domain\n}\
                                    {5s}{\n}{:defer: SRS daemon failure}}

Was Ihre Voraussetzungen betrifft, sind sie in Ordnung. Sie können die Zeilen „Absender“ und „Bedingung“ zusammen nehmen:

senders = ! : ! *@+local_domains

Sie müssen nur sicherstellen, dass die Domänenliste „local_domains“ wirklich alle Ihre lokalen Domänen enthält (zumindest sollte sie für die aktuell weitergeleitete Nachricht „$original_domain“ und „$sender_address_domain“ enthalten).

Bitte dokumentieren Sie Ihre Konfiguration, wenn Ihr Code läuft, und geben Sie uns hier einige Hinweise. Sie müssen noch einige Dinge arrangieren: ACLs, um eingehende SRS-getaggte Bounce-Nachrichten zu überprüfen, SRS-getaggte Mails für Greylisting enttaggen, Bounces enttaggen, sicherstellen, dass ausgehenden Nachrichten keine anderen Tags wie BATV hinzugefügt werden, Workarounds, um SRS-getaggte Nachrichten mit zerschlagener Groß-/Kleinschreibung zu akzeptieren, den Text der Bounce-Fehlermeldung so umschreiben, dass die SRS-getaggte Absenderadresse nicht enthalten ist, eventuell alle nicht getaggten Bounces ablehnen usw. Ein gutes Tutorial wäre also sehr hilfreich. Danke!

verwandte Informationen