E-Mail mit Linux

Senden und Empfangen von eMails

Bei der Verwendung von eMails muß man unterscheiden zwischen den Programmen, die zur Erstellung einer Nachricht verwendet werden (MUAs, Mail User Agent) und den Prozessen, die dann für die Weiterleitung der erstellten Mail zuständig sind (MTA, Mail Transport Agent).

An MUAs steht eine große Auswahl zur Verfügung, z.B. mutt, pine, elm, emacs, auch der Netscape Navigator bzw. Communicator haben eingebaute MUAs.

Mit Linux ist es einfach möglich, ein Offline-eMail System zu konfigurieren. Mails lesen und schreiben erfolgt offline, d.h. kostensparend, nur zum Versenden und Abholen der Post wird die Verbindung kurz aufgebaut. Wenn es nicht zu viele eMails sind, dann geht der Austausch so schnell vor sich, daß nur eine Telefoneinheit verbraucht wird.

Versenden von eMails

Das Versenden von eMails übernimmt ein MTA über das Simple Mail Transport Protocol (SMTP). Bei der Wahl eines MTAs gibt es unter UNIX und Linux einen Standard: sendmail.

sendmail wird über eine einzige Konfigurationsdatei verwaltet, /etc/sendmail.cf. Allerdings ist die Konfiguration von sendmail nur etwas für ausgeglichene Zeitgenossen mit viel Ruhe und Selbstvertrauen. (Auch die Alternative "smail" ist nicht viel einfacher zu konfigurieren.) Meistens ist bei den Distributionen aber eine Beispielkonfiguration mitgegeben, z.B. eine Datei sendmail.smtp.cf.

Übernimmt man so eine Konfigurationsdatei unverändert, so hat man ein kleines Problem: als Absender der eMails wird nicht die zugeteilte Mailadresse des Providers (bzw. der gewählte Alias) verwendet, sondern der lokale Login- und Hostname des Linux-Systems.

Abhilfe läßt sich durch eine kleine User-Datenbank schaffen, in der die Daten für die Abbildung der lokalen UserId auf die ProviderId gespeichert ist. Nützlich ist das insbesondere, wenn der Linux-Rechner auch noch von einem anderen User mit eigenem Account verwendet wird, bei 1&1 gibt es mittlerweile ja mehrere eMail-Accounts mit verschiedenen Passwörtern. Mit der richtigen Konfiguration läßt sich sendmail überreden, sowohl das Versenden als auch das Empfangen von eMail in die richtigen Kanäle zu leiten.

Zwei Schritte sind also durchzuführen:

- Erstellen einer angepaßten Konfigurationsdatei für sendmail
- Erstellen einer User-Datenbank

Erstellen einer Konfigurationsdatei für sendmail

Die Konfigurationsdatei sendmail.cf ist zwar eine Textdatei, die mit einem Editor bearbeitet werden kann, zu empfehlen ist diese Vorgehensweise aber nicht. (Wer wissen will, warum, kann sich die Datei ja mal ansehen ...).

Am einfachsten geht das Erstellen der /etc/sendmail.cf mit YaST. Dazu wird die Konfigurationsdatei verändert.

SMTP="yes"
SENDMAIL_TYPE="yes"
SENDMAIL_SMARTHOST="mail.online.de"
SENDMAIL_LOCALHOST="localhost"
SENDMAIL_RELAY=""
SENDMAIL_ARGS="-bd -om"
SENDMAIL_EXPENSIVE="yes"
SENDMAIL_NOCANONIFY="yes"

Mit Hilfe das Makropakets m4 läßt sich sendmail.cf allerdings auch komfortabel wie folgt erstellen.

In dem Verzeichnis, in dem sich die Konfigurationsdateien mit Endung ".mc" befinden (bei mir ist das /etc/mail/linux.mc) erstellt man die Datei linux.my_smtp.mc mit folgendem Inhalt:

include(`../m4/cf.m4')
VERSIONID(`linux for smtp-only setup')dnl
OSTYPE(linux)dnl
FEATURE(nouucp)dnl
define(SMART_HOST, relay:mail.online.de)dnl
define(confCON_EXPENSIVE, True)dnl
MASQUERADE_AS(online.de)dnl
define(confUSERDB_SPEC, /etc/mail/userdb.db)dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
FEATURE(notsticky)dnl
FEATURE(local_procmail)dnl
MAILER(local)dnl
MAILER(procmail)dnl
MAILER(smtp)dnl

Die Bedeutung der einzelnen Einträge kann der geneigte Leser wieder dem Network Administrator's Guide entnehmen, eine Erläuterung würde an dieser Stelle zu weit führen.

Die Datei sendmail.cf wird durch einen Aufruf von m4 erzeugt:

$ m4 linux.my_smtp.mc > /etc/sendmail.cf

Damit kommen wir zum zweiten Streich:

Erstellen einer User-Datenbank

Die userdb.db muss folgenden Inhalt haben:

localuser:mailname eMailadresse
eMailadresse:maildrop localuser

"localuser" ist dabei durch den eigenen lokalen Login Namen zu ersetzen, "eMailadresse" durch den eMail Alias. Für jeden User-Account sind beide Abbildungsrichtungen anzugeben. Leerzeichen werden mit der Tabulatortaste gesetzt!

sendmail ist damit ausreichend konfiguriert, mit sendmail -q kann man Nachrichten, die ein MUA (z.B. elm) in die Ausgangs-Queue gestellt hat, versenden. Dieser Aufruf bietet sich z.B. in dem Script ip-up an.

eMails empfangen

Nachrichten, die der Provider für die eigene Benutzerkennung gesammelt hat, können über das POP3-Protokoll abgeholt werden. Zu diesem Zweck wird fetchmail verwendet. fetchmail braucht allerdings auch wieder eine Konfigurationsdatei, z.B. im eigenen home-Directory. Die Datei heißt .fetchmailrc und besteht aus nur einer Zeile:

poll pop.online.de protocol pop3 username "Benutzerkennung" password "Passwort" mda "/usr/bin/procmail -d User"

Optionen:
keep --> Nachrichten werden auf dem Server nicht gelöscht (zum testen!)
silent --> verhindert Statusmeldungen

Die Anführungszeichen um den eigenen Benutzernamen und das eigene Passwort müssen hier mit angegeben werden.

Bei bestehender PPP-Verbindung kann man durch Aufruf von fetchmail seine Post holen - im Fehlerfall kann man fetchmail mit der Option -v etwas gesprächiger machen.

eMail mit Netscape Navigator

Auch das Versenden und Empfangen der Post mit dem eMail-Client von Netscape sollte bei richtiger Konfiguration problemlos funktionieren. Als SMTP-Server trägt man "mail.online.de" ein, als POP-Server "pop.online.de". Damit eMails verzögert ausgeliefert werden können (d.h. erst wenn die Verbindung zum Provider aufgebaut ist), wird als SMTP Server localhost eingetragen.

Alle Beispiele sind noch für pop-und mail.online.de.
Bitte darauf achten, dass immer die jeweils aktuellen Servernamen verwendet werden
(z.B. pop.onlinehome.de).

Fehlermeldungen

Fehlermeldungen wie: "Hostname lookup failed" oder "Local configuration error" sind in der Suse-Supportdatenbank wunderbar dokumentiert.