PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Exim4 und SMTP-AUTH für mehrere Smarthosts



myp
30.11.06, 09:49
Hi!

Also nachdem ich hier nun schon ca 2 Wochen an dem Mailserver rumbastel und wahrscheinlich schon den Wald vor lauter Bäumen nicht mehr sehe und das Problem nicht finde will ich hier nun mal ein paar Fragen stellen. Beim ewigen Suchen in Internet bin ich bis jetzt noch auf keine Antworten für meine Fragen gestossen oder hab die Antwort vielleicht einfach nicht als solche identifizieren können.

Wenn ich z.B. sowas habe:

smarthost_gmx:
condition = ${if eq {${lc:$sender_address_domain}} {gmx.de} {true} fail }
driver = manualroute
domains = ! +local_domains
transport = remote_smtp
route_list = "* mail.gmx.net byname"

remote_smtp:
debug_print = "T: remote_smtp for $local_part@$domain"
driver = smtp
hosts_try_auth = ${if exists {CONFDIR/passwd.client}{mail.gmx.net}{}}

Wie Authentifiziert sich das Ding dann genau beim SMTP-Server? Unten an der exim4.conf.template sind cram_md5, plain und login. Nimmt der dann einfach was von denen was ihm gefällt oder macht der was ganze anderes? Kann ich irgendwie spezifizieren was er genau für eine SMTP-AUTH-Methode nehmen soll? Dazu sei noch gesagt das ich mehrere Smarhosts habe und nicht jeder alle Methoden unterstützt und somit auch nicht jeder also die gleiche nehmen soll/kann.

Nun noch zu was anderem. Ich habe auch einen Account bei Yahoo und der unterstützt nur plain und login und zwar ohne TLS wie es aussieht. Das erste Problem ist nun, dass die SMTP-AUTH-Methode login scheinbar garkeine Daten aus meiner passwd.client bekommt. Denn immer wenn ich eine Mail versenden will steht im Log "authentication failure" oder sowas. Wenn ich nun aber anstatt der Methode die Benutzername und Passwort aus der passwd.client auslesen soll direkt meinen Benutzernamen und mein Passwort hinschreibe funktioniert der Versand von Mails.


smarthost_yahoo:
condition = ${if eq {${lc:$sender_address_domain}} {yahoo.de} {true} fail }
driver = manualroute
domains = ! +local_domains
transport = remote_smtp_yahoo
route_list = "* smtp.mail.yahoo.com byname"

remote_smtp_yahoo:
debug_print = "T: remote_smtp for $local_part@$domain"
driver = smtp
hosts_try_auth = ${if exists {CONFDIR/passwd.client}{smtp.mail.yahoo.com}{}}

So funktioniert es:
login:
driver = plaintext
public_name = LOGIN
# client_send = "${if !eq{$tls_cipher}{}{}fail}\
# : ${extract{1}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}} \
# : ${extract{2}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}"

client_send = ": <Benutzername> : <Passwort>"

So funktioniert es nicht:
login:
driver = plaintext
public_name = LOGIN
# client_send = "${if !eq{$tls_cipher}{}{}fail}\
# : ${extract{1}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}} \
# : ${extract{2}{::}\
# {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}"

client_send = ": ${extract{1}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}: ${extract{2}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}"

Auschnitt wie die Sache mit Yahoo in der passwd.client steht:
smtp.mail.yahoo.com:<Benutzername>:<Passwort>

Der obere auskommentierte Teil von der AUTH-Methode wäre ja mit TLS, deswegen ist er auskommentiert, da Yahoo ja kein TLS unterstützt. Die Alternative ohne TLS steht so als Beispiel in der Config.
Nun noch eine Frage dazu: Wenn ich das Ding mit TLS nun auskommentiere und das ohne TLS nehme, dann nimmt er doch immer ohne TLS, oder? Kann ich das auch irgendwie machen das er mir die AUTH-Methode Login nur für Yahoo ohne TLS nimmt und für andere Smarthosts die TLS unterstützen mit TLS?

Auf dem System läuft Debian Sarge mit Kernel 2.6.12

Hoffe das ihr mir vielleicht bei den Problemen/Fragen weiterhelfen könnt.

Gruß
myp