Ich möchte von meinen Systemen aus je nach der Absender-Adresse unterschiedliche Smarthosts ansteuern. Sprich: Wenn ich im MUA als vwegert@web.de schreibe, soll die Mail zur Auslieferung an smtp.web.de übergeben werden, wenn ich als Absender meine Manitu-Adresse verwende, soll der dortige Smarthost verwendet werden und so weiter. Exim kann das mit ein wenig Bastelei.
Erstmal lege ich mir eine Datei namens /etc/exim/smarthosts an, in der ich die "Routing-Regeln" definiere. Die Datei sieht so aus:
vwegert@web.de: smarthost=smtp.web.de auth_name=vwegert auth_pass=ganzgeheim *@volker-wegert.de: smarthost=smtp.volker-wegert.de auth_name=vwegert auth_pass=nochgeheimer
Der Inhalt sollte eigentlich selbsterklärend sein. Wie man sieht, ist die Angabe von Wildcards in der Empfängeradresse mglich. Da diese Datei sensitive Daten enthält, ist eine entsprechend restriktive Berechtigungsvergabe angebracht. Dann kommt die exim.conf dran. Aus der Router-Konfiguration wird der domain_literal-Router auskommentiert (wenn das noch nicht passiert ist) und durch folgenden Eintrag ersetzt:
smarthost_auto: condition = ${extract{smarthost}{${lookup{$sender_address}wildlsearch{/etc/exim/smarthosts}{$value}fail}}} driver = manualroute domains = ! +local_domains route_list = "* ${extract{smarthost}{${lookup{$sender_address}wildlsearch{/etc/exim/smarthosts}{$value}fail}}}" transport = remote_smtp
Achtung: Die Reihenfolge der Router ist wichtig!
Das liest sich am besten als "Wenn in der Datei /etc/exim/smarthosts eine Zeile gefunden werden kann, deren Schlüssel als Wildcard auf die Absenderadresse passt und in der ein Smarthost eingetragen ist, dann lege manuell als nächsten MTA auf der Route ebendiesen Smarthost fest und gib die Nachricht per SMTP weiter."
Das reicht mir ganz knapp noch nicht, denn schließlich will ich mich auf der Gegenseite ja auch noch mit Passwort melden. Dazu muß in den Transport remote_smtp noch die Zeile
hosts_try_auth = smtp.volker-wegert.de:smtp.web.de
eingebaut werden. Außerdem gehört folgende Konfiguration in die authenticators-Sektion:
cram_md5: driver = cram_md5 public_name = CRAM-MD5 client_name = "${extract{auth_name}{${lookup{$sender_address}wildlsearch{/etc/exim/smarthosts}{$value}fail}}}" client_secret = "${extract{auth_pass}{${lookup{$sender_address}wildlsearch{/etc/exim/smarthosts}{$value}fail}}}"
Und das sollte es eigentlich auch schon gewesen sein...
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer