Original in fr John Perr
fr to en: John Perr
en to de: Ralf Spenneberg
John verwendet Linux seit 1994; er ist einer der Editoren der französischen Ausgabe des LinuxFocus.
Dieser Artikel erklärt die Konfiguration von Sendmail und
Fetchmail auf einem lokalen Rechner der über eine PPP
Verbindung mit dem Internet kommuniziert. Eine derartige
Konfiguration erlaubt die Verwendung jedes UNIX E-mail-Clients
(nicht nur Netscape). Bei jedem Aufbau einer PPP Verbindung werden
die Nachrichten ausgetauscht.
Damit auf dem Linux Rechner überhaupt E-mails verwaltet
werden können, benötigt man einen Mail Transfer Agent
(MTA). Der bekannteste ist sicherlich Sendmail, aber es gibt eine
Reihe weiterer wie zum Beispiel qmail, welcher schneller und
einfacher zu konfigurieren ist, oder exim, der in Standard Debian
Konfigurationen enthalten ist. Wir werden uns in diesem Artikel
aber auf Sendmail beschränken und das Konfigurationskit der
Berkley Universität von Eric Allman verwenden.
Um die E-mails, die für uns bei unserem Internet Service
Provider (ISP) lagern abzuholen, benötigen wir
zusätzlich Fetchmail. Fetchmail wird diese E-mails abholen
und an das lokale Sendmail zur Weiterverarbeitung und Einordnung in
die lokalen Mailboxen übergeben. Fetchmail kann unter anderem
für diese Aufgabe die Protokolle pop-3 oder imap
einsetzen.
Zur Konfiguration von Sendmail ist die Installation folgender Pakete erforderlich (rpm Format):
In Abhängigkeit der verwendeten Distribution können sich die Namen leicht unterscheiden. Die Versionsnummern können ebenfalls abweichen. Tatsächlich erforderlich sind die ersten beiden Pakete.(Anmerkung des Übersetzers: Aktuell ist Sendmail 8.10. Es sollte mindestens Sendmail 8.9 installiert werden um die neuen Sicherheitsfeatures zu unterstützen)
Am einfachsten erfolgt nun die Konfiguration von Sendmail in den folgenden Schritten:
/usr/lib/sendmail-cf/cf/config.mc
mit folgendem
Inhalt:
# start of config.mcinclude(`../m4/cf.m4')dnl OSTYPE(`linux')dnl define(`SMTP_MAILER_FLAGS', `e9')dnl FEATURE(redirect)dnl FEATURE(nocanonify)dnl FEATURE(always_add_domain)dnl FEATURE(local_procmail)dnl GENERICS_DOMAIN(localhost.localdomain localhost localhost) FEATURE(genericstable)FEATURE(masquerade_envelope)dnl define(`confCF_VERSION',`dede's cf - 22/05/98')dnl define(`confCON_EXPENSIVE',`True')dnl define(`confME_TOO',`True')dnl define(`confCOPY_ERRORS_TO',`Postmaster')dnl define(`confDEF_CHAR_SET',`ISO-8859-1')dnl define(`confMIME_FORMAT_ERRORS',`True')dnl define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl define(`confTO_QUEUEWARN',`24h') MAILER(local) MAILER(smtp) # End of config.mc |
/etc/genericstable
:
dede: toto@isp.net root: toto@isp.net news: toto@isp.net |
/etc/alias
folgende Einträge existieren:
MAILER-DAEMON: postmaster postmaster: root |
/etc/nsswitch.conf
wie folgt:
passwd: files shadow: files group: files hosts: files dns services: files networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files netgroup: publickey: automount: files aliases: files |
/etc/sendmail.cf
mit:m4 config.mc > /etc/sendmail.cf
-rw------- 1 root root 26468 mai 12 22:52
/etc/sendmail.cf
/usr/bin/sendmail -bi -oA/etc/genericstable
/etc/genericstable.db
erzeugt
werden.newaliases
/etc/hosts
sollte eine der folgenden
Zeile ähnliche Zeile enthalten:127.0.0.1 localhost.localdomain localhost
localhost
kill `head -1 /var/run/sendmail.pid`
/usr/bin/sendmail -bd -os
Damit ist die Konfiguration von Sendmail abgeschlossen. Nun
sollte die Funktionsfähigkeit überprüft
werden:
Wir erzeugen eine Datei test.mail mit folgendem Inhalt:
Subject: Lokaler Test (leere Zeile) |
/usr/bin/sendmail -v dede < test.mail
Die folgenden Zeilen sollten angezeigt werden:
dede... Connecting to localdede... Sent
Nun läßt sich durch einen Aufruf von mail oder einem anderem E-mail Client (nicht Netscape) die Ankunft der E-mail kontrollieren.
Damit nun Netscape lokale E-mail liest konfigurieren wir es wie folgt:
Edit/Preferences/Mail & Groups/Mail
Server
localhost.localdomain
als
Outgoing mail (SMTP) server
movemail/built-in
als Mail
server type
/var/spool/mail
mit chmod 1777
/var/spool/mail
.Von nun an wird Netscape die E-mails direkt von dem PC empfangen, selbst wenn dieser nicht mit dem Internet verbunden ist. Natürlich lassen sich auch andere E-mail-Clients einsetzen, wie zum Beispiel XFmail, emacs, mutt, pine usw..
Bevor wir nun unseren E-mail Server im Internet ausprobieren,
müssen wir Fetchmail konfigurieren, damit es die für uns
bei unserem Provider gespeicherten E-mails abholt: Wir erzeugen eine
Datei .fetchmailrc in /home/dede:
poll pop.isp.net protocol POP3 user toto is dede password XXXXXXX |
Dabei sind toto und XXXXX die Anmeldekennung und das Kennwort
unseres E-mail Kontos bei pop.isp.net. Falls wir mehr als eine
Mailbox hätten, würden wir hier für jede Mailbox
einen derartigen Eintrag vornehmen.
Die Datei .fetchmailrc muß folgende Berechtigungen aufweisen,
damit Fetchmail sie nicht zurückweist:
-rw------- 1 dede dede 189 oct 6 21:45 /home/dede/.fetchmailrc
Nun zum echten Test:
mailq
Anschließend verbinden wir uns mit unserem ISP und
geben folgenden Befehl ein:
/usr/bin/sendmail -q
sendmail -q arbeitet den Queue ab und verschickt die E-mail.
Nach einiger Zeit sollte ein Aufruf von fetchmail
unsere E-mails abholen und wir sollte die E-mail von dem Spiegel
zurückerhalten. Wenn alle E-mails angekommen sind,
können wir die Verbindung zum ISP trennen.
Nachdem nun alles konfiguriert ist, wollen wir nun den
Prozeß so automatisieren, daß er automatisch bei jedem
Verbindungsaufbau durchgeführt wird.
Bei einem Verbindungsauf- bzw. Abbau werden von dem
PPP-Dämon die Dateien /etc/ppp/ip-up bzw, ip-down
ausgeführt. Zunächst kontrollieren wir, daß sich
in diesen Dateien folgende Zeile befindet oder fügen sie
an:
[ -x /etc/ppp/ip-down.local ] &&
/etc/ppp/ip-down.local $*
Die Ausführung der Dateien /etc/ppp/ip-up oder ip-down führt dann automatisch zum Aufruf der Dateien ip-up.local oder ip-down.local:
#!/bin/bash # /etc/ppp/ip-up.local #Record connection parameters echo `date` $4 $5 ppp-on >> /etc/ppp/history tail -n 1 Verbindungsfehler >> /etc/ppp/history # Send waiting mail echo Sende E-mail... >; /dev/console /usr/sbin/sendmail -q echo E-mail versandt. > /dev/console # Get mail waiting on the pop server echo Hole E-mail... > /dev/console fetchmail > /dev/console 2>&1 echo E-mail bekommen. > /dev/console #End exit 0 # end of /etc/ppp/ip-up.local |
Die beiden wichtigen Befehle in diesem Skript sind sendmail -q und fetchmail. Die anderen Befehle haben lediglich kosmetischen Charakter und erlauben:
#!/bin/bash # /etc/ppp/ip-down.local #Record connection parameters echo `date` ppp-off >> /etc/ppp/history #end exit 0 # end of /etc/ppp/ip-down.local |
Diese Dateien laufen in dem Benutzerkontext von
root
, daher muß die Datei .fetchmailrc
in
das /root
Verzeichnis kopiert werden.
Haben wir permanenten Zugang zu dem Internet so versendet
Sendmail die E-mails regelmäßig wenn es
folgendermaßen als Dämon gestartet wird:
sendmail -bd -q10m
So würde Sendmail alle 10 Minuten die E-mails versenden.
Fetchmail läßt sich ebenfalls so starten:
fetchmail -d 600
So würde Fetchmail eingehende E-mails alle 10 Minuten (600
Sekunden) abholen.
Üblicherweise werden derartige Befehle in den Start
(oder init) Dateien in den Verzeichnissen /etc/rc
oder
/etc/rc.d/
eingetragen.(Die exakten Namen der
Verzeichnisse hängen von der Distribution ab).
Eine derartige Konfiguration erlaubt das Senden der in dem
Mail-Queue (mailq
) wartenden E-mails und das Abholen
der bei dem Provider wartenden eingehenden E-mails. xbiff, xmailbox
oder ähnliche Software kann nun anzeigen, daß neue
E-mails eingegangen sind. Weiteres Feintuning ist mittels procmail
möglich. Dies wurde eingehend in folgendem Artikel
erklärt:November
1997 Artikel von Angel
Lopez.