PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : exim4 - mehrere smtp-server?



Gartenzwerg
15.08.06, 20:59
Hi,

ich habe mit dem Howto aus diesem Forum (http://www.linuxforen.de/forums/showthread.php?t=161970) exim4 unter debian eingerichtet.
Nun habe ich zwei accounts bei verschiedenen Anbietern. Wie kann ich es bewerkstelligen, dass ich mails an die unterschiedlichen smtp-server ausliefern kann?

Gartenzwerg

maikthiel
16.08.06, 07:27
Hallo,

das ist mit Exim möglich, indem du für jede Absenderdomain einen Router und einen Transport einrichtest:



begin routers
entfernter_empfaenger_via_gmx:
driver = manualroute
# für beliebige Zieldomains (*) an mail.gmx.net senden:
route_list = * mail.gmx.net
# wenn die Absenderdomain gmx.de oder gmx.net ist:
senders = *@gmx.de : *@gmx.net
# von Exim zu nutzender Transport
transport = smtp_verbindung_via_gmx

entfernter_empfaenger_via_web:
driver = manualroute
route_list = * smtp.web.de
senders = *@web.de
transport = smtp_verbindung_via_web

begin transports
smtp_verbindung_via_gmx:
# Versand per SMTP
driver = smtp
# Server bei GMX erfordert Authentifizierung
hosts_require_auth = mail.gmx.net

smtp_verbindung_via_web:
driver = smtp
hosts_require_auth = smtp.web.de


Hoffentlich kannst du damit was anfangen. Wenn nicht, melde dich; dann erkläre ich es nochmal ausführlicher. Kommentare habe ich nur für GMX eingefügt, bei web.de ist ja alles identisch...

Ciao sagt Maik

Gartenzwerg
17.08.06, 17:45
Vielen Dank! Es funktioniert, wie beschrieben.
Zwei Probleme erweisen sich doch noch.

1.
Wenn ich mit fetchmail Mails beider Konten abhole, sendet exim für jede mail, die von mir selbst an meinen anderen Account geschickt wurde eine neue mail. Diese sendet er an sebastian@localhost über den jeweiligen Smarthost, der für den jeweiligen Absender eingestellt ist. Funktioniert natürlich nicht, also gibt es eine " Mail delivery failed: returning message to sender".
Wie kann ich das verhindern?

2.
Zur Zeit lässt sich die Absenderadresse nur ändern, wenn ich den Inhalt der /etc/email-adresses von:

sebastian: sebastiangibb@t-online.de
auf

sebastian: sebastiangibb@xyz.de
ändere.
Ich wollte dies in mutt per folder-hook lösen, doch das scheint exim nicht zu interessieren. Wie kann ich dies beheben?


folder-hook . 'set from="\"Sebastian Gibb\" <sebastiangibb@t-online.de>"'
folder-hook xyz 'set from="\"Sebastian Gibb\" <sebastiangibb@xyz.de>"'


Gartenzwerg

maikthiel
20.08.06, 20:05
Hm, dann versuch ich mal weiterzuhelfen...

Zum ersten Problem:
Da musst du vor den anderen Routern noch einen einfügen (exim nutzt immer den ersten Router, dessen Voraussetzungen alle erfüllt sind), der immer dann genutzt wird, wenn die Zieldomäne "localhost" ist und die Mails dann lokal in einer mbox ablegt, z.B.:


begin routers
...
router lokaler_empfaenger
driver = accept
domains = localhost
transport = lokale_zustellung
...(andere Router)...

begin transports
driver = appendfile
file = /var/mail/$local_part
...(andere Transportmethoden)...


Damit wird eine Mail an "bla@localhost" unter "/var/mail/bla" im mbox-Format angehängt, in deinem Falle eben dann an "/var/mail/sebastian". Diese mbox-Datei kannst du dann mit einem IMAP- oder POP3-Server an die Clients weiterreichen. Mutt und Konsorten können diese Datei lokal natürlich direkt nutzen.

Zum zweiten Problem: Beschreib mal bitte genauer, was du machen willst, ich werd nicht ganz schlau draus: Willst du ein Adress-Rewriting für ausgehende oder eingehende Mails, was soll wodurch ersetzt werden?

Ciao sagt Maik

Gartenzwerg
22.08.06, 20:12
Hallo,

erstes Problem gelöst.

Zu 2.
Ich habe zwei email-accounts (in deinem Bsp. bei gmx.de und web.de).
Wenn ich aus mutt heraus eine mail abschicke, steht in den logs von exim, dass die Absender sebastian@localhost ist. Damit erreiche ich aber keinen meiner Smarthosts. Nun habe ich in die /etc/email-adresses folgende Zeile hinzugefügt:

sebastian: sebastiangibb@gmx.de
Dies funktioniert wunderbar und exim versendet die mail über den gmx-Smarthost.
Ich möchte aber auch mails von sebastiangibb@web.de schicken.
Bisher verändere ich immer die /etc/email-adresses in:

sebastian: sebastiangibb@web.de
Das kann jedoch nicht im Sinne des Erfinders sein. (benötige ja immer root-rechte) Deshalb wollte ich die From-Header über einen Folder-Hook direkt in mutt setzen:


folder-hook . 'set from="\"Sebastian Gibb\" <sebastiangibb@gmx.de>"'
folder-hook xyz 'set from="\"Sebastian Gibb\" <sebastiangibb@web.de>"'

Doch scheinbar beachte exim diese Eintragungen nicht, sondern wertet weiterhin die /etc/email-adresses aus. (Wenn diese leer ist, sendet er von sebastian@localhost.)
Wie kann ich das ändern?

Hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe.

Gartenzwerg

maikthiel
23.08.06, 16:53
Ok, danke!

Jetzt wird es mir klarer, du willst "address rewriting" beim Versenden. Geht natürlich mit Exim (deswegen liebe ich Exim so, irgendwie geht alles :) ).

Es gibt dabei zwei Absenderadressen:

Zum einen innerhalb der eigentlichen Mail (bei einer SMTP-Übertragung im Mailbody, eine Zeile mit "From:" am Anfang), diese wird vom Mailclient erzeugt. Wenn du die ändern willst, kommt "headers_rewrite" für den Transport mit dem Flag "f" zum Einsatz. Das ist auch diejenige, die Mutt setzen kann.

Zum zweiten gibt es einen Envelope, der die Absenderadresse aufnimmt, die beim "MAIL FROM:" in einer SMTP-Verbindung übergeben willst. Zum Ändern der Adresse nutzt du "headers_rewrite" mit dem "F" als Flag.

Wenn du (wie sicherlich gewünscht) beide in einem Rutsch ändern willst, setzt du den headers_rewrite einfach mit beiden Flags, etwa so:



begin transports
transport smtp_verbindung_via_gmx:
...
headers_rewrite = *@localhost $local_part@gmx.de Ff


Damit wird für jeden Absender "@localhost" der Domain-Part durch "@gmx.de" ersetzt, der Teil vor dem "@" bleibt unverändert. Analog gehst du für web.de vor.
Dafür musst du natürlich Exim irgendwie die Möglichkeit geben zu erkennen, mit welchem Absender du die Mail versenden willst, vielleicht indem du in Mutt zwei verschiedene Konten zum Versenden einrichtest, eins mit der web.de und eines mit der GMX-Adresse?

Ciao sagt Maik (der als weiterführende Literatur die echt gute Doku unter http://exim.org/exim-html-4.62/doc/html/spec_html/index.html empfiehlt)

Gartenzwerg
24.08.06, 20:20
ich danke dir für die ausführliche und geduldige Hilfeleistung!
Funktioniert jetzt wie gewünscht.

Gartenzwerg

maikthiel
25.08.06, 09:57
Danke für die Rückmeldung, und schön, dass es jetzt klappt! Vielleicht sollte ich mal ein Tutorial schreiben, zum Thema "Exim: Von Null auf konfigurieren"? ;)

Ciao sagt Maik