Email Basics



In den Erklärngen zum "telnet"-Befehl haben wir schon kurz gelernt, wie unter unix-artigen Betriebssystemen, Mail von einem System zum anderen über das Internet geschickt wird. Jetzt wollen wir Mail unter Unix etwas genauer kennenlernen.
Ein klassisches Mail-Setup unter Unix besteht aus folgenden Teilen:

Am System läuft ein "mail transfer" Programm. Meist "sendmail" (aber es gibt auch andere wie "qmail", "exim" oder "postfix"). Dieses "sendmail" Programm wird von allen Programmen verwendet, um Mails wegzuschicken. Das "sendmail" Programm weiss anhand der Addresse was es mit den Mails tun soll: entweder:


* es handelt sich um eine Addresse die als "local" erkannt wurde und die Mail wird lokal einem Benutzer zugestellt. Dabei landet Mail meist in einem grossen "mailbox" File wie:
/var/spool/mail/maxmeier
("qmail" verwendet für jede Mailbox ein eigenes Verzeichnis). Vor der lokalen Zustellung werden noch systemweite "alias"-Namen umgesetzt: (üblicherweise in /etc/mail/aliases oder /etc/aliases) wo Alias-Namen für die User angegeben werden können.

Weiters kann jeder User in seinem Homeverzeichnis ein File mit dem Namen

.forward

haben, in dem in jeder Zeile definiert werden kann, an welche andere Mailaddresse eintreffende Mails weitergeleitet werden sollen.

* es handelt sich um eine Addresse eines dem Mailsystem "persönlich" bekannten Nachbarsystems. Sendmail kann dann auf verschiedenste Weisse versuchen die Mail an dieses System weiterzuleiten.

* mittlerweile werden aber die meisten Mails extern via Internet und dem SMTP Protokoll direkt ans Ziel geschickt.

Üblicherweise lauscht dieses Sendmail-Programm auch am "port 25" und nimmt eingehende Mails (die von anderen Sendmails zugestellt werden) entgegen. Diese werden dann ebenfalls entweder in eine lokale Mailbox eines Benutzers gestellt oder anhand obiger Regeln wieder weitergeleitet. (Das nennt man dann ein "mail relay". Nimmt das System eingehende Mails von Überall an egal Wohin entgegen, nennt man "promiscuous relay". Bis vor einigen Jahren waren praktisch alle Mailsysteme so eingestellt, mit der Zunahme von Spam muss man Heute alle Systeme einschränken)

Der Anwender greift typischerweise mit einem Mailprogramm auf das Mailbox-File zu, das Sendmail abgelegt hat. (Sendmail schreibt nicht direkt in die Mailbox sondern benutzt dazu meist ein Programm namens "deliver" oder "procmail")

Mailprogramme für Anwender sind entweder grafisch (es gibt inzwischen eine Menge davon) oder Text-orientiert. Erfahrene Unix-User bevorzugen die Text-orientierten Varianten. Meist entweder:

mutt (eine weiterentwicklung von "elm")

oder

pine

Daneben gibt es noch das ganz klassisches "Mail" Programm. Dieses kommt ohne ein echtes Terminal aus, liese sich also auch von einem Fernschreiber aus bedienen...falls man das mal braucht ;-)

Die Programme sind auch Kommandozeilen-fähig: so kann man z.B. mit:

echo hallo duda | mutt -s testmail maxmeier@irgendwo.at

eine Mail mit dem Inhalt "hallo duda" und dem Subject "testmail" an die Addresse "maxmeier@irgendwo.at" schicken. (vorausgesetzt, dass das "Mail" auf dem System auf dem man arbeitet, richtig eingerichtet wurde)

Ruft man "mutt" oder "pine" ohne Argumente auf, kommt man in einen interaktiven Modus in dem man alle vorhanden Mails anschaun kann, Mails schreiben kann und Mails in Folder ablegen kann, etc..

Für Leute, die noch keine Erfahrung mit "pine" haben, würde ich empfehlen, gleich mit "mutt" zu beginnen. Hier kurz die wichtigsten "mutt"-Befehle:

q .... quit. Beenden (oder aus dem lezten Menü aussteigen)

d .... delete. Mail löschen

r .... reply. Mail beantworten

RETURN .... Mail öffnen

s .... save. Mail speichern. Man muss eine Namen für einen Folder eingeben.

? .... Hilfe. (mit q wieder zurück ins Hauptfenster)

v .... view. Zeigt eine Liste aller Teile (Attachments) einer Mail an. Praktisch, wenn man die Attachments abspeichern will.

m .... neue Mail schreiben.

beim Schreiben neuer Mail macht "mutt" einen Editor auf. (Wenn man seine EDITOR-Variable richtig gesetzt hat, oder sein ".muttrc" File richtig eingestellt hat, öffnet es auch einen bevorzugten Editor).

Beendet man den Editor, ist man wieder zurück im "mutt"-Programm. Man kann dann:

e ..... erneut Editieren

s ..... subject ändern

c ..... cc ändern

t ..... "to"-Addresse ändern.

a ..... ein Attachment anhängen

y ..... yes. Endlich abschicken.

q ...... Abbrechen ("mutt" fragt ob man die Mail "postponen" will.. also später weiter bearbeiten. Dort kommt man mit "gross-R" rein)


Die meisten Verhaltensweisen von "mutt" sind extrem konfigurierbar und damit an eigene Bedürfnisse anpassbar. Dazu editiert man das File:

.muttrc

in seinem Homeverzeichnis. (Am Besten nimmt man sich das systemweite File als Vorlage oder eines der Files in
/usr/share/doc/mutt/examples (Gilt für die Debian-Distribution, andere Distributionen haben die "mutt"-Dokumentation zum Teil in anderen Verzeichnissen).

Soweit also zum klassischen Unix-Mail. Mit der weiten Verbreitung von Personal-Computer auf denen kein richtiges Mail system läuft, die auch nicht immer Online sind und keine fixe Addresse im Netz hatten, ergab sich das Bedürfnis, dass User ihre Mail auch dorthin zugestellt haben wollten. Die Lösung dafür ist:

das POP ("post office"-Protokoll)

User können ihre Mail mit ihrem Passwort von einem zentralen Server abholen. (es wird also nicht wie bei Sendmail aktiv zugestellt, sondern muss extra abgeholt werden. Weiters kann man i.a. auch nur wenige einzelne Email-Accounts über POP abwickeln und nicht gleich mail für eine ganze Domain.)

Nachteil: Zum Teil wäre es praktisch, die Mailboxen am Server zu lassen und nur einzelne Mails und Inhaltsverzeichnisse, etc.. abzuholen. Dazu gibt es ein Protokoll namens IMAP.

Manche Unix-Mailprogramme können direkt auf POP und IMAP Mailboxen zugreifen und sich Mail von dort abholen. Der bessere Weg ist aber i.a.:

das Programm

fetchmail

zu verwenden, um die Mail von einem POP oder IMAP-Account abzuholen und sie in ein lokales Sendmail reinzustopfen. Damit hat man wieder alle Möglichkeiten die "sendmail" bietet..

Ein File mit dem Namen

.fetchmailrc

und dem Inhalt:

poll pop.sil.at with protocol pop3:user mmeier20 there with password hierstehtdaspasswort is maxmeier here;

...sagt dem Programm "fetchmail", dass es bei jedem Aufruf die Mailbox am Server "pop.sil.at" mit dem "pop3" Protokoll nach Mail für den User "mmeier20" abfragen soll. Die Mail wird dann dem lokalen Sendmail an den User "maxmeier" zugestellt.

Ruft man jetzt periodisch (oder nach dem Einwählen per Modem).. "fetchmail" auf, so bekommt man seine Mails ins lokale Unix zugestellt. (wie man Programme generell periodisch aufruft, lernen wir demnächst)


EXERCISES:

* mach dich mit einem der Mailprogramme (am besten "mutt" oder "pine") vertraut.

* konfiguriere dir das Mailprogramm nach deinen Wünschen durch einstellen der Werte in ".muttrc" oder ".pinerc"

* sende Testmails von der Kommandozeile

* wenn du irgendwo einen POP-Account hast, den du auf deinem Unix Account lesen willst, dann richte dir ein ".fetchmairc" File ein.

REFERENCES:

man mutt

man muttrc

man pine

/usr/share/doc/mutt/examples/

/usr/share/doc/mutt/html

man fetchmail

man sendmail

man procmail