Login
Newsletter
Werbung

Mo, 22. November 1999, 00:00

Lokaler Mailserver mit sendmail und fetchmail

Voraussetzungen

Wir benutzen Linux von der Deutschen Linux Distribution der Firma Delix Computer GmbH, Stuttgart, und zwar in der Version 5.3 Classic, wobei verschiede Pakete aktualisiert wurden, bzw. einige nicht von Delix stammen. Die unten aufgeführten Schritte sollten aber auf anderen Distributionen (Suse, Debian, Lunetix, etc.) mit leichten Anpassungen ebenfalls funktionieren. Alle Maschinen in unserem Netzwerk sind mit den Betriebssytemen Windows3.11, Windows95 oder Linux DLD 5.3 ausgestattet und haben TCP/IP installiert. Windows-Maschinen nutzen einen Samba-Server für File- (auch Homeverzeichnisse), Print- und WINS-Dienste, die Linux-Rechner beziehen /usr/local und die Homeverzeichnisse über einen NFS-Server. Der Autor setzt eine funktionierende Internetanbindung per ISDN oder Analog-Modem voraus, und diese Konfiguration ist nur sinnvoll bei einer Wählleitung!

Ziel der ganzen Übung

Das lokale Netz (Intranet) mit mehreren dezidierten Linux-Servern (Samba, Mail, Printing, WWW, Proxy etc.) ist am "richtigen" Internet über eine ISDN-Wählverbindung angeschlossen. Ein Verbindungsaufbau passiert nur während bestimmter Zeiten (Niedertarif und Informatikstunden) automatisch. Ein Lehrer kann den ISDN-Dienst beliebig ein- und ausschalten. Für ein brauchbares Emailsystem ist es wichtig, dass Mails nicht allzulange auf sich warten lassen. Daher wird bei dieser Installation die externe Mail periodisch mittels crontab-Eintrag abgearbeitet: Die lokale Mail wird alle fünf Minuten verteilt, externe (vom und zum Internet) wird nur dann bearbeitet, wenn eine Verbindung zum Internet schon besteht. Eine Ausnahme ist die schon erwähnte Abarbeitung der Mail mittels Cronjob. Hierbei wird eine Verbindung auf jeden Fall initiiert. Der Email-Server mail.oc.ch werkelt auf einem P-200 MHz mit 64 MB RAM und 4,3 GB HD zusammen mit dem Proxy Squid, dem lokalen WebServer Apache, einem Zeitserver und einem Caching-Only Nameserver. Er besitzt eine Teles 16.0 ISDN-Karte mit installiertem i4l-Paket.

Prinzip der Email

von Randolf Skerka in Internet Unplugged I, LinuxMagazin

»Email muß man sich als eine Datenübertragung zwischen Relaisstationen vorstellen, bei denen die Emails zunächst zwischengespeichert und später an die nächste Relaisstation weitergeleitet werden:

  1. Die Email wird geschrieben und landet zunächst in einem lokalen Zwischenspeicher (Mailspool) auf dem eigenen Rechner. Dort bleibt sie entweder solange, bis eine Verbindung zum Provider aufgebaut wird und sie an den Mailserver des Providers übergeben wird oder bis ein Timeout abgelaufen ist und die Email als "unzustellbar" markiert an den Absender zurückgesendet wird.
  2. Ist der Rechner mit dem Provider verbunden, werden alle im Mailspool befindlichen Emails an den Mailserver des Providers übergeben.
  3. Der Mailserver des Providers leitet die Email dann an den Mailserver des Providers des Empfängers oder direkt an den Empfängerrechner weiter.
  4. Der Empfänger holt sich die Email vom Spool-Verzeichnis des Providers und kopiert die für ihn bestimmten Emails in sein lokales Eingangs-Spool-Verzeichnis.

Somit sind vier Schritte notwendig, um eine Email vom Absender zum gewünschten Empfänger zu befördern. (Diese vier Schritte sind natürlich nur beispielhaft dargestellt und abhängig von der jeweiligen Mailkonfiguration).«

Aufgabe des lokalen MailServers mail.oc.ch

  • Verteilung von lokaler und externer Post in die entsprechenden Postfächer
  • POP3-Server für Email-Clients auf Linux-Workstations und Windows-Rechnern
  • Versenden von nicht-lokaler Post an den MailServer des Providers
  • Abholen von externer Post beim Provider
  • Spoolen der nicht-lokalen Post, bis eine Verbindung zum Provider besteht

Mail lokal bearbeiten

Dies erledigt Sendmail ganz alleine: Als Daemon gestartet, checkt es alle 5 Minuten die entsprechenden Verzeichnisse und liefert die Mails in den jeweiligen Postfächern ab.

Mail-Clients konfigurieren

Alle Email-Clients (Netscape auf Linux und Windows) werden so konfiguriert, dass sie nur noch mit dem lokalen Mailserver kommunizieren, d.h. als Mailserver wird mail.oc.ch mit dem Protokoll pop3 und als Standard-Email-Name der lokale Loginname mit Domain (user1@oc.ch) eingetragen. Um lokale User anzuschreiben, ist der voll qualifizierte Name nötig, also wiederum user2@oc.ch.

Sendmail-Konfiguration mit m4

  • Wir haben einen Caching-Only Nameserver installiert, aber Sendmail soll ihn nicht von vornherein benutzen. Somit müssen alle benötigten Adressen aller Mailserver bekannt sein und in der Datei /etc/hosts auch eingetragen werden. Die Adresse eines Rechners im Internet erfährt man mit `ping rechnername'.
  • In /etc wird ein Verzeichnis erstellt mit dem Namen mail (/etc/mail); hierin werden die Dateien userdb, die daraus generierte userdb.db, sendmail.mc, alias etc. kopiert.
  • Man kann die sendmail.cf auch von Hand ändern, wenn man genügend selbstquälerisch veranlagt ist. Das Paket m4 generiert eine sendmail.cf aus einer Datei mit Makro-Anweisungen.

Auf dem Rechner mail.oc.ch, unserem lokalen Mailserver, sollte die Konfiguration von Sendmail (/etc/mail/sendmail.mc) in etwa wie folgt aussehen:

# /etc/mail/sendmail.mc
divert(-1)
include(`voller pfad/m4/cf.m4')
# generelle einstellungen
VERSIONID(`mail.oc.ch local mailserver v0.1')dnl
OSTYPE(linux)dnl
# sendmail läuft auf linux
DOMAIN(oc.ch)dnl
# unser lokaler domainname
FEATURE(nouucp)dnl
# kein uucp
FEATURE(nodns)dnl
# keine nameserver-anfragen
FEATURE(always_add_domain)dnl
# immer den domainnamen hinzufügen
FEATURE(nocanonify)dnl
# kein kanonischer name suchen (frag nicht den dns)
MASQUERADE_AS(oc.ch)dnl
# maskierung mit oc.ch (wir spielen provider)
MASQUERADE_DOMAIN(oc.ch)dnl
# auch domain mit oc.ch maskieren
FEATURE(masquerade_envelope)dnl
# briefumschlag maskieren
# local macro definitions
define(`ALIAS_FILE',`/etc/mail/aliases')dnl
# klar
define(`LOCAL_RELAY', local:`localhost')dnl
# lokaler mailserver ist mail.oc.ch
define(`SMART_HOST', smtp:`rhone.ch')dnl
# internet mailserver ist rhone.ch
dnl
# (auch in /etc/host eintragen!
define(`confCOPY_ERRORS_TO', `postmaster')dnl
# fehler an postmaster = root (siehe aliasfile)
define(`confTO_QUEUERETURN', `1d')dnl
# nach 1 tag mail zurück als unzustellbar
define(`confUSERDB_SPEC',`/etc/mail/userdb.db')dnl
# adresskorrektur
define(`confCON_EXPENSIVE',`True')dnl
# unsere ppp-verbindung kostet was
define(`SMTP_MAILER_FLAGS',`e')dnl
# mach keine teuren verbindungen (sondern stelle
dnl
# mail nach aussen zurück, bis verbindung steht
define(`confSAFE_QUEUE',`True')dnl
# mails in die queue stellen (ist default bei sendmail)
define(`confHOSTS_FILE',`/etc/hosts')dnl
# klar
define(`confEIGHT_BIT_HANDLING',m)dnl
# wir möchten auch 8bit codierte mails
define(`confDEF_CHAR_SET',ISO-8859-1)dnl
# klar
LOCAL_USER(root)dnl
# post an root wird immer nur lokal behandelt
MAILER(local)dnl
# local protokoll
MAILER(smtp)dnl
# smtp protokoll
MAILER(pop)dnl
# pop3 protokoll, für pop3-clients (netscape, kmail etc)
# LOCAL_RULESET_*

Mit dem folgenden Befehl wird die sendmail.cf, die sendmail-Konfigurations-Datei, generiert:

cd /etc/mail/
m4 ./sendmail.mc > /etc/sendmail.cf

und der folgende aktualisiert die alias-Datenbank:

usr/bin/newaliases
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung