Wir konstruieren hier einfach mal einen Worst-Case. Keines der Probleme ist frei erfunden, obwohl sie nicht alle gleichzeitig auftraten, habe ich jedes davon lösen müssen. Man kann etwas derartiges aber durchaus brauchen, wenn man mehr als eine Email-Adresse besitzt und über verschiedene Provider Mail versenden will. Zudem zeigt dies deutlich die Möglichkeiten von Sendmail. Man stelle sich nur einmal vor, alles das jedem einzelnen Mailprogramm beibringen zu müssen, falls das überhaupt geht.
Mein System ist mit M4-Makros konfiguriert. Hier das File dazu:
include(`../m4/cf.m4') define(`SMART_HOST',`smtp:studserv.uni-leipzig.de') define(`confCON_EXPENSIVE',`True') define(`confDONT_EXPAND_CNAMES',`True') define(`confDONT_PROBE_INTERFACES',`True') define(`confSERVICE_SWITCH_FILE',`/etc/service.switch') define(`confHOSTS_FILE',`/etc/hosts') define(`confTO_QUEUEWARN',2d) define(`confTO_QUEUERETURN',14d) define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail') FEATURE(nodns) FEATURE(nocanonify) FEATURE(mailertable,`hash -o /etc/mailertable') FEATURE(use_cw_file) FEATURE(local_procmail) OSTYPE(linux) undefine(BITNET_RELAY) undefine(DECNET_RElAY) MAILER(smtp) MAILER(uucp) MAILER(zconnect) MAILER(bsmtp)
Die Mailertable sieht beispielhaft so aus:
zaphod local zaphod.UUCP local zaphod.sax.sub.de local arthur local arthur.UUCP local arthur.sax.sub.de local .sax.sub.de bsmtp:cap .east.de zconnect:elektron.east.de .nikoma.de smtp:smtp.nikoma.de
Und das .cw-File etwa so:
arthur arthur.sax.sub.de zaphod zaphod.sax.sub.de
Damit ist praktisch alles gelöst, abgesehen von der Maskerade
der Absenderadressen. Zwar gibt es FEATURE(masquerade) und
FEATURE(allmasquerade), aber die gehen nur für einen
User und einen Mailer. Zudem ändern sie den Usernamen nicht. Also
ist Handarbeit angesagt: Einen eigenen Mailer definieren. Die Idee dazu
hatte ich ursprünglich aus einer FAQ bei Delix, auch dort hatte man
die Genericstable offenbar übersehen.
ifdef(`confMASQUERADEDB',`dnl # define lookup database for pointnames outside the local net Kmasqdb btree confMASQUERADEDB undefine(`confMASQUERADEDB')') ###################################### ### MSMTP Mailer specification ### ###################################### Mmsmtp, P=[IPC], F=CONCAT(meDFMuX, SMTP_MAILER_FLAGS), S=81,R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990, _OPTINS(`SMTP_MAILER_MAX', `M=', `, ') _OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP, A=IPC $h ############################################################## ### Ruleset 81, rewrite sender header & envelope for Mmsmtp ## ############################################################## #Thanks to Bjart KvarmeS81 R$- $1 < @ $j . > user => user@localhost R$- < @ $* > $* $: $1 < @ $2 > $3 ?? $1 user@something? R$+ ?? $+ $: $1 ?? $(masqdb $2 : smtp $: @ $) R$+ ?? @ $@ $1 Not found R$+ ?? $+ $>3 $2 Found, rewrite
Etwas ähnliches wird noch für ZConnect definiert, dann kommen noch drei Zeilen in das .mc-Makrofile:
define(`confMASQUERADEDB',`/etc/masqueradedb') MAILER(zconnect) MAILER(mzconnect)
Dann noch eine entsprechende Datenbank aufsetzen
(makemap), Config generieren (m4 arthur.mc),
fertig.
Zum Testen der Konfiguration sollte man den Adreßtest-Modus von
Sendmail benutzen. Man ruft ihn mit sendmail -bt auf. Er
erwartet als Eingabe eine kommagetrennte Liste von Rulesets und eine
Adresse. Um also zu checken, dass Mail an
udo@arthur.sax.sub.de wirklich per UUCP versendet wird,
gibt man ein:
sendmail -bt 3,0 udo@arthur.sax.sub.deUnd die letzte Zeile sollte den bsmtp-Mailer selektiert haben.
Beschaff dir einen eigenen Domainnamen, und alle Probleme sind weg. Wenn du es schaffst, einen echten Domainnamen zu bekommen (normalerweise kauft man ihn einfach, aber das geht eben nicht mit einem Wegwerfprovider) und dein Provider das ETRN-Verfahren zum Abholen der Mail für ganze Domains anbietet, sind alle Probleme ohne Konfigurationsaufwand gelöst.
Ebenfalls eine saubere Lösung ist UUCP. Mit UUCP kommt man auch
zu einer ordentlichen Adresse (udo@arthur.sax.sub.de ist
so eine) und die Konfiguration ist mit Bordmitteln (sprich M4-Makros)
gelöst.