ABSTRACT: die grundlagen von mail unter unix werden erklaert. mit einem schwerpunkt auf "mutt" und kurzer erklaerung von fetchmail AUDIENCE: beginners SYSTEM: any unix SECTION: basic unix commands AUTHOR: mond COPYRIGHT: GNU Free Documentation Licence http://www.gnu.org/licenses/fdl.txt im CD ueber telnet haben wir schon kurz gelernt wie im unix mail von einem system zum anderen uebers internet geschickt wird. heute wollen wir mail unter unix etwas genauer kennenlernen. ein klassisches mail setup unter besteht aus folgenden teilen: am system laeuft 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 mail wegzuschicken. das sendmail programm weis 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 fuer jede mailbox ein eigenes verzeichniss) vor der lokalen zustellung werden noch systemweite alias namen umgesetzt (ueblicherweise in /etc/mail/aliases oder /etc/aliases ) wo alias namen fuer die user angegeben werden koennen. weiters kann jeder user in seinem homeverzeichniss ein file mit dem namen .forward haben in dem in jeder zeile drinnensteht an welche andere mail addresse mails weitergeleitet werden. * es handelt sich um eine addresse eines dem mailsystem "persoenlich" bekannten nachbarsystems. sendmail kann dann auf verschiedenste weisse versuchen die mail an dieses system weiterzuleiten. * heutzutage werden aber die meisten mails extern via internet und dem SMTP protokoll direkt ans ziel geschickt. ueblicherweise 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 ueberall an egal wo sie hingehen nennt man "promiscuous relay". bis vor einigen jahren waren praktisch alle mailsystem so.. mit der zuhname von spam muss man heute alle system einschraenken) der anwender greift typischerweise mit einem mailprogramm auf as 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 fuer anwendern sind entweder grafisch (es gibt inzischen 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 klassiches "mail" programm. das kommt ohne ein echtes terminal aus.. liese sich also auch von einem fernschreiber aus bedienen...falls man das mal braucht ;-) die programme sind auch kommandozeilenfaehig: 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. (vorausgesetz dass das mail auf dem system wo 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.. fuer leute die noch keine erfahrung mit pine haben wuerde ich empfaehlen gleich mit mutt zu beginnen. hier kurz die wichtigsten mutt befehle: q .... quit. beenden (oder aus dem lezten menue aussteigen) d .... delete. mail loeschen r .... reply mail beantworten RETURN mail oeffnen s .... save. mail speichern. man muss eine namen fuer einen folder eingeben. ? .... hilfe. (mit q wieder zurueck 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 auch den lieblingseditor) beendet man den editor ist man wieder zurueck im mutt programm. man kann dann: e ..... erneut editieren s ..... subject aendern c ..... cc aendern t ..... to addresse aendern. a ..... ein attachment anhaengen y ..... yes. endlich. abschicken. q ...... abbrechen (mutt fragt ob man die mail "postponen" will.. also spaeter weiter bearbeiten. dort kommtn man mit gross R rein) die meisten verhaltensweisen von mutt sind extrem configurierbar und damit an eigene beduerfnisse anpassbar. dazu editiert man das file: .muttrc in seinem homeverzeichniss. (am besten nimmt man sich da systemweite file als vorlage oder eines der file in /usr/share/doc/mutt/examples (debian, andere distributionen haben die mutt dokumentation zum teil in anderen verzeichnissen) soweit klassisches unix mail. mit der weiten verbreiten von personal computer auf denen kein richtiges mail system laeuft und die nicht immer online sind und keine fixe addresse im netz hatten ergab sich das problem dass user ihre mail auch dorthin zugestellt haben wollte. die loesung: das POP (post office protokoll) user koennen 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 ueber POP abwickeln und nicht gleich mail fuer eine ganze domain.) nachteil: zum teil waere 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 koennen direkte auf POP und IMAP mailboxen zugreifen und sich von dort mail 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 moeglichkeiten 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 fuer den user mmeier20 abfragen soll. die mail wird dann dem lokalen sendmail an den user maxmeier zugestellt ruft man jetzt periodisch (oder nach dem einwaehlen per modem).. fetchmail auf so bekommt man seine mail ins lokale unix zugestellt. (wie man programme generell periodisch aufruft lernen wir demnaechst) EXERCISES: * mach dich mit einem der mailprogramme (am besten mutt oder pine) vertraut. * konfiguriere dir das mailprogramm nach deinen wuenschen duch einstellen der werte in .muttrc oder .pinerc * sende testmails von der kommandozeile * wenn du irgendwo einen pop account hast die 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