E-Mail unter LINUX

Willemers Informatik-Ecke

Dies ist die Beschreibung einer Beispielkonfiguration. Das Ziel ist eine E-Mail Anbindung ans Internet für eine Linux-Workstation. Dabei sollten die E-Mail für alle Benutzer der Maschine zentral geholt und versandt werden. Als Distribution wurde S.u.S.E. 7.0 verwendet. Der Provider ist T-Online.

SMTP per sendmail

Der erste Schritt ist es, einen funktionierenden sendmail zu installieren. Dazu wird sendmail per YAST so vorkonfiguriert, dass ein SMTP verfügbar ist. Dies ist bei der LAN-Umgebung der Fall. Anschließend wird die /etc/sendmail.cd an einigen Stellen angepasst. Das Vorgehen wird in den Howtos beschrieben.
O DeliveryMode=deferred
# "Smart" relay host
DSsmtp.t-online
DMwillemer.de
Der DeliveryMode erreicht, dass Nachrichten nur noch versandt werden, wenn sendmail -q aufgerufen wird. DS beschreibt den Mailserver, an den abgehende Mails versandt werden. In diesem Fall wurde der smtprelay von T-Online verwendet, dadurch kann ich meine eigene Domain als Absender verwenden. Hinter DM steht die Absendeadresse. Dies kann eine komplette Adresse wie anton@foo.de sein oder eine Domäne wie willemer.de, die dann einfach an den Nutzernamen angehängt wird. So habe ich ein Account arnold auf dem Linuxsystem. Beim Senden macht sendmail daraus den Absender arnold(at)willemer.de. Da alle anderen Nutzer auf dem Gerät ebenfalls eine @willemer.de-Adresse haben, vereinfacht sich die Installation entsprechend.

Der Startaufruf der von sendmail bei Starten des Systems befindet sich in der Datei /sbin/init.d/sendmail, in anderen Distributionen wohl in /etc/init.d/sendmail. Dort sollten die Attribute des sendmail-Aufrufs auf "-bd -om" eingestellt werden. Unter S.u.S.E. ist das eine Environmentvariable im Skript.

Zum Test wird mit elm oder mail eine E-Mail an eine eigene Internetadresse geschrieben. Man wechselt zum root. Mit mailq sollte die Nachricht anschließend sichtbar sein. Jetzt wird die Verbindung geöffnet und mit sendmail -q das Senden erfolgt sein. Über einen Webmailer (z. Bsp. webmail.t-online.de) kann man anschließend prüfen, ob die Mail einwandfrei versendet wurde.

Auslesen der Internet Mailboxen (fetchmail)

Mit dem Programm fetchmail kann man Mailserver auslesen und die E-Mails ins lokale E-Mailsystem einspeisen.

Konfiguriert wird der Dienst über die Datei ~/.fetchmailrc des Benutzers root. Meine Maschine hat darin folgende Einträge:

poll pop3.web.de protocol POP3 user arnold.willemer password ****** is arnold
poll pop3.t-online.de protocol POP3 user willemer password . is arnold
poll pop.gmx.net protocol POP3 user andrea.willemer@gmx.de password ***** is andrea 
Beim T-Online Account ist das Auslesen nicht passwortgeschützt, da der Verbindgungsaufbau die Authentizität gewährleistet. Hier kann als Dummypasswort ein Punkt verwendet werden. In den anderen Mailboxen muss hier leider das Passwort im Klartext stehen. Die man-pages von fetchmail beschreiben zwar, dass man dies auch durch .netrc konfigurieren kann, aber leider ist mir das nicht gelungen.

Damit nicht jeder die Passwörter auslesen kann, muss die Datei mit chmod 710 .fetchmailrc für Fremde unlesbar gemacht werden.

Anschließend sollte der folgende Aufruf alle Mailserver abklappern und die E-Mails ins eigene Mailsystem stellen.

fetchmail -k -L /var/log/fetchmail
Damit man die E-Mails auch lesen kann, muss noch einmal sendmail -q durchgeführt werden. Der Parameter -k sorgt dafür, dass die Mails nicht auf dem Server nach dem Lesen gelöscht werden. Insbesondere in der Testphase eine hilfreiche Option. fetchmail liest nur ungelesene Mails. Sollen alle gelesen werden, verwendet man -a.

Automatisieren bei Internetverbindung

Bei jedem Aufbau einer Internetwählverbindung wird der Skript /etc/ppp/ip-up aufgerufen. Man kann an das Ende einfach folgende Befehle anhängen und es werden bei jedem Verbindungsaufbau die E-Mails zwischen lokalem System und Internet getauscht.
echo "Post holen..." >/dev/xconsole
fetchmail -k -L /var/log/fetchmail >/dev/xconsole
echo "Post senden..." >/dev/xconsole
sendmail -q

Homepage (C) Copyright 2001 Arnold Willemer