Inhalt

11. Sendmail V8-Konfiguration

Wenn Du Sendmail installierst, solltest Du besonders darauf achten, daß Du den kompletten Satz an Configurations-Files installierst, welcher sich bei Slackware in dem Paket smailcnf.tgz versteckt. Diese Configurations-Files finden sich in einem Verzeichnisbaum unter /usr/src/sendmail/cf. In diesem Verzeichnis sollte sich auch ein knapp 50KB großes README befinden, daß die neue Konfigurationsmethode beschreibt.

Obwohl Sendmail über ein gewöhnlich gut 20KB großes Configurations-File (/etc/sendmail.cf) gesteuert wird, mußt man dieses File nicht selber schreiben (das denken nämlich die meisten Leute, die von Sendmail abgeschreckt werden). Vielmehr benötigt man den Macroprozessor M4, und ein kleines Konfigurationsfile (mc-File) in /usr/src/sendmail/cf/cf. M4 erzeugt dann aus dem mc-File und den anderen (vom User normalerweise nicht zu ändernden) Config-Files das sendmail.cf-File.

Zunächst einmal muß FidoGate allerdings noch bekannt gemacht werden. Hierzu muß das File /usr/src/sendmail/cf/mailer/ftn.m4 mit folgendem Inhalt angelegt werden:

PUSHDIVERT(-1)
#
# /usr/src/sendmail/cf/mailer/ftn.m4
#
# FIDOGATE FTN mailer for sendmail V8
#
# MAILER(smtp) and MAILER(uucp) must be included!
#

ifdef(`FTN_MAILER_PATH',, `define(`FTN_MAILER_PATH', 
                                   /usr/local/lib/fidogate/rfc2ftn)')
ifdef(`FTN_MAILER_ARGS',, `define(`FTN_MAILER_ARGS', `rfc2ftn -w normal $u')')
ifdef(`FTN_MAILER_FLAGS',, `define(`FTN_MAILER_FLAGS', `')')
ifdef(`FTN_MAX_SIZE',, `define(`FTN_MAX_SIZE', 100000)')
POPDIVERT
#####################################
###    FTN Mailer specification   ###
#####################################

VERSIONID(`ftn.m4 V1.5')

ifdef(`_MAILER_smtp_',
`# FIDOGATE mailer
Mftn,   P=FTN_MAILER_PATH, F=CONCAT(mDFMhu, FTN_MAILER_FLAGS),
        S=52/31, R=ifdef(`_ALL_MASQUERADE_', `11/31', `21'),
        A=FTN_MAILER_ARGS
 ')

Wie man sieht, ist die Konfiguration zur Verwendung von rfc2ftn nicht allzu aufwendig, aber was da genau passiert, braucht uns auch nicht zu kümmern, wir verwenden den eben definierten Mailer "ftn" jetzt einfach, wie die vordefinierten Mailer "smtp", "uucp" etc.

Kommen wir also nun zur Konfiguration des mc-Files. Ich habe es spinnaker.mc genannt, aber der Name tut nichts zur Sachen, das File sollte nur in /usr/src/sendmail/cf/cf liegen. spinnaker.mc sieht bei mir so aus:

# /usr/src/sendmail/cf/cf/spinnaker.mc
#
# sendmail V8 configuration for spinnaker.rhein.de
# using UUCP and FidoGate
#
include(`../m4/cf.m4')
VERSIONID(`spinnaker.mc V1.16')

OSTYPE(linux)dnl

define(`confUSE_ERRORS_TO', `True')dnl
define(`confCOPY_ERRORS_TO', `postmaster')dnl
define(`confMIME_FORMAT_ERRORS', `False')dnl

FEATURE(notsticky)dnl
FEATURE(mailertable,hash -o /etc/sendmail/mailertable)dnl
FEATURE(always_add_domain)dnl
FEATURE(nodns)dnl
FEATURE(nocanonify)dnl

MAILER(local)dnl
MAILER(ftn)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl

Cwspi spi.rhein.de 
Cwp13 p13.flokiste.fido.de
Cwp13.f111.n2450.z2.fido.sub.de
Cwp13.f64.n100.z21.ger.sub.de

# define(`SMART_HOST', uucp-dom:rhein)
define(`SMART_HOST', ftn:f4.n5000.z2.fido.de)

LOCAL_RULE_3
# Route fidonet.org and fido.sub.org via FTN!
R$* < $* z2.fidonet.org > $*            $1 < $2 z2.fido.sub.de > $3
R$* < $* fido.sub.org > $*              $1 < $2 fido.sub.de > $3
Hier wird zunächst das Betriebssystem (Linux) definiert, anschließend wird definiert, daß alle MAILERDAEMON-Mails auch an postmaster geschickt werden, damit ich Fehler schnell finden und beheben kann. Anschließend werden einige Optionen angegeben, die meine genaue Konfiguration angeben, die Du aber so übernehmen kannst. Weiterhin werden die Mailer "local" (für Mails an User auf dem gleichen Rechner, welche mittels deliver ausgeliefert werden, das bei Slackware im Sendmail-Paket enthalten ist), "ftn" (Fido-compatible Netze via FidoGate), "smtp" (Transport über das Online-Mail-Protokoll SMTP) und "uucp" (Transport per UUCP) definiert. Die letzten beiden sind für ein System, das nur per FidoGate am Internet hängt nicht nötig, aber der Mailer "ftn" basiert auf ihnen (nur so konnten wir das ftn.m4 so kurz halten). In den mit Cw beginnenden Zeilen werden jetzt noch diverse Namen für meinen Rechner definiert.

Mit

 
define(`SMART_HOST', ftn:f4.n5000.z2.fido.de)
wird alle Mail, die nicht schon anders transportiert wird via FidoGate an meinen fido.de-Uplink geschickt. Wenn Du einen UUCP-Uplink hast, kannst Du diese Zeile durch
define(`SMART_HOST', uucp-dom:rhein)
ersetzen, dabei wird alles zu meinem UUCP-Uplink rhein geschickt.

Zum Ende von spinnaker.mc habe ich noch ein besonderes Schmankerl eingebaut:

LOCAL_RULE_3
# Route fidonet.org and fido.sub.org via FTN!
R$* < $* z2.fidonet.org > $*            $1 < $2 z2.fido.sub.de > $3
R$* < $* fido.sub.org > $*              $1 < $2 fido.sub.de > $3
Hier wird z2.fidonet.org in z2.fido.sub.de und fido.sub.org in fido.sub.de umgemappt, so daß alle Fido-Mails an die diversen Fido-Domains nach fido.sub.de geschickt werden, was dann per FTN (statt per UUCP o.ä.) verschickt wird. Dabei sollte man darauf achten, daß zwischen $* und $1 mindestens ein TAB stehen sollte (nicht nur Blanks).

Hierzu wird das oben definierte File /etc/sendmail/mailertable benötigt. In diesem File werden "Ausnahmen" vom Default-Routing angegeben, so z.B. auch das Routing über Fido.

 .fido.sub.de    ftn:f111.n2450.z2.fido.sub.de
 .fido.de        ftn:f111.n2450.z2.fido.sub.de
 .ger.sub.de     ftn:f64.n100.z21.ger.sub.de
 .z242.fido.de   ftn:f4.n5000.z242.fido.de
Wie man sieht werden alle Fido-Mails per ftn transportiert. Diese Mailertable muß nun noch nach jeder Änderung in eine Datenbank compiliert werden. Hierzu gibt man im Verzeichnis /etc/sendmail einfach folgendes Kommando ein:
makemap hash mailertable.db < mailertable
Sollte das die Fehlermeldung "makemap: Type hash not supported in this version" ausgegeben werden, hast Du vermutlich Slackware 3.0 installiert, welche aus mir unerklärlichen Gründen den Typ hash nicht verkraftet. Abilfe schafft das alternative Kommando
makemap dbm mailertable < mailertable
im selben Verzeichnis. Jetzt mußt Du allerdings auch spinnaker.mc ändern, damit dbm statt hash von sendmail erkannt wird. Du trägst dort jetzt in der mailertable-Zeile folgendes ein:
FEATURE(mailertable,dbm -o /etc/sendmail/mailertable)dnl
Dann sollte es keine Probleme mehr geben.

Nachdem spinnaker.mc jetzt fertig editiert ist, können wir daraus sendmail.cf erzeugen. Hierzu wechselt man ins Verzeichnis /usr/src/sendmail/cf/cf und gibt dort pmake spinnaker.cf ein. Daraufhin wird /usr/src/sendmail/cf/cf/obj/spinnaker.cf erstellt, welches man nach nach /etc/sendmail.cf schiebt und schon ist die Konfiguration fertig. Falls pmake nicht installiert sein sollte kann man stattdessen auch folgendes eingeben:

m4 spinnaker.mc > obj/spinnaker.cf
Abschließend mußt Du noch das ein Alias-File anlegen:
#
# /etc/aliases
#
# compile with 
#       newaliases
#
nobody: /dev/null
support: roland
admin: roland
operator: roland
Roland_Rosenfeld: roland
Roland.Rosenfeld: roland
postmaster: roland
faxadmin: roland
usenet: roland
sysop: roland
rosenfel: roland
rosenfeld: roland
roro: roland
uucp: roland
news: roland
Dieses File muß nach jeder Änderung mid dem Kommando newaliases in eine Datenbank compiliert werden.

Nun muß Sendmail nur noch als Daemon gestartet werden, was mithilfe des Kommandos

/usr/sbin/sendmail -bd -q20m
in /etc/rc.d/rc.local geschieht. Bei vielen Systemen ist selbiges auch schon in /etc/rc.d/rc.M angegeben, was ebenfalls möglich ist. Alternativ kann man sendmail auch per Cron starten und den inetd auf dem Port lauschen lassen. Hierzu trägt man in die Crontab des Users root folgendes zusätzlich ein:
*/20  * * * *   /usr/sbin/sendmail -q
und fügt in /etc/inetd.conf die Zeile
smtp  stream  tcp   nowait  root  /usr/sbin/tcpd  /usr/sbin/sendmail -bs
Anschließend das killall -1 inetd nicht vergessen, um inetd.conf neu einzulesen.

Sendmail schreibt seine Logmessages per syslog. Hierzu empfiehlt es sich, folgenden Eintrag in /etc/syslog.conf aufzunehmen:

mail.*                      /var/log/mail
Nicht vergessen, den syslogd nach dieser Änderung mit killall -1 behandeln, wie schon in der Konfiguration von ificio beschrieben.


Inhalt