Linux E-Mail Administrator HOWTO <author> Guylhem Aznar (<tt>guylhem at metalab.unc.edu</tt>) und Christian Böttger (<tt>christian.boettger at linuxgazette.de</tt>) <date>v3.2, 6. Juni 2002</date> <abstract> Dieses Dokument beschreibt Setup, Pflege und Eingabe von elektronischer Post (E-Mail) unter Linux. Es ist vor allem für Administratoren gedacht, weniger für Benutzer. </abstract> <toc> <sect>Einführung, Copyright, und Disclaimer<p> <sect1> E-Mail und Spamming <p> Um eine E-Mail an jemanden, der in diesem Dokument erwähnt wird, zu senden, ändern Sie das »at« in der E-Mail Adresse in ein »@« um. Diese Konvertierung ist einfach für Menschen, nicht jedoch für die Adress-Sammler eines Spammers. Deshalb ist es nützlich, die generösen Mitarbeiter davor zu schützen, »zugespamt« zu werden. <sect1> Ziele <p> Die Intention dieses Dokuments ist die Beantwortung einiger Fragen und Kommentare, die wie eine Definition von »Frequently Asked Questions« - häufig gestellter Fragen - erscheinen, über E-Mail-Software unter Linux generell und die Versionen in den Linux Distributionen Debian und RedHat im Besonderen. <sect1> Neue Versionen <p> Neue Versionen dieses Dokuments und viele andere deutsche HOWTOs finden Sie im Internet unter: <tscreen><htmlurl url="http://www.linuxhaven.de/dlhp/" name="http://www.linuxhaven.de/dlhp/"></tscreen> <sect1> Feedback <p> Ich bin an jedem Feedback per E-Mail interessiert, positiv oder negativ, das den Inhalt dieses Dokuments betrifft. Kontaktieren Sie mich auf jeden Fall, falls Sie Fehler oder offensichtliche Auslassungen finden. Ich lese alle E-Mails, die ich erhalte, beantworte sie jedoch nicht notwendigerweise. Anfragen nach Verbesserungen werden erwogen und je nach der an dem Tag vorliegenden Kombination aus verfügbarer Zeit, Wert der Anfrage und dem täglichen Blutdruck behandelt :-). Wutausbrüche kommen still und leise nach <tt>/dev/null</tt>, also lassen Sie mich damit in Ruhe. <sect1> Danksagungen <p> Die folgenden Leute haben bei der Zusammenstellung der Informationen und Erfahrungen geholfen, die die Verwirklichung dieses Dokuments ermöglichen halfen: Steve Robbins, Ian Kluft, Rich Braun, Ian Jackson, Syd Weinstein, Ralf Sauther, Martin White, Matt Welsh, Ralph Sims, Phil Hughes, Scot Stevenson, Neil Parker, Stephane Bortzmayer und besonders vielen Dank an Vince Skahan für seine große Unterstützung. Eric S. Raymond bearbeite dieses Dokument, korrigierte einige Fehler und übertrug den Abschnitt über »Wie E-Mail funktioniert« aus seiner <em> <htmlurl url="http://www.metalab.unc.edu/LDP/HOWTO/Mail-User-HOWTO.html" name="Mail User HOWTO"></em>. Hitoshi Hayakawa prüfte den <tt>qmail</tt> Abschnitt, Jun Morimoto fügte verschieden Bemerkungen über <tt>popclient</tt> und <tt>fetchmail</tt> hinzu und Takeo Nakano hat das Dokument durch <tt>ispell</tt> geschickt. Falls ich jemanden vergessen habe, bitte ich um Verzeihung: Schreiben Sie mir einfach eine E-Mail. <sect1> Copyright <p> Dieses Dokument ist urheberrechtlich geschützt. Das Copyright für die englische <em>Mail-Administrator HOWTO</em>, auf der dieses Dokument basiert, liegt bei Guylhem Aznar. Das Copyright für die deutsche Version liegt bei Christian Böttger und Marco Budde. Das Dokument darf gemäß der GNU <em><htmlurl url="DE-GPL.html" name="General Public License"></em> verbreitet werden. Insbesondere bedeutet dieses, daß der Text sowohl über elektronische wie auch physikalische Medien ohne die Zahlung von Lizenzgebühren verbreitet werden darf, solange dieser Copyright-Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt und ausdrücklich erwünscht. Bei einer Publikation in Papierform ist das Deutsche Linux HOWTO Projekt hierüber zu informieren. <sect1> Eingeschränkte Garantie <p> Natürlich lehne ich jede potentielle Haftung für den Inhalt dieses Dokuments ab. Die Verwendung des Konzepts, der Beispiele und/oder jedes anderen Bestandteils dieses Dokuments erfolgt gänzlich auf eigene Gefahr. <sect> Andere Informationsquellen <p> <sect1>Mail User's HOWTO <p> Es gibt eine <em><htmlurl url="http://metalab.unc.edu/LDP/HOWTO/Mail-User-HOWTO.html" name="Mail User HOWTO"></em>, welche auf die Benutzerprobleme ausgerichet ist. Sie wird momentan von Eric S. Raymond gepflegt. <sect1> Usenet <p> Es gibt keine Besonderheiten für die Konfiguration und den Start von E-Mail Software unter Linux. Folglich wollen Sie ganz bestimmt <em>keine</em> Fragen mit allgemeinem E-Mail Bezug in den <tt>de.comp.os.unix.linux.*</tt> Newsgruppen posten. Posten Sie nicht in der <tt>de.comp.os.unix.linux</tt> Hierarchie, außer es ist wirklich spezifisch für Linux, z.B.: »Mit welchen Optionen wurde Debian 1.2 sendmail kompiliert?« oder »Wenn ich RedHat 5.0 smail starte, stürzt es ab.« Statt dessen sollten Fragen, die das Thema E-Mails betreffen, in der <tt>comp.mail.*</tt> Hierarchie gestellt werden, da sich diese Newsgruppen mit genau diesem Thema beschäftigen. Wenn Sie nicht Linux spezifische Fragen in <tt>de.comp.os.unix.linux.*</tt> posten, suchen Sie an der falschen Stelle nach Hilfe. Die E-Mail Experten treiben sich an den oben genannten Stellen herum und betreiben nicht zwangsläufig Linux. Empfehlenswerte Newsgruppen sind: <descrip> <tag><tt><htmlurl url="news:comp.mail.elm" name="comp.mail.elm"></tt></tag> Das ELM E-Mail System. <tag><tt><htmlurl url="news:comp.mail.mh" name="comp.mail.mh"></tt></tag> Das Rand Nachrichten Verarbeitungssystem. <tag><tt><htmlurl url="news:comp.mail.mime" name="comp.mail.mime"></tt></tag> Der MIME-Standard. <tag><tt><htmlurl url="news:comp.mail.misc" name="comp.mail.misc"></tt></tag> Allgemeine Diskussionen über Computer E-Mail. <tag><tt> <htmlurl url="news:comp.mail.multi-media" name="comp.mail.multi-media"></tt></tag> Multimedia E-Mail. <tag><tt><htmlurl url="news:comp.mail.mush" name="comp.mail.mush"></tt></tag> Die E-Mail Benutzer Shell (MUSH). <tag><tt> <htmlurl url="news:comp.mail.sendmail" name="comp.mail.sendmail"></tt></tag> Der BSD sendmail Vertreter. <tag><tt> <htmlurl url="news:comp.mail.smail" name="comp.mail.smail"></tt></tag> Der smail E-Mail Vertreter. <tag><tt> <htmlurl url="news:comp.mail.uucp" name="comp.mail.uucp"></tt></tag> E-Mail in der UUCP Umgebung. </descrip> <sect1> Mailinglisten <p> Es gibt viele sendmail, smail und qmail Mailinglisten. Die Adressen kann man in der Dokumentation unter <tt>/usr/share/doc/das_ausgewählte_Programm</tt> finden. <sect1> Andere Dokumente des LDP/DLHP <p> Es gibt jede Menge ausgezeichneten Materials, bereitgestellt durch andere Linux HOWTO Dokumente und vom Linux Dokumentationsprojekt. Vor allem werden Sie einen Blick auf das Folgende werfen wollen: <itemize> <item>auf dem eigenen Computer in <tt>/usr/share/doc/</tt> :-) <item><em>Linux Networking Administrator's Guide</em> <item><em><htmlurl url="http://www.ibiblio.org/mdw/HOWTO/Mail-User-HOWTO/index.html" name="Mail User HOWTO"></em> <item><em><htmlurl url="http://www.ibiblio.org/mdw/HOWTO/Serial-HOWTO.html" name="Serial HOWTO"></em> <item><em><htmlurl url="http://www.ibiblio.org/mdw/HOWTO/Ethernet-HOWTO.html" name="Ethernet HOWTO"></em> <item><em><htmlurl url="DE-UUCP-HOWTO.html" name="UUCP HOWTO"></em> (falls Sie via UUCP versorgt werden) </itemize> <sect1> Bücher <p> Das Folgende ist eine unvollständige Liste von hilfreichen Büchern: <itemize> <item>»<em>Managing UUCP and USENET</em>« von O'Reilly and Associates ist meiner Meinung nach das beste Buch da draußen, um die Programme und Protokolle, die bei einer USENET Seite einbezogen sind, zu begreifen. <item>»<em>Unix Communications</em>« von The Waite Group enthält eine nette Beschreibung aller Teile und wie sie zusammenpassen. <item>»<em>Sendmail</em>« von O'Reilly and Associates scheint die absolute Referenz für sendmail-v8 und sendmail+IDA zu sein. Es ist »Pflichtstoff« für jeden, der hofft, in sendmail einen Sinn zu erkennen, ohne währenddessen zu bluten. <item>»<em>The Internet Complete Reference</em>« von Osborne ist ein gutes Referenzbuch, das die verschiedenen, im Internet verfügbaren Dienste erklärt. Es ist zudem eine großartige Quelle für Informationen über News, E-Mail und verschiedene andere Internet Recourcen. <item>»<em>The Linux Networking Administrators' Guide</em>« von Olaf Kirch aus dem Linux Documentation Project ist im Netz verfügbar und wird außerdem in unveränderter und veränderter Version von verschiedenen Verlagen als gedrucktes Buch verkauft. Es beinhaltet einfach alles, was man sich je vorstellen konnte, über Netzwerke unter Unix wissen zu müssen. </itemize> <sect> Wie E-Mail funktioniert <p> Jetzt werden wir den Informationsfluß beschreiben, der üblicherweise stattfindet, wenn zwei Personen per E-Mail kommunizieren. Unterstellen wir, daß Alice von ihrem Computer <tt>wunderland.com</tt> eine E-Mail an Bob auf seinen Computer <tt>dobbs.com</tt> schicken will. Beide Maschinen sind mit dem Internet verbunden. Hilfreich zu wissen ist dabei, daß eine Internet E-Mail Nachricht aus zwei Teilen besteht: dem E-Mail Header und dem E-Mail Body, geteilt durch eine leere Zeile. Die E-Mail Header enthalten die Quelle und das Ziel der E-Mail, eine benutzerbestimmte Subjekt Zeile, das Sendedatum und verschiedene anderen Arten von nützlichen Informationen. Der Body ist der aktuelle Inhalt der Nachricht. Hier ein Beispiel: <tscreen><verb> From: "Alice" <alice@wonderland.com> Message-Id: <199711131704.MAA18447@wonderland.com> Subject: Hast du mein weißes Kaninchen gesehen? To: bob@dobbs.org (Bob) Date: Thu, 13 Nov 1997 12:04:05 -0500 (EST) Content-Type: text -- >>alice>> </verb></tscreen> Die Anordnung und die Bedeutung der Internet E-Mail Header sind durch einen Internet Standard, genannt <em><htmlurl name="RFC 822" url="ftp://ftp.isi.edu/in-notes/rfc822.txt"></em>, definiert. <sect1> E-Mail zwischen Vollzeit Internet Maschinen <p> Hier ist ein Diagramm des gesamten Vorgangs - die Etappen und die Terminologie werde ich unten erläutern. <p> <tscreen><verb> +---------+ +-------+ +-------+ tippt | sendet | ruft auf |sendet | | Alice |--------->| MUA |--------->| MTA |::::>:::: +-------+ | | | | :: auf der +---------+ +-------+ :: sendenden :: Maschine ....................................................................... SMTP :: ::::::::::::::::::::::::::::<:::::::::::::::::::::::::::: :: :: +---------+ +-----+ +-------+ :: |empfängt |ruft auf | | stellt zu an | Bobs | ::::>| MTA |--------->| LDA |===============>|Mailbox| auf der | | | | | | empfangenden +---------+ +-----+ +-------+ Maschine | | | | +----------------<-------------+ | | | +----------------+ +-------+ | | Bobs | | Bobs |<----------+ |Benachrichtigung| | MUA | +----------------+ +-------+ | | | +-----+ | +----->| Bob |<----+ +-----+ </verb></tscreen> Um eine E-Mail zu schicken, wird Alice ein Programm aufrufen, den »E-Mail User Agent« (oder »Mail User Agent«, Abkürzung: MUA). Der MUA ist das, was die Benutzer oft als »das E-Mail Programm« ansehen; es unterstützt Sie bei der Erstellung der Nachricht, gewöhnlich durch den Aufruf eines Texteditors eigener Wahl. Wenn Sie den »Senden« Button drücken, ist Ihr Teil der Arbeit getan. Später in dieser HOWTO werden wir einen Überblick über populäre MUAs geben. Der MUA, den Sie benutzen, übergibt ihre Nachricht sofort an ein Programm, das »E-Mail Transport Agent« (oder »Mail Transport Agent«, Abkürzung: MTA) genannt wird. Dieses Programm wird normalerweise <tt>sendmail</tt> sein, obwohl noch einige alternative MTAs an Popularität gewonnen haben und in zukünftigen Linux Distributionen auftauchen werden. Später in dieser HOWTO werden wir auch über die MTAs einen Überblick geben. Die Aufgabe des MTA ist die Übertragung der E-Mail an den MTA auf Bobs Maschine. Es ermittelt Bobs Maschine durch die Analyse des »To: «-Header und entdeckt das <tt>dobbs.com</tt> auf der rechten Seite von Bobs Adresse. Es benutzt diese Adresse, um eine Internet Verbindung zu Bobs Maschine zu öffnen. Die Mechanismen der Erstellung dieser Verbindung sind aber eine ganz andere Sache; für diese Erläuterung reicht es zu wissen, daß diese Verbindung für den MTA von Alice ein Weg ist, Textbefehle an Bobs Maschine zu senden und Antworten auf diese Befehle zu empfangen. Die Befehle des MTA gehen nicht an eine Shell. Statt dessen gehen sie an einen Sevice Port auf Alices Maschine. Ein Service Port ist eine Art Treffpunkt, ein bekannter Platz, an dem Internet Service Programme auf eintreffende Anfragen lauschen. Service Ports sind nummeriert und Alices MTA weiß, daß es mit Port 25 auf Bobs Maschine kommunizieren muß, damit die E-Mail durchgelassen wird. An Port 25 hat Bobs Maschine einen eigenen MTA, der auf Befehle lauscht (womöglich eine weitere Kopie von sendmail). Alices MTA arbeitet einen Dialog mit dem MTA vom Bob ab, indem es das Simple Mail Transport Protocol (einfaches E-Mail Protokoll, Abkürzung: SMTP) benutzt. So sieht ein SMTP Dialog aus. Zeilen, die von Alice's Maschine gesendet werden, sind mit einem »S:« markiert, Antworten von Bobs Maschine zeigen ein »R:«. <tscreen><verb> S: MAIL FROM:<alice@wunderland.com> R: 250 OK S: RCPT TO:<bob@dobbs.com> R: 250 OK S: DATA R: 354 Start mail input; end with <CRLF>.<CRLF> S: From: "Alice" <alice@wunderland.com> S: Message-Id: <199711131704.MAA18447@wunderland.com> S: Subject: Hast du mein weißes Kaninchen gesehen? S: To: bob@dobbs.org (Bob) S: Date: Thu, 13 Nov 1997 12:04:05 -0500 (EST) S: Content-Type: text S: S: Ich bin beunruhigt. Ich befürchte, er könnte ich ein Loch gefallen sein. S: -- S: >>alice>> S: . R: 250 OK </verb></tscreen> Gewöhnlich besteht ein SMTP Befehl aus einer einzigen Textzeile und ebenso seine Antwort. Der »DATA« Befehl ist eine Ausnahme; nachdem dieser erkannt wurde, akzeptiert der SMTP Listener Nachrichtenzeilen bis ein Punkt für sich allein in einer Zeile steht. SMTP wird durch den Internet Standard <em><htmlurl name="RFC 821" url="ftp://ftp.isi.edu/in-notes/rfc821.txt"></em> definiert. Jetzt hat Bobs MTA die Nachricht von Alice. Er fügt einen Kopf an die Nachricht, der so oder ähnlich aussieht: <tscreen><verb> Received: (from alice@wonderland.com) by mail.dobbs.com (8.8.5/8.8.5) id MAA18447 for bob@dobbs.com; Thu, 13 Nov 2001 12:04:05 -0500 </verb></tscreen> Das geschieht für Zwecke der Zurückverfolgung, für den Fall von E-Mail Fehlern (manchmal muß eine Nachricht durch mehr als eine Maschine übertragen werden und wird mehrere davon haben). Bobs MTA übergibt die veränderte Nachricht an einen »Local Delivery Agent« (lokaler E-Mail Zusteller, Abkürzung: LDA). Auf Linux Systemen ist der LDA gewöhnlich ein Programm namens <tt>procmail</tt>, obwohl es auch andere gibt. Die Aufgabe des LDA ist es, die Nachricht an Bobs Mailbox anzuhängen. Er ist vom MTA getrennt, so daß beide Programme einfacher gehalten sein können und der MTA sich darauf konzentrieren kann, seine »Internet-Dinge« zu tun, ohne sich um lokale Details zu kümmern, etwa wo die Mailboxen des Benutzers sind. Bobs Mailbox wird normalerweise eine Datei namens <tt>/usr/spool/mail/bob</tt> oder <tt>/var/mail/bob</tt> sein. Wenn er seine E-Mails liest, startet er seinen eigenen MUA, um in diese Datei zu sehen und sie zu editieren. <sect1>Benachrichtigung <p> Es gibt noch eine weitere Programmart, die in der E-Mail Kette wichtig ist, obwohl diese selbst weder E-Mails liest noch übermittelt. Es ist ein »Mail Notifier«, ein Programm, das Ihren E-Mail Eingangskorb auf Aktivität überwacht und Ihnen signalisiert, wenn eine neue E-Mail ankommt. Die ursprüngliche Benachrichtigung fand durch ein Paar von Unix Programmen, genannt <tt>biff(1)</tt> und <tt>comsat(8)</tt>, statt. Das Programm <tt>biff</tt> ist ein Frontend oder eine Bedienoberfläche, welche Ihnen erlaubt, den <tt>comsat</tt> Dienst einzuschalten. Wenn dieser Service aktiviert ist, wird der Kopf einer neuen Nachricht an Ihr Terminal ausgegeben, sobald sie eintrifft. Diese Möglichkeit war für Leute gedacht, die zeilenorientierte Programme auf Textkonsolen nutzen; in heutigen Umgebungen ist es keine wirklich gute Idee. Die meisten Unix Shells haben eine eingebaute Prüfungsmöglichkeit für E-Mails, die es ihnen erlaubt, eine Benachrichtigung in viel weniger aufdringlicher Art und Weise durchzuführen (durch Ausgabe einer Nachricht direkt vor dem Prompt, wenn neue E-Mails entdeckt werden). Typischerweise können Sie dies durch das Setzen von Umgebungsvariablen einschalten, die auf der Manual Page der Shell dokumentiert sind. Für Shells der <tt>sh</tt>/<tt>ksh</tt>/<tt>bash</tt> Familie sehen Sie unter den Variablen »MAIL« und »MAILPATH« nach. Systeme mit X11 Unterstützung haben eines von mehreren kleinen Desktop Tools, die regelmäßig nach neuen E-Mails sehen und Ihnen sowohl optisch als auch akustisch anzeigen, wenn es neue E-Mails gibt. Das älteste und am häufigsten verwendetste dieser Tools ist <tt>xbiff</tt>. Falls Ihr Linux ein vorkonfiguriertes X-Desktop Setup hat, ist <tt>xbiff</tt> vermutlich installiert. Sehen Sie in der <tt>xbiff(1)</tt> Manual Page nach Details. <sect1> E-Mail an zeitweise internetverbundene Maschinen senden <p> Falls Sie aufmerksam gelesen haben, wird Ihnen aufgefallen sein, daß der von uns beschriebene Informationsfluß davon abhängt, daß Alices Computer sofort mit Bobs Computer kommunizieren kann. Was passiert, wenn Bobs Computer abgeschaltet ist oder eingeschaltet ist, aber keine Internetverbindung besteht? Falls der MTA von Alice den von Bob nicht sofort erreichen kann, wird Alices Nachricht in einer E-Mail Warteschlange auf <tt>wunderland.com</tt> abgelegt. Er wird dann in regelmäßigen Abständen versuchen, die Nachricht erneut zu versenden, bis eine Ablaufzeit erreicht ist; an diesem Punkt wird Alice durch eine Rückmeldung von dem Mißerfolg informiert. In der Grundeinstellung des am meisten verbreitetsten MTA (<tt>sendmail</tt>) beträgt die Zeit erneuter Versuche 15 Minuten und der Ablaufzeitraum 4 Tage. <sect1> Ferne E-Mail und Fern-E-Mail Protokolle <p> Viele Linux Nutzer sind heutzutage über ISPs (Internet Service Provider) mit dem Internet verbunden und haben keine eigene Internetdomain. Statt dessen haben sie Benutzerkonten auf einer ISP Maschine. Ihre E-Mails werden an eine Mailbox auf diesem ISP Computer zugestellt. Aber üblicherweise wollen diese Benutzer ihre E-Mails mit ihren eigenen Computern lesen und beantworten, die zeitweise mit dem ISP verbunden sind, unter Benutzung von SLIP oder PPP. Linux unterstützt dafür Fern-E-Mail Protokolle. Beachten Sie den Unterschied zu dem Szenario, das wir im letzten Abschnitt besprochen haben. E-Mails, die in einer Warteschlange sitzen und eine erneute Übertragung abwarten, sind nicht das selbe wie E-Mails, die an eine Server Mailbox gesendet werden. E-Mails in einer Warteschlange können nicht als versendet angesehen werden und unterliegen der Verfallzeit. Dagegen sind an eine ISP Mailbox verschickte E-Mails als »ausgeliefert« anzusehen und können dort auf unbestimmte Zeit bleiben. Ein Fern-E-Mail Protokoll erlaubt, daß E-Mails von einem Server über eine Netzwerkverbindung durch ein Client-Programm gezogen werden (das ist das Gegenstück der normalen Auslieferung, wobei ein MTA die E-Mails an den empfangenden MTA schickt). Es gibt zwei gebräuchliche Fern-E-Mail Protokolle: POP3 (wird durch den Internet-Standard <em><htmlurl name="RFC 1939" url="ftp://ftp.isi.edu/in-notes/rfc1939.txt"></em> definiert) und IMAP (wird durch den Internet-Standard <em><htmlurl name="RFC 2060" url="ftp://ftp.isi.edu/in-notes/rfc2060.txt"></em> definiert). Tatsächlich unterstützen alle ISPs POP3, eine steigende Zahl unterstützt IMAP, welches mächtiger ist. Es folgt ein Beispiel, wie eine POP3 Sitzung aussieht: <tscreen><verb> S: <client connects to service port 110> R: +OK POP3 server ready <1896.697170952@mailgate.dobbs.org> S: USER bob R: +OK bob S: PASS redqueen R: +OK bob's maildrop has 2 messages (320 octets) S: STAT R: +OK 2 320 S: LIST R: +OK 2 messages (320 octets) R: 1 120 R: 2 200 R: . S: RETR 1 R: +OK 120 octets R: <the POP3 server sends message 1> R: . S: DELE 1 R: +OK message 1 deleted S: RETR 2 R: +OK 200 octets R: <the POP3 server sends message 2> R: . S: DELE 2 R: +OK message 2 deleted S: QUIT R: +OK dewey POP3 server signing off (maildrop empty) S: <client hangs up> </verb></tscreen> Eine IMAP Sitzung verwendet davon verschiedene Befehle und Antworten, aber es ist von der Logik her recht ähnlich. Um die Vorteile von POP3 oder IMAP zu genießen, benötigen Sie ein E-Mail Client Programm, um die E-Mails zu erhalten. Einige MUA haben Client-Fähigkeiten eingebaut (welche unterstützt werden, ist unten aufgelistet). Die E-Mail Fähigkeit des Netscape Browsers unterstützt sowohl POP als auch IMAP von Hause aus. Der Hauptnachteil von POP Clients, die in MUAs eingebaut sind, ist, daß man dem Mailprogramm explizit befehlen muß, den Server anzuwählen; man wird nicht von <tt>xbiff(1)</tt> oder ähnlichem benachrichtigt, ebensowenig wie für E-Mails, die entweder lokal oder durch eine konventionelle SMTP »push«-Verbindung ausgeliefert werden. Außerdem sind natürlich nicht alle MUAs POP/IMAP-fähig, so daß Sie für sich selbst wegen anderer Features Kompromisse finden können. Ihr Linux kommt wahrscheinlich mit einem Programm genannt <tt>fetchmail</tt>, das speziell dafür geschaffen wurde, um mit entfernten E-Mail Servern zu kommunizieren, E-Mails abzuholen und diese in Ihren Standard E-Mail Zustellpfad zuzustellen, indem es über SMTP mit Ihrem »listener« spricht. <tt>fetchmail</tt> ist unter folgender Adresse zu finden: <tscreen><htmlurl url="http://www.tuxedo.org/˜esr/fetchmail/" name="http://www.tuxedo.org/˜esr/fetchmail/"></tscreen> Bis auf die Fälle, in denen die E-Mails auf dem Server verbleiben sollen, weil z.B. mehrere Rechner zum Lesen der E-Mails verwendet werden, ist <tt>fetchmail</tt> möglicherweise eine bessere Lösung als die POP/IMAP Funktionen, die Ihr E-Mail Programm bietet. <tt>fetchmail</tt> kann aufgefordert werden, im Hintergrund zu laufen und periodisch auf den Server zuzugreifen, so daß <tt>xbiff(1)</tt> oder ein anderes E-Mail Benachrichtigungprogramm wie für SMTP E-Mails arbeiten können. Zudem ist <tt>fetchmail</tt> weit nachsichtiger gegenüber verschiedenen Eigenheiten und nicht standardisierten Server Launen als die Clients in MUAs und hat eine bessere Fehlerkorrektur. Das Diagramm zeigt, wie beide Fälle (mit und ohne <tt>fetchmail</tt>) arbeiten: <p> <tscreen><verb> +---------+ +---------+ +-------+ tippt |sendender| ruft auf |sendenden| | Alice |--------->| MUA |--------->| MTA |::>:::: +-------+ | | | | :: +---------+ +---------+ :: auf der :: sendenden SMTP :: Maschine ::::::::::::::::::::::::::::<:::::::::::::::::::::::::::: :: .::....................................................................... :: :: +------------+ +-----+ +-------+ :: |empfangender|ruft auf| | stellt zu | Bobs | ::::>| MTA |------->| LDA |============>|Server |:::>:::: | | | | an |Mailbox| :: auf dem +------------+ +-----+ +-------+ :: Mail :: Server POP oder IMAP :: ::::::::::::::::::::::::::::<::::::::::::::::::::::::::::::::::: :: .::....................................................................... . :: :: +-----------+ :: | | :::::::>::::::::::::| fetchmail |:::::::: auf der :: | | :: empfangenden :: +-----------+ :: Maschine, :: :: mit fetchmail :: ::::::::::::::::<::::::::::::::::::: :: :: :: :: +------------+ +-----+ +-------+ :: :: |empfangender| ruft auf | | stellt zu an | Bobs | :: ::::>| MTA |--------->| LDA |===============>|Mailbox| :: | | | | | | :: +------------+ +-----+ +-------+ :: | | :: | | :: +----------------<----------------+ | :: | | :: +---------------+ +-------+ | :: | Bobs | | Bobs |<-------------+ :: | Notifier | | MUA | :: +---------------+ +-------+ :: | | .::....................................................................... . :: . | | :: ohne . | | :: fetchmail . | | :: . | +-----+ | :: +----------+ . +----->| |<----+ :: | Bobs | . | Bob | :::::| POP/IMAP |----.--------->| | | MUA | . +-----+ +----------+ . </verb></tscreen> <sect1> Mailbox Formate <p> Wenn eingehende E-Mails an eine Mailbox angefügt werden, obliegt es dem MTA, einige Arten von Begrenzungszeichen anzubieten, die mitteilen, wo eine Nachricht endet und die nächste beginnt. Unter Unix nutzen nahezu alle E-Mail Programme die Konvention, daß in jede Zeile, die mit einem »From « beginnt (das Leerzeichen ist entscheidend), eine neue Nachricht anfängt. Wenn »From « am Beginn einer Zeile im Text erscheint, wird ein UNIX MTA sie normalerweise mit einem »größer-als« Zeichen signieren, so daß sie dann so aussieht: »>From «. RFC 822 Header folgen dieser »From« Zeile (welche gewöhnlich den Namen des Sendenden und das Empfangsdatum enthält). Diese Konvention entstammt der Unix Version 7, weshalb diese Art Mailbox als »V7 Mailbox« bezeichnet wird; manchmal heißt es auch »mbox Format«. Soweit nicht anders vermerkt, erwarten alle in dieser HOWTO erwähnten Programme dieses Format. Es ist nicht direkt universell, und Hilfsprogramme erwarten und erstellen verschieden Formate, so daß sie sich gegenseitig sehr verwirren können. Die vier anderen Formate, die bekannt sein sollten und vor denen man sich hüten sollte, sind BABYL, MMDF, MH und qmail maildir (E-Mail Verzeichnisse von <tt>qmail</tt>). Von diesen ist MMDF das einfachste. Es verwendet eine Begrenzungslinie, die aus vier Control-As (ASCII 001) gefolgt von einem Zeilenumbruch (CR-LF) besteht. MMDF war ein früher und recht primitiver Internet E-Mail Transport. Ein Nachfolger ist immer noch auf SCO Systemen in Benutzung. BABYL ist ein weiteres Überbleibsel eines frühen E-Mail Systems des MIT (Massachusetts Institute of Technology). Es wird immer noch von <tt>emacs</tt> im E-Mail Lesemodus verwendet. MH und qmail maildir sind »Mailbox« Formate, die jede Mailbox in ein Verzeichnis aus Dateien stürzen, eine pro Nachricht. Wenn <tt>grep</tt> auf so eine »Mailbox« angewendet wird, erhält man nichts, da alles, was <tt>grep</tt> zu sehen bekommt, Verzeichnisbits sind. Microsoft Outlock Express <tt>.mbx</tt> Mailboxen können in ein RFC 822 Format mittels des Programms <tt>mbx2mbox</tt> umgewandelt werden. <sect> Voraussetzungen <p> <sect1> Hardware <p> Es gibt keine besonderen Hardwarevoraussetzungen für E-Mail unter Linux. Man benötigt irgend eine Art »Transport« Software, um sich mit entfernten Systemen zu verbinden, was entweder TCP/IP oder UUCP bedeutet. Abhängig von Ihren Einstellungen bedeutet das, daß Sie entweder ein Modem oder eine Ethernet Netzwerkkarte benötigen. In den meisten Fällen werden Sie das schnellste Modem wollen, das Sie erhalten können, z.B. im Moment V90 57600 bps. Generell braucht man einen 16550 UART an der seriellen Schnittstelle oder eingebaut in das Modem, um Geschwindigkeiten über 9600 Baud handhaben zu können. Wenn Sie nicht wissen, was der letzte Satz bedeutet, konsultieren Sie bitte die Newsgruppe <tscreen><htmlurl url="news:comp.dcom.modems" name="comp.dcom.modems"></tscreen> oder die verschiedenen Modem und Serial FAQs sowie die periodischen Veröffentlichungen im USENET. <sect> Auswahl eines E-Mail Transportprogramms (MTA) <p> E-Mail Transportprogramme sind die Art von Software, die die E-Mails von Ihrem lokalen System an ein entferntes System überträgt. Es ist auf einem modernen Linux sehr selten, daß man mit dem MTA Ärger hat oder ihn auszutauschen muß. Und man tut besser daran, nichts zu reparieren, was nicht kaputt ist. Nichtsdestotrotz ist hier ein Überblick, um Sie an das Verstehen der Hauptpunke heranzuführen, falls Sie sich entscheiden, mehr Sicherheit oder Geschwindigkeit zu benötigen, als Ihre vorgegebenen Systemeinstellungen bieten können. (Es gibt daneben noch andere Unix MTAs, aber man wird sie schwerlich auf einer Linux Kiste antreffen.) Jedes hat seine eigenen einzigartigen Eigenschaften, aber der beste Kompromiß ist <tt>qmail</tt>. Es bietet hohe Sicherheit (obwohl <tt>vmail</tt> sicherer ist), große Geschwindigkeit (obwohl <tt>smail</tt> schneller für lokale Benutzer ist) und leicht einzustellen. Natürlich steht es Ihnen frei, eine andere E-Mail Software zu benutzen. Die hier gebotenen Informationen werden Ihnen helfen, eine gute Wahl zu treffen. <tt>sendmail</tt> kann sehr gut für viele Seiten mit komplizierten Optionen sein, aber ich denke, seine Konfiguration ist zu schwer für Anfänger, während es nicht sehr sicher oder sehr schnell ist, so daß es nur einen <em>wirklich</em> veralteten <tt>sendmail</tt> Abschnitt in dieser HOWTO gibt. Falls Sie wissen, was Sie tun, wählen Sie <tt>sendmail</tt> (dann sollten Sie nicht diese HOWTO lesen), ansonsten empfehle ich generell <tt>qmail</tt>. Engehende Beschreibungen dieser Programme folgen. <sect1> sendmail <p> BSD <tt>sendmail</tt> ist der Großvater der Internet MTAs. Es hat einige mögliche Gewinner überlebt. Die meisten Linux Distributionen benutzen es jetzt und haben es vorinstalliert. <p> <tt>sendmail</tt> hat eine langjährige Reputation, ein Alptraum für Administratoren zu sein -- schwer verständlich, knifflich zu konfigurieren, voll von Sicherheitslöchern. Als die Internettechnologie und -standards sich stabilisiert hatten, endeten viele der <tt>sendmail</tt> Optionen und Einstellungsregeln, die den Aufstieg dieses Rufs, wie auch immer, verursachthatten, um ein Zerren je Seite erforderten (das effektive Ende der nicht-TCP/IP Netzwerk Schichten, wie UUCP hat eine Menge geholfen). Auch haben jüngere <tt>sendmail</tt> Versionen ein verbessertes Konfigurationssystem, das Sie von der legendären Grauenhaftigkeit der Konfigurationsdatei <tt>sendmail.cf</tt> fernhält. Am wichtigsten ist, daß <tt>sendmail</tt> nun normalerweise vorkonfiguriert kommt und Sie diese nie anzurühren brauchen, außer Sie haben ungewöhnliche Ansprüche (wie etwa der Bedarf, E-Mails überein nicht-TCP/IP Netzwerk zu übertragen). <p> Es gibt eine <tt>sendmail</tt> Homepage unter: <tscreen><htmlurl url="http://www.sendmail.org/" name="http://www.sendmail.org/"></tscreen>. Sie beinhaltet Verweise zu einer ausführlichen <tt>sendmail</tt> Dokumentation, sollten Sie gerade mit einer angepaßten Konfiguration ringen. <p> Andere MTAs, wenn sie als »<tt>sendmail</tt>« bezeichnet werden, mögen die Semantik der <tt>sendmail</tt> Befehlszeilenoptionen nachahmen. Dies ist praktisch für E-Mail Programme, die oft erwarten, mit <tt>sendmail</tt> zu kommunizieren. <sect1> smail v3.2 <p> <tt>smail</tt> war der erste ernste Versuch, <tt>sendmail</tt> zu ersetzen. Es hat ein einfacheres und sehr viel verständlicheres Konfigurationssystem als <tt>sendmail</tt> und ist ziemlich sicher. Einige Linux Distributionen vorinstallieren es eher als <tt>sendmail</tt>. <p> Zu einer Zeit war <tt>smails</tt> exzellente Unterstützung für gemischte TCP/IP und UUCP Seiten sein Hauptverkaufspunkt, aber als UUCP verblaßte, geschah das auch mit <tt>smail</tt>. <p> Wie bei <tt>sendmail</tt> ist es unschön, daß Sie an einer vorinstallierten <tt>smail</tt> Konfiguration zerren müssen. <p> Sehr selten könnten Sie in Verweisen auf eine »<tt>smail 2.5</tt>« stoßen. Dieses Programm ist seit langer Zeit bereits obsolet. Beschäftigen Sie sich nicht damit. <sect1> qmail <p> Das Programm <tt>qmail</tt> ist ein zu <tt>sendmail</tt> kompatibler MTA, speziell für hohe Sicherheit gestaltet. Der Autor hat eine Belohnung von $500 für die Veröffentlichung des ersten nachweisbaren Sicherheitslochs ausgelobt. Diese Belohnung wurde seit März 1997 nicht abgeholt. Die <tt>qmail</tt> Homepage ist unter <tscreen><htmlurl url="http://pobox.com/˜djb/qmail.html" name="http://pobox.com/˜djb/qmail.html"></tscreen> erreichbar. <sect1> exim <p> Das <tt>exim</tt> Programm ist ähnlich wie <tt>smail3</tt>, aber mit mehr Möglichkeiten. Es bietet teilweise Stärken im Abblocken von Spams und unterstützt verschiedene virtuelle Hosts (virtuelle DNS Domains) auf demselben Host. Die <tt>exim</tt> Homepage lautet: <tscreen> <htmlurl url="http://www.exim.org/" name="http://www.exim.org/"></tscreen> Ich probierte es auf meinem eigenen Computer aus, es sieht aus wie eine nette Mischung zwischen dem <tt>smail</tt> Konfigurationssystem und der <tt>qmail</tt> Sicherheit, überdies mit dem Vorteil, unter der GPL zu stehen. Ein Abschnitt, der erklärt, wie Ihr momentaner MTA durch <tt>exim</tt> ersetzt werden kann, wird demnächst hinzugefügt. <sect> Installation von Transportsoftware <p> <sect1> qmail v1.03<p> Sicher, schnell und einfach zu benutzen, das ist mein bevorzugter MTA (= »Mail Transport Agent« E-Mail Transportprogramm). Momentan bietet keine Distribution eine Vorinstallation von <tt>qmail</tt>. Wir konzentrieren uns auf das Kompilieren und Installieren von <tt>qmail</tt>, da dies der einzige knifflige Teil ist: die Konfiguration ist ziemlich geradlinig. <sect2> qmail beziehen <p> Besuchen Sie <tscreen><htmlurl url="http://www.qmail.org/" name="http://www.qmail.org/"></tscreen> um die letzte Version herunterzuladen. <sect2> Dekomprimieren der Quellen <p> Danach werden sie ausgepackt durch Start von: <tscreen><verb> mv qmail.tar.gz /usr/local/src cd /usr/local/src ; tar -zxvf qmail.tar.gz </verb></tscreen> Falls Sie eine »bz2« Version finden (ein neueres und besseres Packformat), ersetzen Sie <tt/tar/ einfach durch: <tscreen><verb> bunzip2 qmail.tar.bz2 tar -xvf qmail.tar </verb></tscreen> <sect2> Vorbereitung der Übersetzung <p> Jetzt wechseln Sie in das <tt>qmail</tt> Verzeichnis, um die Konfigurationsvorgaben einzusehen: <tscreen><verb> cd qmail; more conf-* </verb></tscreen> Sie sollten keine Vorgaben ändern müssen, aber Sie können z.B. ein alternatives Installationsverzeichnis angeben oder bessere <tt>flags</tt> zur Kompilierung setzen. Jetzt rufen Sie <tscreen><verb> mkdir /var/qmail </verb></tscreen> auf, um das Zielverzeichnis zu erstellen. Wenn Sie keine Debian Distribution installiert haben, müssen Sie einige Benutzer IDs für die Benutzung von <tt>qmail</tt> hinzufügen: <tt>qmail</tt>s hohe Sicherheit hängt davon ab. Die Tatsache, daß <tt>qmail</tt> in Module aufgeteilt ist, die je unter ihrer eigenen Benutzer ID laufen, macht es wesentlich schwerer für einen Endringling, in Ihr gesamtes E-Mail System einzubrechen oder root Zugang durch Mißbrauch zu erhalten. Also starten Sie: <tscreen><verb> # groupadd nofiles # useradd -g nofiles -d /var/qmail/alias alias # useradd -g nofiles -d /var/qmail qmaild # useradd -g nofiles -d /var/qmail qmaill # useradd -g nofiles -d /var/qmail qmailp # groupadd qmail # useradd -g qmail -d /var/qmail qmailq # useradd -g qmail -d /var/qmail qmailr # useradd -g qmail -d /var/qmail qmails </verb></tscreen> Oder bearbeiten Sie <tt>/etc/passwd</tt> und <tt>/etc/group</tt> von Hand, um diese Benutzer selbst anzufügen. Evan E. berichtete, er mußte den »-g groupid« Parameter für ein Vanilla <tt>groupadd</tt> (Caldera 1.2) benutzen, da ansonsten <tt>groupadd</tt> folgenden Fehler ergab: »Eine Gruppe mit diesem Namen existiert bereits.« Sie können zum Beispiel dementsprechend hinzufügen: <tscreen><verb> qmail:*:2107: nofiles:*:2108: </verb></tscreen> und <tscreen><verb> alias:*:7790:2108::/var/qmail/alias:/bin/true qmaild:*:7791:2108::/var/qmail:/bin/true qmaill:*:7792:2108::/var/qmail:/bin/true qmailp:*:7793:2108::/var/qmail:/bin/true qmailq:*:7794:2107::/var/qmail:/bin/true qmailr:*:7795:2107::/var/qmail:/bin/true qmails:*:7796:2107::/var/qmail:/bin/true </verb></tscreen> Jetzt können Sie <tscreen><verb> make setup check </verb></tscreen> aufrufen, um Ihre Einstellungen zu prüfen, dann <tscreen><verb> ./config </verb></tscreen> um <tt>qmail</tt> zu konfigurieren. Achtung, Ihr Server muß über DNS auflösbar sein, oder <tt>./config</tt> wird verwirrt werden. Falls Sie keinen DNS Zugang haben, können Sie Ihren Servernamen direkt per <tscreen><verb> ./config-fast foo.bar.com </verb></tscreen> angeben. Nun müssen Sie einige Alias Namen installieren, da <tt>/etc/alias</tt> nicht von <tt>qmail</tt> verwendet wird, bis Sie ein optionloses Paket kompilieren und installieren. Hier ist mein Setup: <tscreen><verb> File : ".qmail-MAILER-DAEMON" &postmaster File : ".qmail-bin" &root File : ".qmail-daemon" &root File : ".qmail-decode" &root File : ".qmail-dumper" &root File : ".qmail-games" &root File : ".qmail-ingres" &root File : ".qmail-mailer-daemon" &postmaster File : ".qmail-manager" &root File : ".qmail-news" &root File : ".qmail-nobody" &root File : ".qmail-operator" &root File : ".qmail-postmaster" &root File : ".qmail-root" &guylhem File : ".qmail-system" &root File : ".qmail-toor" &root File : ".qmail-uucp" &root File : ".qmail-uucp-default" |preline -dr /usr/bin/uux - -r -gC -a"${SENDER:-MAILER-DAEMON}" lm!rmail "($DEFAULT@$HOST)" </verb></tscreen> Sie müssen jede dieser Dateien in <tt>˜alias</tt> erstellen, wobei <tt>&guylhem</tt> in <tt>.qmail-root</tt> durch Ihr eigenes Login für root E-Mail ersetzt werden muß. Eine Warnung an UUCP Benutzer: Vertrauen Sie nicht der <tt>qmail</tt> FAQ für UUCP; benutzen Sie statt dessen meine <tt>.qmail-uucp-default</tt>. Ansonsten sind Sie nicht in der Lage, irgend welche E-Mails über Ihre UUCP Verbindung zu senden. Sie werden sich jetzt entscheiden müssen, in welchem Format Ihre Benutzer ihre E-Mails erhalten werden. Hier ist mein Vorschlag: <itemize> <item> Für Heimatverzeichnisse, eingebunden im NFS Format, verwenden Sie das MAILDIR Format mit einem Patch für lokale E-Mail Leser. Patches sind unter <tscreen><htmlurl url="http://www.qmail.org/" name="http://www.qmail.org"></tscreen> erhältlich. <item> Falls kein Patch verfügbar ist, bevorzugen Sie das MAILFILE Format: jedes E-Mail Leseprogramm kann eine Datei, die E-Mails enthält, lesen. Die Anwender müssen nur einen Alias (für die Bash) oder ein <tt>setenv</tt> (für csh) für ihren E-Mail Leser erstellen. <item> Vermeiden Sie das <tt>/var/spool/mail/$Benutzer</tt> Format, da zu unsicher. </itemize> Um das Standardformat festzulegen, lesen Sie jede Datei in <tt>/var/qmail/boot</tt>, kopieren danach die, die Ihnen am besten gefällt, nach <tt>/var/qmail/rc</tt>. <tt>/home/</tt> oder <tt>/proc/</tt> sind eine sichere Wahl, aber bevorzugen Sie <tt>/home/</tt> aus Sicherheitsgründen. <sect2> Konfigurierung von qmail <p> In der Datei <tt>/var/qmail/control</tt> müssen einige Optionen angepaßt werden. <sect3> defaultdomain, me, plusdomain <p> <descrip> <tag>me</tag> ist Ihr »Full Qualified Domain Name« (voll qualifizierter Domainname, Abkürzung: FQDN), zum Beispiel lautet er auf meinem Computer <tt>barberouge.linux.lmm.com</tt> <tag>defaultdomain</tag> wird an jeden Hostnamen ohne Punkte angefügt, einschließlich defaulthost. Zum Beispiel können Sie es auf <tt>localnetwork</tt> setzen, so daß jede E-Mail, gesendet an »joe@seinpostfach« statt dessen ergänzt wird, um an »joe@seinpostfach.lokalesnetzwerk« gesendet zu werden. <tag>plusdomain</tag> ist die Ausnahme: es wird an jeden Hostnamen angefügt, der mit einem Plus-Zeichen endet, eingeschlossen defaulthost (gesetzt in <tt>me</tt>, falls es mit einem Plus-Zeichen endet). </descrip> Diese drei Beispiele zeigen Ihnen die Macht und Leichtigkeit der <tt>qmail</tt> Konfiguration. <sect3> locals, rcpthosts <p> Falls Sie virtuelle Domainnamen unterstützen wollen, fügen Sie einfach zusätzliche Namen in diesen Dateien hinzu. Jede E-Mail, die Sie für diese Namen erhalten, wird lokal behandelt. Der Unterschied zwischen <tt>locals</tt> und <tt>rcpthosts</tt> ist, daß letztere nicht als lokale Aliases betrachtet werden, was nützlich ist, falls Sie E-Mails von einigen kostenlosen E-Mail Adressen wie <tt>yahoo.com</tt> oder <tt>gmx.de</tt> erhalten, während Sie auch E-Mails an andere Benutzer dieser nicht-lokalen Dienste senden, d.h. Sie wollen keine als lokal behandelten E-Mails an jemand@yahoo.com senden! <sect3> virtualdomains<p> Dort können Sie den Standardmodus für den Ausgang bestimmen, z.B. <tscreen><verb> #:alias-uucp </verb></tscreen> wenn Sie abgehende E-Mails nicht per UUCP, sondern per SMTP (Vorgabe) senden wollen: <tscreen><verb> :alias-ucp </verb></tscreen> <sect2> qmail Test <p> Nachdem nun alles konfiguriert ist, versuchen Sie <tscreen><verb> sh -cf '/var/qmail/rc &' </verb></tscreen> um <tt>qmail</tt> zu starten (es wird den lokalen MTA nicht beeinträchtigen), dann <tscreen><verb> echo to: meinylogin | /var/qmail/bin/qmail-inject </verb></tscreen> Sie sollten diese E-Mail in dem von Ihnen in <tt>/var/qmail/boot/</tt> gewählten Format erhalten. <sect2> Entfernen Ihres anderen MTA <p> Wenn dieser Test erfolgreich verlaufen ist, beenden Sie Ihren frühreren MTA: <tscreen><verb>killall -STOP daemon_name</verb></tscreen> Falls irgendwelche Child-Prozesse laufen, sollten Sie <tscreen><verb>killall -CONT their_name</verb></tscreen> abwarten, noch einmal <tscreen><verb>killall -STOP</verb></tscreen> wiederholen und solange wie nötig wiederholen. Wenn es keine Child-Prozesse gibt <tscreen><verb>killall -TERM</verb></tscreen> und dann <tscreen><verb>killall -CONT</verb></tscreen> Entfernen Sie den MTA. Wie man das anstellt, hängt von der installierten Distribution ab, zum Beispiel <tscreen>rpm -e --nodeps</tscreen> bei RedHat, Caldera und SuSE, oder <tscreen>dpkg -r --force-depends</tscreen> bei Debian. Danach starten Sie: <tscreen><verb> # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail </verb></tscreen> Nun setzen Sie »qmail-smtpd« in <tt>/etc/inetd.conf</tt> ein (alles auf einer Zeile): <tscreen><verb> smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd </verb></tscreen> Falls Sie eine alte »nicht-SYSV-init« Distribution wie RedHat einsetzen, fügen Sie einfach in die Startskripte ein: <tscreen><verb> sh -cf '/var/qmail/rc &' </verb></tscreen> Diese sollten sich gewöhnlich in <tt>/etc/local</tt> befinden, aber Ihr Aufwand mag variieren. Für aktuelle »SYSV-init« fähige Distributionen (RedHat, Caldera, SuSE, Debian) fügen Sie dieses Skript zu <tt>/etc/init.d</tt> oder <tt>/etc/rc.d/init.d/</tt> hinzu: <bf>Debian Version:</bf> <tscreen><verb> #!/bin/sh test -x /var/qmail/rc || exit 0 case "$1" in start) echo -n "Starte MTA: " sh -cf '/var/qmail/rc &' echo "qmail." ;; stop) echo -n "Stoppe MTA: " killall qmail-lspawn echo "qmail." ;; restart) echo -n "Starte erneut MTA: " killall -HUP qmail-lspawn killall -ALRM qmail-lspawn echo "qmail." ;; *) echo "Verwendung: /etc/init.d/qmail {start|stop|restart}" exit 1 esac exit 0 </verb></tscreen> <bf>RedHat Version:</bf> <tscreen><verb> #!/bin/sh # # qmail Dieses Shell Skript sorgt für Start und Halt von qmail. # # Beschreibung: qmail ist ein E-Mail Transportprogramm, welches ein Programm # ist, daß E-Mails von einer Maschine zu einer anderen # transportiert. # Prozeßname: qmail # config: /var/qmail/control/ # Funktionsbibliothek Quelle. . /etc/rc.d/init.d/functions # Netzwerkskonfiguration Quelle. . /etc/sysconfig/network export PATH=$PATH:/var/qmail/bin # Prüfe, daß das Netzwerk läuft. [ ${NETWORKING} = "no" ] && exit 0 [ -f /usr/sbin/sendmail ] || exit 0 # Sieh nach, wie wir genannt werden. case "$1" in start) # Starte Daemon. echo -n "Starte qmail: " qmail-start '|preline procmail' splogger qmail & touch /var/lock/subsys/qmail echo ;; stop) # Stoppe Daemon. echo -n "Schließe qmail ab: " killproc qmail-lspawn echo rm -f /var/lock/subsys/qmail ;; restart) $0 stop $0 start ;; status) status qmail ;; *) echo "Verwendung: qmail {start|stop|restart|status}" exit 1 esac exit 0 </verb></tscreen> Und erstellen Sie symbolische Links zu jeder <tt>/etc/rc.d/rcN.d/</tt>, zum Beispiel: <tscreen><verb> ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail </verb></tscreen> Wenn der erste Buchstabe ein »K« ist, werden Sie <tt>qmail</tt> auf diesem Runlevel beenden (»1« für den Einzelmodus oder »6« für den Start), falls aber der erste Buchstabe ein »S« ist, wird <tt>qmail</tt> auf diesem Runlevel gestartet (Runlevel wie oben). <itemize> <item>Wie ist zu entscheiden, ob Sie ein »K« oder ein »S« setzen sollen? Machen Sie, was die Mehrheit der Daemons in diesem Runlevel tun. <item>Welche Zahl sollte man hinter ein »K« oder »S« setzen? Die nächste Nummer zu Ihrem Netzwerk Daemon. Das bedeutet, der MTA wird nach dem Netzwerkdaemon gestartet beziehungsweise vorher gestoppt. Ohne dies würde Ihr Netzwerk unerreichbar sein, während der MTA dessen Arbeit erwartet. </itemize> RedHat, Caldera und SuSE werden <tt>/etc/rc.d/</tt> benutzen, anstelle der lesbaren <tt>/etc/</tt> der Debian Distribution, d.h., zum Beispiel <tt>/etc/rc.d/rc1.d</tt> oder <tt>/etc/rc.d/init.d</tt>. <sect2> Das war es.<p> Es wird für das Inkrafttreten der Modifikationen kein Neustart benötigt. Wie Sie sich erinnern, benutzen Sie Linux und kein anderes billiges Betriebssystem. Starten Sie einfach <tscreen><verb> killall inetd init 1 </verb></tscreen> um in den Einzelnutzer Modus zu wechseln, danach: <tscreen><verb> init 2 </verb></tscreen> um zurück in Ihr normales Runlevel zu wechseln (angezeigt in <tt>/etc/inittab</tt> mit der »initdefault« Bezeichnung). Sie können das <tt>qmail</tt> Skript auch von Hand starten, aber die »init« Methode wird Ihnen zeigen, falls das <tt>qmail</tt> Skript gut platziert ist, d.h. nach dem Start des Netzwerkskripts aber vor jedem anderen Programm, das davon abhängt, Sie per E-Mail zu warnen (wie <tt>inn</tt>). <sect1> smail v3.1<p> <tt>smail</tt> v3.1 scheint ein de-facto Standard Transportagent für reine UUCP Systeme und einige SMTP Systeme zu sein. Es ist leicht zu konfigurieren, es wird ohne Patch aus den Quellen kompiliert und ist ziemlich sicher. <sect2> smail konfigurieren <p> Installieren Sie das <tt>smail</tt> Binärpaket aus Ihrer Distribution (ich empfehle dies zu wählen) oder besorgen Sie sich die Quellen und bauen <tt>smail</tt>. Falls Sie <tt>smail</tt> von den Quellen selbst bauen, benötigen Sie Folgendes in Ihrer <tt>os/linux</tt> Datei, so daß <tt/sed/ Ihnen Shell Skripte liefert, die richtig arbeiten: <tscreen><verb>CASE_NO_NEWLINES=true</verb></tscreen> Sobald das installiert ist, werden Konfigurationsdateien gewiß nach <tt>/etc/smail</tt> gelangen (aber das mag bei Ihnen anders sein, wenn Sie alte Distributionen verwenden); lassen Sie uns mit ihrer Bearbeitung beginnen. <sect3> Die Datei »config« <p> <tscreen><verb> # From smart_path=polux smart_transport=uux # To hostname=barberouge domains=linux.lmm.com visible_name=barberouge.linux.lmm.com uucp_name=barberouge.linux.lmm.com # max_message_size=512k # auth_domains=foo.bar # more_hostnames=barberouge.polux.freenix.fr </verb></tscreen> Nun zuerst: wer versorgt Sie? Ich werde von »polux« per UUCP (d.h. UUX Transport) versorgt. Natürlich müssen Sie diese Datei ändern, um sie an Ihre Situation anzupassen. Zum Beispiel könnten Sie von »bargw.bar.foobar.com« über »smtp« versorgt werden, in diesem Fall benötigen Sie keine Transportdatei und können »-transport_file« definieren, um anzuzeigen, daß sie keine brauchen. Sie können außerdem »postmaster_address = IhrName« verwenden, die Netzwerktopologie in ausgehenden Adressen verbergen (falls Sie ein Gateway haben), indem Sie »visible_name« (sichtbarer Name) verwenden, außerdem kann das Einsetzen, welche Aliasadresse für von Ihnen empfangenen E-Mails verwendet wird, durch Verwendung von »more_hostnames« benutzt werden. Sehen Sie in der <tt>smail</tt> Dokumentation für weitere Details oder Beispiele unter <tt>/usr/doc/smail/examples</tt> nach, ob etwas davon auf Ihre Situation paßt. <sect3> Die Datei »directors« <p> <tscreen><verb> # aliasinclude - expand ":include:filename" Adresse erstellt durch Aliasdatei # Dieser und der nächste Eintrag sind wie ein dampfender Teller. Es gibt einige # Gründe dafür, signifikante Änderungen vorzunehmen. Der Änderungszweck ist # dabei, Adressen der Form anzupassen und zu erweitern: # :include:pathname # welche in Aliasdateien oder Mailinglisten/»forward« Dateien auftauchen # können (hergestellt durch jeden Zeiger mit einem Treiber der # »forward« Datei). aliasinclude: driver = aliasinclude, # benutze diesen Spezialfall Treiber nobody; # assoziiere Benutzer nobody mit # Adresse, wenn geringe Verletzung # von Zugriffsrechten eintreten copysecure, # beziehe Erlaubnis von Aliaszeiger copyowners, # beziehe Eigentümer von Aliaszeiger # forwardinclude - expand ":include:filename" Adressen erstellt durch # »forward« Datei forwardinclude: driver = forwardinclude, # benutze diesen Spezialfall Treiber nobody; copysecure, # beziehe Erlaubnisse von Zeiger der # Weiterleitung copyowners, # beziehe Eigentümer von Zeiger der # Weiterleitung # aliases - Suche nach Alias Erweiterungen, abgelegt in einer Datenbank # Dies ist die Standard Aliasdatei. Sie wird für generische Dinge # verwendet, wie Mapping von Root auf andere Benutzer, Postmaster, # MAILER-DAEMON und UUCP auf Administratorseite, Erstellen einiger kleiner # Systemalias Erweiterungen usw. Bei dieser Seiten-Konfiguration wird # die Aliasdatei meist für computerspezifische Aliase/Weiterleitungen # verwendet. Globales Weiterleiten von Informationen sollte in der # Weiterleitungsdatenbank abgelegt werden. aliases: driver=aliasfile, # genereller Aliaszeiger -nobody, # alle Adressen werden standardmäßig # mit Benutzer nobody assoziiert, hier # etwas einzusetzen ist nicht nützlich sender_okay, # nicht den Absender aus der # Erweiterung entfernen owner=owner-$user; # Probleme gehen an Inhaberadresse file=/etc/aliases, modemask=002, # sollte nicht global beschreibbar sein optional, # ignoriere, falls Datei nicht # existiert proto=lsearch, # unsortierte ASCII Datei # forward - Suche nach Erweiterung, gespeichert in der Weiterleitungsdatenbank # Dies ist eine subdomainweite Benutzer-Weiterleitungsdatenbank. Einträge # werden hier für aktuelle und veraltete Benutzer vorgenommen, um ihre E-Mails # an deren bevorzugten E-Mail-Leser weiterzuleiten. Die Weiterleitungsdatenbank # wird über das TCP/IP Netzwerk versendet, sobald Änderungen vorgenommen # werden, um das Netzwerk konsistent zu halten. #forward: # driver = aliasfile, # genereller Aliaszeiger # -nobody, # alle Adressen werden mit Benutzer # # nobody assoziiert, hier etwas # # einzusetzen ist nicht sinnvoll # owner = real-$user; # Probleme gehen an die Eigentümer- # # adresse # # file = /etc/forward, # modemask = 002, # proto = dbm, # benutze dbm(3X) Bibliothek für # # Zugriff # dotforward - erweitere ».forward« Dateien in Benutzerverzeichnissen # Für Benutzer, für die ein Eintrag in der »forward« Datenbank besteht, # wird eine ».forward« Datei nur verwendet, wenn sie auf der # Heimatmaschine besteht, die in der Weiterleitungsdatenbank # identifiziert wurde. Falls verwendet, wird ihr wie einer Adressliste # gefolgt, an die E-Mails zugestellt werden sollen, anstatt denen (oder # zusätzlich zu denen), die der Benutzer in der lokalen Adresse # indentifiziert hat. dotforward: driver = forwardfile, # genereller Weiterleitungszeiger owner = postmaster, nobody, sender_okay; file = ~/.forward, # .forward Datei im Heimatverzeichnis checkowner, # Benutzer kann diese Datei innehaben owners = root, # oder Root kann Eigentümer sein modemask = 002, # sie sollte nicht global beschreibbar # sein caution = daemon:root, # dies Sachen nicht als Root oder # Daemon starten # extra Vorsicht bei von der Entfernung aus zugänglichen # Heimatverzeichnissen walten lassen! unsecure = "~uucp:/tmp:/usr/tmp:/var/tmp" # forwardto - erweitere ein »Forward to « in Benutzer Mailbox Dateien # Dies emuliert die V6/V7/System-V Weiterleitungsmechanismen, die eine # Zeile von Adressen zur Weiterleitung, gespeichert am Anfang der # Benutzer-Mailbox Datei verwenden, die mit dem String »Forward to« # (weiterleiten an) als Präfix ausgestattet sind. forwardto: driver = forwardfile, owner = postmaster, nobody, sender_okay; file = /var/spool/mail/${lc:user}, # zeige auf Benutzer Mailbox # Datei forwardto, # schalte »Forward to « Funktion ein checkowner, # Benutzer kann Dateiinhaber sein owners = root, # oder Root kann Datei innehaben modemask = 0002, # unter System V kann Gruppe mail # schreiben caution = daemon:root # diese Dinge nicht als Root oder # Daemon starten # user - übereinstimmende Benutzer auf diesem lokalen Host mit Zustellung an # deren Mailboxen user: driver = user; # zu Benutzernamen passende Treiber transport = local # lokaler Transport an Mailboxen # real_user - übereinstimmende Benutzernamen mit Präfixstring »real-« # Das ist nützlich, um eine Adresse zu erlauben, die explizit an eine # Mailbox eines Benutzers zustellt. Zum Beispiel können hier Fehler in einer # ».forward« Datei Erweiterung zugestellt werden, oder Weiterleitungsschleifen # zwischen mehreren Maschinen können durch Verwendung einer wahren Benutzernamen # Adresse aufgelöst werden. Auch können Benutzer, die E-Mails dazu verwenden # wollen, um Daten auf eine Maschine zu übertragen, die nicht ihre »Heimat-« # Maschine ist, eine E-Mail an »wahrer-Loginname@ferner.host« senden. real_user: driver = user; transport = local, prefix = "real-" # z.B. Übereinstimmung wahrer Root # lists - erweitere Mailinglistgen, gespeichert in einem Listenverzeichnis # Mailinglisten können einfach erstellt werden durch Anlegen einer Datei im # Verzeichnis /etc/smail/lists. lists: driver = forwardfile, caution, # markiere alle Adressen mit »Vorsicht« nobody, # und dann assoziiere mit Benutzer # nobody owner = owner-$user; # System V Seiten können o-$user # verwenden wollen, wenn Eigentümer- # $user für einen 14-Zeichen Dateinamen # zu lang ist file = lists/${lc:user} # Listen sind unter $smail_lib_dir # owners - erweitere Mailinglisten, die in einem Eigentümer-Listenverzeichnis # gespeichert sind # Mailinglisten-Eigentümerlisten können einfach durch Erstellen einer Datei # im Verzeichnis /etc/smail/lists/owner erstellt werden. Mailinglisten # Eigentümer bekommen die lokal produzierten Fehler einer Mailingliste mit # dem selben Namen zugesandt. Um eine Eigentümerliste für eine Mailingliste # zu erstellen, ist eine Datei mit dem Listennamen in /etc/smail/lists/owner # zu erstellen. Damit wird eine Adressliste von Eigentümer-Listennamen kreiert, # wie sie vom »lists« Zeiger oben verwendet wird. owners: driver = forwardfile, caution, # markiere alle Adressen mit "Vorsicht" nobody, # und dann assoziiere mit Benutzer # nobody owner = postmaster; # System V Seiten können o-$user # verwenden wollen, wenn Eigentümer- # $user für einen 14-Zeichen Dateinamen # zu lang ist prefix = "owner-", file = lists/owner/${lc:user} # Listen sind unter $smail_lib_dir # request - dehne Mailinglisten, gespeichert in einem Listenanfrageverzeichnis # Mailinglisten Anfragelisten können einfach durch Anlegen einer Datei im # Verzeichnis /etc/smail/lists/request erstellt werden. Die Anfrageadressen # werden typischerweise als eine Standardadresse für Abfragen über eine # Mailingliste verwendet. Zum Beispiel Anfragen über die Aufnahme oder Löschen # in / aus einer Liste wird normalerweise an »list-request« gesendet, das so # eingestellt sein sollte, daß die richtige(n) Person(en) die E-Mail erhalten. request: driver = forwardfile, caution, # markiere alle Adressen mit »Vorsicht« nobody, # und dann assoziiere mit Benutzer # nobody owner = postmaster; # System V Seiten können o-$user # verwenden wollen, wenn Eigentümer- # $user für einen 14-Zeichen Dateinamen # zu lang ist suffix = "-request", file = lists/request/${lc:user} # Listen sind unter $smail_lib_dir </verb></tscreen> Hier sollten Sie nichts ändern müssen, nur Mailinglisten Optionen, falls Sie vorhaben, einige über smail laufen zu lassen, oder Weiterleitungsoptionen, falls Sie z.B. die Weiterleitung abschalten wollen. <sect3> Die Datei »fidopaths« <p> <tscreen><verb> .f105.n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s .n324.z2.fidonet.org f105.n324.z2.fidonet.org!%s .z2.fidonet.org f105.n324.z2.fidonet.org!%s .fidonet.org f105.n324.z2.fidonet.org!%s </verb></tscreen> Erstellen Sie so eine Datei nur, wenn Sie <tt>ifmail</tt> und FIDO verwenden. <sect3> Die Datei »routers« <p> <tscreen><verb> # forces - erzwingt bestimmte Pfade # Diese Datenbank existiert als harte Kodierung der Pfade zu verschiedenen # Maschinen oder Domains. Sie findet Verwendung bei der Erstellung temporärer # Tweaks zu anderen Routing Datenbanken. Um diese Datenbank zu ändern, # bearbeiten Sie die Datei maps/force.path und geben »make« im maps/ # Unterverzeichnis ein. forces: driver = pathalias, # Router zu Pfad-Datei Suche method = /etc/smail/maps/table; # Transporte sind in dieser Datei file = forcepaths, # Datei enthält Info zu erwzungenem Pfad proto = lsearch, # verwedne sortierte Pfad-Datei optional, reopen # schließe, wenn nicht verwendet uucp_neighbors: driver=uuname, # verwende Programm, das Nachbarn # zurückgibt transport=uux; cmd="/usr/bin/uuname -a", # verwende ausdrücklich das uuname Programm domain=uucp # entferne Endung ».uucp« # smart_host - ein teilweise spezifizierter Smarthost Zeiger # Falls das Attribut »smart_path« in der Konfigurationsdatei als ein # Pfad vom lokalen zu einem entfernten Host definiert ist, dann werden # Hostnamen, auf die keine andere Regel paßt, an den angegebenen # entfernten Host geschickt. Das Attribut »smart_transport« kann zur # Spezifizierung eines davon verschiedenen Transports verwendet werden. # Wenn das "smart_path" Attribut nicht gesetzt ist, wird dieser Router # ignoriert. smart_host: driver = smarthost, # Spezialfall Treiber transport = uux # stelle standardmäßig per UUCP zu path=phreak # ifmail - um E-Mails an FIDONET und umgekehrt zu senden ifmail: driver=pathalias, transport=ifmail; file=fidopaths, proto=lsearch </verb></tscreen> Sie sollten nur dann ein <tt>ifmail</tt>-Kapitel eintragen, wenn Sie <tt>ifmail</tt> für FIDO E-Mails nutzen. Beachten Sie, daß Sie auch den Transportmodus von »uux« (UUCP) auf z.B. »smtp« oder sogar die Pfade zu verschiedenen Maschinen oder Domains in <tt>/etc/smail/maps/table</tt> hartkodieren können. Dies ist dann sinnvoll, wenn Sie ausgehende E-Mails für Ihr lokales Netzwerk unverzüglich zugestellt haben wollen, während kein Bedarf dafür besteht, zu Ihrer uux Verbindung Ihres Internetzugangs geleitet zu werden. <sect3> Die Datei »transports« <p> <tscreen><verb> # local - stelle E-Mail an lokale Benutzer zu # Teile smail mit, direkt an die Benutzer Mailboxdateien im /var/spool/mail # Verzeichnis anzufügen. #local: #driver = appendfile, # hänge Nachricht an Datei an #-return_path, # schließe Return-Path: Feld ein #local, # verwende lokale Form für Zustellung #from, # unterstütze Von_ Zeile im Kopfteil #unix_from_hack; # füge > vor Von im Körper ein # #file = /var/spool/mail/${lc:user}, # benutze diesen Ort bei Linux # # Beachte, daß mail-spooler # "1777" Rechte hat #file = ~/mailfile, # benutze diesen Ort für höhere # Sicherheit #group = mail, # Eigentümergruppe bei System V #mode = 0660, # unter System V kann Gruppe mail # Zugriff haben #suffix = "\n", # zusätzlichen Zeilenumbruch einfügen #append_as_user, # Dies erlaubt jedem Benutzer, über eine »~/.procmailrc« Datei das # Filtern und Speichern von E-Mails und E-Maillisten in verschiedenen # Mailboxen zu kontrollieren, falls sie das wünschen. local: +inet, -uucp, driver = pipe, # hänge Nachricht an Datei an #-return_path, # schließe Return-Path: Feld ein #local, # verwende lokale Form für Zustellung #from, # unterstütze Von_ Zeile im Kopfteil #unix_from_hack; # füge > vor Von im Körper ein cmd = "/usr/bin/procmail", # nutze procmail für lokale Zustellung parent_env, # Umgebungsinfo von parent_Adresse pipe_as_user, # nutze mit Adresse assoziierte # Benutzer-ID umask = 0022, # umask für child-Prozeß #-ignore_status, # Status beim Verlassen glauben #-ignore_write_errors, # erneut versuchen bei abgerissener Pipe # pipe - stelle E-Mails an Shell-Befehle zu # Dies wird implizit genutzt, wenn smail Adressen antrifft, die mit einem # vertikalen Balken beginnen, wie »|/usr/lib/news/recnews talk.bizarre«. # Der vertikale Balken wird entfernt aus der Adresse, bevor sie zum # Transport übergeben wird. #pipe: driver = pipe, # leite Nachrich an anderes Programm #return_path, local, from, unix_from_hack; # #cmd = "/bin/sh -c $user", # sende Adresse an die Bourne Shell #parent_env, # Umgebungsinfo von parent_Adresse #pipe_as_user, # verwende mit Adresse assoziierte # Benutzer-ID #umask = 0022, # umask für child-Prozeß #-log_output, # kein Log von stdout/stderr #ignore_status, # Status beim Verlassen könnte falsch # sein, ignoniere #ignore_write_errors, # ignoriere abgebrochene Pipes # file - stelle E-Mail an Dateien zu # Dies findet implizit Verwendung, wenn smail Adressen antrifft, die mit # einem Schrägstrich oder Tilde beginnen, wie »/usr/info/list_messages« oder # vielleicht »~/Mail/inbox«. #file: driver = appendfile, #return_path, local, from, unix_from_hack; # #file = $user, # Datei wird Adresse entnommen #append_as_user, # verwende mit Adresse assoziierte # Benutzer-ID #expand_user, # dehne ~ und $ innerhalb der Adresse # aus #check_path, #suffix = "\n", #mode = 0644 # uux - Zustellung an das rmail Programm auf einer entfernten UUCP Gegenstelle # # Bis zu 5 Empfängeradressen werden an den entfernten Host in einer UUCP # Übertragung gesandt. uux: driver = pipe, -uucp, inet, #uucp, # nutze UUCP Form der Adressierung from, # unterstütze eine Von_ Zeile max_addrs = 5, # maximal 5 Adressen pro Aufruf max_chars = 200; # maximal 200 Zeichen für Adressen # das -r Flag verhindert sofortige Zustellung, Klammern um die # $user Variable verhindern besondere Interpreation durch uux. cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)", #cmd="/usr/bin/uux - $host!rmail $(($user)$)", ignore_write_errors, # ignoriere abgerissene Pipes umask = 0022, #pipe_as_sender, # uux_one_addr - stelle E-Mail über UUCP an einen entfernten Host zu, der # jeweils eine Adresse entgegennehmen kann. # Dies ist oft notwendig, wenn die Zustellung an eine Seite erfolgt, auf der # eine unmodifizierte Version von 4.1BSD läuft. uux_one_addr: driver = pipe, uucp, # verwende UUCP Art der Adressform from; # unterstütze eine Von_ Zeile die -r Kennung verhindert sofortige Zustellung cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})", umask = 0022, pipe_as_sender queueonly: driver = pipe; # sende Nachrich an eine Pipe cmd = "/usr/lib/sendmail -Q -f $sender -bm $user", # nutze getmail für lokale Zustellung user=root, # führe getmail als "root" aus group=mail, # führe getmail als "mail" aus parent_env, # Umgebungsinfo von Eltern_Adresse -pipe_as_user, # verwende mit Adresse assoziierte # Benutzer-ID umask = 0007, # umask für child-Prozeß # um die Nachricht zuzustellen. Der smtp Transport wird nur eingefügt, wenn # es ein BSD Netzwerk gibt. # Das uucp Attribut kann für Übertragungen innerhalb der UUCP Zone gesetzt # werden. Das inet Attribut muß für Transfers innerhalb des Internet gesetzt # werden. # Beachte: Dies ist nur wenig optimal, es sollte ein backend geben, das # mit mehreren Nachrichten pro Verbindung umgehen kann. # Weiterhin: Es kann erforderlich sein, »max_addrs« auf 100 zu # beschränken, da dies das untere Limit ist, für das SMTP eine Implementation # für den Umgang mit einer Adresse benötigt. smtp: driver=tcpsmtp, inet, # wenn UUCP_ZONE nicht gesetzt ist #uucp, # wenn UUCP_ZONE gesetzt ist -max_addrs, -max_chars; # kein Limit für Adressenzahl short_timeout=5m, # Timeout für kurze Operationen long_timeout=2h, # Timeout für längere SMTP Operationen service=smtp, # verbinde zu diesem Service Port Für Internet Verwendung die 4 folgenden Zeilen auskommentieren use_bind, # löse MX und multiple A Records auf defnames, # verwende Standard Domänensuche defer_no_connect, # erneut versuchen, wenn Nameserver # nicht erreichbar local_mx_okay, # einen MX an lokalem Host ablehnen ifmail: from,received,max_addrs=5,max_chars=200, driver=pipe; pipe_as_sender, cmd="/usr/local/bin/ifmail -x9 -r$host $((${strip:user})$)" </verb></tscreen> Sie sollten ein <tt>ifmail</tt> Kapitel nur dann einbeziehen, wenn Sie <tt>ifmail</tt> für FIDO E-Mail verwenden. Außerhalb davon sollte es für Sie nicht notwendig sein, etwas an dieser Datei zu bearbeiten, die das Transportprotokoll (wie uux, smtp, ...) definiert, die Sie als Parameter in anderen <tt>.config</tt> Dateien verwenden können. Nehmen Sie zu Kenntnis, daß ich einige Teile wie »pipes« oder »file« auskommentiert habe, um die Sicherheit zu erhöhen. <sect3> Das Verzeichnis »maps/« <p> Das Verzeichnis <tt>maps/</tt> enthält die Dateien <tt>map</tt> und <tt>table</tt>: Zuerst die Datei <tt>map</tt>: <tscreen><verb> #N foo.bar foo2.bar2 #S AT 486/RedHat Linux 1.2.13 #O Organisation #C Kontakt #E Administration (E-Mail) #T Telefon #P Adresse #R #U Hosts verbunden via uucp #W erstellt/bearbeitet von # hname polux hname linux.eu.org hname = polux hname = polux.linux.eu.org </verb></tscreen> Bearbeiten Sie diese Datei wieder so, daß sie zu Ihrer Situation paßt (ich werde von <tt>polux.linux.eu.org</tt> versorgt). Nun die Datei <tt>table</tt>: <tscreen><verb> * uux </verb></tscreen> Sie können verschiedene Transporte zu verschiedenen Pfaden definieren, z.B. »smtp« für die Maschinen in Ihrem lokalen Netzwerk, »uux« (d.h. UUCP) für den Rest der Welt oder umgekehrt (ich verwende uucp für jede ausgehende E-Mail, dafür benutze ich »*«!). <sect2> Andere gute Beispiele <p> Die vorherigen Dateien sind diejenigen, die ich momentan auf meiner Seite verwende, Ihnen sollten keinerlei Probleme begegnen, wenn Sie sie als Beispiele oder Basis für Ihre eigenen Dateien nehmen. Die folgenden Dateien sollen nur als gute Beispiele für die Konfiguration von <tt>smail</tt> auf anderem Weg dienen. <sect3> Die Datei »transports« <p> <tscreen><verb> #ident »@(#) transports,v 1.2 1990/10/24 05:20:46 tron Exp« # Siehe smail(5) für eine vollständige Beschreibung diese Dateiinhalts. # local - Zustellung von E-Mail an lokale Benutzer # # Sage smail, direkt an die Benutzer-Mailboxdateien im Verzeichnis /usr/mail # zuzustellen. local: driver = appendfile, # füge Nachrich an eine Datei an return_path, # einbetten eines Return-Path: Feldes local, # nutze lokale Form für Zustellung from, # unterstütze eine Von_ Zeile unix_from_hack; # füge > vor Von im Body ein file = /usr/mail/${lc:user}, # nutze diesen Ort bei System V group = mail, # Eigentümergruppe bei System V mode = 0660, # unter System V kann Gruppe mail # zugreifen suffix = "\n", # zusätzlichen Zeilenumbruch einfügen append_as_user, # pipe - E-Mails an Shell-Befehle übergeben # # Dies wird implizit verwendet, wenn smail auf Adressen stößt, die mit einem # senkrechten Balken beginnen, wie »|/usr/lib/news/recnews talk.bizarre«. # Der senkrechte Balken wird aus der Adresse entfernt, bevor sie zum # Transport gegeben wird. pipe: driver = pipe, # leite Nachricht an anderes Programm return_path, local, from, unix_from_hack; cmd = "/bin/sh -c $user", # sende Adresse an die Bourne Shell parent_env, # Umgebungsinfo von parent_Adresse pipe_as_user, # nutze mit Adresse assoziierte # Benutzer-ID umask = 0022, # umask für child-Prozeß -log_output, # kein Log von stdout/stderr ignore_status, # Status beim Verlassen kann falsch # sein, ignorieren ignore_write_errors, # ignoriere abgebrochene Pipes # file - Übergabe von E-Mails an Dateien # # Dies wird implizit verwendet, wenn smail auf Adressen trifft, die mit einem # Schrägstrich oder Tilde beginnen, wie »/usr/info/list_messages« oder # vielleicht »~/Mail/inbox«. file: driver = appendfile, return_path, local, from, unix_from_hack; file = $user, # Datei wird aus Adresse entnommen append_as_user, # nutze mit Adresse assoziierte # Benutzer-ID expand_user, # erweitere ~ und $ innerhalb der # Adresse suffix = "\n", mode = 0644 # uux - Übergabe an Programm rmail auf einer entfernten UUCP Seite # # Bis zu 5 Empfängeradressen werden mit einer UUCP Transaktion an den # entfernten Host übertragen. uux: driver = pipe, uucp, # nutze UUCP Form der Adressierung from, # unterstütze eine Von Zeile max_addrs = 5, # max. 5 Adressen pro Aufruf max_chars = 200; # max. 200 Zeichen für Adressen # Das -r Flag verhindert die sofortige Zustellung, Klammern # um die $user Variable verhindern spezielle Interpretation durch uux. cmd = "/usr/bin/uux - -r -g$grade $host!rmail $((${strip:user})$)", umask = 0022, pipe_as_sender # uux_one_addr - Zustellung der E-Mails über UUCP an einen entfernten Host, # der nur eine Adresse mit einem Mal annehmen kann. # # Dies ist oft dann notwendig, wenn die Zustellung an eine Seite erfolgt, # auf der eine unmodifizierte Version von 4.1BSD läuft. uux_one_addr: driver = pipe, uucp, # nutze UUCP Form der Adressierung from; # unterstütze eine Von Zeile # Das -r Flag verhindert die sofortige Zustellung cmd = "/usr/bin/uux - -r -g$grade $host!rmail (${strip:user})", umask = 0022, pipe_as_sender # demand - Übergabe an ein entferntes rmail Programm, Abfrage bei Bedarf demand: driver = pipe, uucp, from, max_addrs = 5, max_chars = 200; # ohne -r Flag versuche sofort, Kontakt mit der Gegenstelle aufzunehmen cmd = "/usr/bin/uux - -g$grade $host!rmail $(($user)$)", umask = 0022, pipe_as_sender # uusmtp - Übergabe an das Programm rsmtp auf einer entfernten UUCP Seite # # Zustellung unter Verwendung eines einfachen, gestapelten SMTP Protokolls # an die entfernte Maschine. Das erlaubt die Verwendung von viel mehr # willkürlichen Adressen. Es beseitigt zudem das Limit von Empfängeradressen # pro uux Aufruf. uusmtp: driver = pipe, bsmtp, # sende gestapelte SMTP Befehle -max_addrs, # es gibt kein Limit bei Anzahl oder -max_chars; # max. Größe der Empfängeradressen. # unterstütze -r zur Verhinderung der sofortigen Zustellung, die # Empfängeradressen werden in den Daten speichert, die an die # Standardeingabe von rsmtp gesendet werden. cmd = "/usr/bin/uux - -r -g$grade $host!rsmtp", umask = 0022, pipe_as_sender # demand_uusmtp - Übergabe an ein entferntes rsmtp Programm, Abfrage bei # Bedarf demand_uusmtp: driver = pipe, bsmtp, -max_addrs, -max_chars; # ohne -r Flag versuche sofort, Kontakt mit der Gegenstelle aufzunehmen cmd = "/usr/bin/uux - -g$grade $host!rsmtp", umask = 0022, pipe_as_sender # smtp - Zustellung per SMTP über TCP/IP # # Verbinde mit einem entfernten Host unter Verwendung von TCP/IP und initiiere # eine SMTP Konversation, um die Nachricht zuzustellen. Der SMTP Transport # ist nur enthalten, wenn ein BSD Netzwerk existiert. # Beachte: Es kann erforderlich sein, »max_addrs« auf 100 zu begrenzen, da # das die untere Grenze ist, ab der SMTP eine Implementation benötigt, um # eine Nachricht zu handhaben. smtp: driver = smtp, -max_addrs, -max_chars </verb></tscreen> <sect3> Die Datei »table« <p> <tscreen><verb> #ident »@(#) table,v 1.2 1990/10/24 05:20:31 tron Exp« # Diese Datei benennt die Transporte, die von »bargw« zur Übertragung an # bestimmte Hosts verwendet werden sollen. #host transport #-------- --------- curdsgw demand_uusmtp # Übergabe per batch SMTP oldbsd uux_one_addr # 4.1BSD Seiten können nicht mehr als eine # Adresse gleichzeitig annehmen sun demand # rufe sun auf, wenn es E-Mails zu versenden # gibt * uux # für alle anderen frage in Intervallen ab </verb></tscreen> <sect2> Neustart von inetd <p> Um <tt>smail</tt> als SMTP Daemon zu starten, fügen sie eines der Folgenden zu <tt>/etc/inetd.conf</tt> hinzu: <tscreen><verb> smtp stream tcp nowait root /usr/bin/smtpd smtpd </verb></tscreen> Alternativ: <tscreen><verb> smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.smtpd </verb></tscreen> Abgehende E-Mails werden bei der Benutzung von <tt>elm</tt> automatisch versandt. <sect2> smail mit SMTP <p> Normalerweise verwenden ISPs SMTP, deshalb sollten Sie keine Probleme beim Versand Ihrer E-Mails haben. Wenn zu dem Zeitpunkt keine Internetverbindung besteht, zu dem Sie E-Mails versenden, dann liegt die E-Mails unter <tt>/var/spool/smail/input</tt>. Wenn dann die nächste Verbindung zustande kommt, wird <tt>runq</tt> gestartet, das den E-Mail Versand auslöst. Jedenfalls ist das Empfangen von E-Mails <em>das</em> Problem, da Ihr Provider viele Clients hat, um die er sich kümmert, nicht bloß Sie. Gewöhnlich beziehen Sie Ihre E-Mail via POP Protokoll, sehen Sie dazu in den POP-Abschnitt weiter unten. <sect1>sendmail+IDA (veraltet)<p> Für große Seiten ist <tt>sendmail</tt> aufgrund der »unglaublichen Einfachheit der Verwendung« (ein sehr relatives Gefühl, wenn Sie qmail kennen) eine gute Wahl. Aber Sie müssen sich zwischen <tt>sendmail+IDA</tt> und <tt>sendmail</tt> 8.x entscheiden: <itemize> <item> Wenn Sie einen alten Kernel (1.0) haben: <tt>sendmail+IDA</tt> <item> Wenn Sie keinen so alten Kernel (1.2) haben: <tt>sendmail+IDA</tt> und Quellcode Bearbeitung <item> Wenn Sie einen neuere Kernel (2.0) haben, werden Sie <tt>sendmail</tt> 8.x wählen </itemize> Zur Erinnerung: Linux-Neulinge oder diejenigen, die über Sicherheit und Leichtigkeit der Konfiguration besorgt sind, sollten lieber die Verwendung von <tt>smail</tt> oder <tt>qmail</tt> in Erwägung ziehen, die sicherer und leichter zu nutzen sind. <sect2> Installation der Quellen <p> Falls Ihre Dirstribution Sie nicht mit einem installationsfertigen Paket von <tt>sendmail</tt> versorgt (».rpm« für RedHat, Caldera und SuSE, ».deb« für Debian), laden Sie einfach die Quellen herunter und starten: <tscreen><verb> cd / ; tar -zxvf sendmail5.67b+IDA1.5.tgz cd /usr/local/lib/mail/CF </verb></tscreen> Kopieren Sie die Dateien <tt>sample.m4</tt> und <tt>local.m4</tt> nach »<tt>IhrHostName.m4</tt>«. Ändern Sie die vorgegebenen Hostnamen, Aliase, Smarthost und füllen Sie mit dem für Ihre Seite richtigen Werten. Die Vorgabedatei ist eine reine UUCP-Seite (so nicht mehr in Version 8.x), die Domänen in den Köpfen hat und die mit einem Smarthost kommunizieren. Geben Sie nun folgendes ein: <tscreen><verb> make IhrHostName.cf </verb></tscreen> Kopieren Sie die entstandene Datei nach <tt>/etc/sendmail.cf</tt>. Falls Sie nur UUCP haben, brauchen Sie <em>keine</em> der in der <tt>README.Linux</tt> Datei erwähnten Tabellen zu erstellen. Sie müssen die Dateien nur per <tt>touch</tt> erstellen, damit der <tt>Makefile</tt> arbeitet. Bearbeiten Sie die ».m4« Datei, wenden Sie <tt>make</tt> auf die <tt>sendmail.cf</tt> Datei an und starten Sie einen Test. Falls Sie nur UUCP haben und mit Gegenstellen zusätzlich zu Ihrem »Smart-Host« kommunizieren, müssen Sie für jeden »uucpxtable« Einträge anfügen (oder E-Mails zu denen laufen ebenfalls über den Smarthost) und <tt>dbm</tt> auf die überarbeiteten »uucpxtable« anwenden. Wenn Sie Rich Brauns original Binärdistribution 5.67a laufen lassen, werden Sie die Konfiguration einfrieren müssen, wenn Sie ihre ».cf« Datei mit <tscreen><verb>/usr/lib/sendmail -bz</verb></tscreen> wechseln, um den Wechsel wirksam werden zu lassen Außerdem sollten Sie Ihre Version zumindest auf den Stand von 5.67b bringen, da es ein ärgerliches Sicherheitsloch in 5.67a und früheren Versionen gibt. Eine andere nette Sache ist, daß, wenn Sie »mail.debug« gesetzt haben und <tt>syslog</tt> starten, Ihre ein- und ausgehenden E-Mails im Log eingetragen werden. Sehen Sie für Einzelheiten in die Datei <tt>/etc/syslog.conf</tt>. Die Quellen für <tt>sendmail+IDA</tt> finden Sie unter: <tscreen><htmlurl url="ftp://vixen.cso.uiuc.edu" name="vixe.cso.uiuc.edu"></tscreen> Sie brauchen keinen Patch, um unter Linux zu laufen, wenn Sie etwas wie einen Kernel 1.00 laufen haben. Wenn Sie einen Kernel > 1.1.50 haben, bekommen Sie den Spaß des Rückbaus der meisten der Linux-spezifischen Patches, die jetzt in den Vanilla Quellen sind. Ich habe Ihnen gesagt, daß dieses <tt>sendmail</tt> nur für alte Kernels war :-). Es ist äußerst fraglich, wo dies notwendig ist: einfach »<tt>make</tt>« eingeben und wenn es sich aufbläht, gehen Sie zu der Zeile in den Quellen und kommentieren den darin enthaltenen Linux-spezifischen Code aus. Wenn Sie vorhaben, <tt>sendmail+IDA</tt> laufen zu lassen, empfehle ich Ihnen sehr, die Version <tt>sendmail5.67b+IDA1.5</tt> zu nehmen, da dort alle Linux-spezifischen Patches in den Vanilla Quellen enthalten sind und verschiedene Sicherheitslöcher gestopft wurden, die in den älteren Versionen waren, die Sie vielleicht vor dem 1. Dezember 1993 erhalten oder eingebaut haben. Jetzt sollten Sie mit dem Kernel 2.0 <tt>sendmail</tt> 8.x statt <tt>sendmail+IDA</tt> nutzen, aber ich sagte bereits, Sie sollten besser <tt>sendmail</tt> 8.x wählen :-). <sect2> Die Datei sendmail.m4 <p> Für <tt>sendmail+IDA</tt> müssen Sie eine <tt>sendmail.m4</tt> Datei erstellen, statt die <tt>sendmail.cf</tt> Datei direkt zu bearbeiten. Das Schöne daran ist, daß die Einstellung der E-Mail Konfiguration einfach, die in <tt>smail</tt> oder traditionellem <tt>sendmail</tt> extrem schwierig (wenn nicht sogar für manche ganz unmöglich richtig zu machen) ist. Die <tt>sendmail.m4</tt> Datei, die dem oben gebrachten <tt>smail</tt> Beispiel entspricht, sieht wie folgt aus: <tscreen><verb> dnl #------------------ BEISPIELDATEI SENDMAIL.M4 ------------------ dnl # dnl # Der String »dnl« ist das m4 Äquivalent zum Auskommentieren einer dnl # Zeile (nun, nicht ganz, aber nutzen Sie es für diesen Zweck, dnl # wenn Sie müssen :-)). dnl # Generell sollten Sie LIBDIR aus den kompilierten Pfaden überbrücken. dnl #define(LIBDIR,/usr/local/lib/mail)dnl # wohin alle unterstützten dnl # Dateien gehen define(LOCAL_MAILER_DEF, mailers.linux)dnl # E-Mail Program für Lokales define(POSTMASTERBOUNCE)dnl # Postmeister bekommt die dnl # »Rausschmeißer« define(PSEUDODOMAINS, BITNET UUCP)dnl # nicht DNS versuchen dnl # dnl #------------------------------------------------------------- dnl # dnl # Namen, unter denen wir bekannt sind define(PSEUDONYMS, myhostname.subdomain.domain myhostname.UUCP) dnl # dnl # unser Primärname define(HOSTNAME, myhostname.subdomain.domain) dnl # dnl # unser UUCP-Name define(UUCPNAME, myhostname)dnl dnl # dnl #------------------------------------------------------------- dnl # define(UUCPNODES, |uuname|sort|uniq)dnl # unsere UUCP Nachbarn define(BANGIMPLIESUUCP)dnl # sicherstellen, daß UUCP define(BANGONLYUUCP)dnl # E-Mails richtig behandelt define(RELAY_HOST, my_uucp_neighbor)dnl # unser Smart-Relay-Host define(RELAY_MAILER, UUCP-A)dnl # wir erreichen Moria via UUCP dnl # dnl #-------------------------------------------------------------------- dnl # dnl # die verschiedenen dbm Nachschlagetabellen dnl # define(ALIASES, LIBDIR/aliases)dnl # System Aliase define(DOMAINTABLE, LIBDIR/domaintable)dnl # Domainhosts define(PATHTABLE, LIBDIR/pathtable)dnl # Pfaddatenbank define(GENERICFROM, LIBDIR/generics)dnl # generische »Von«-Adressen define(MAILERTABLE, LIBDIR/mailertable)dnl # E-Mail per Host oder Domain define(UUCPXTABLE, LIBDIR/uucpxtable)dnl # Pfade zu von uns versorgten # Hosts define(UUCPRELAYS, LIBDIR/uucprelays)dnl # Umgehungspfade dnl # dnl #-------------------------------------------------------------------- dnl # dnl # Einschluß des »wahren« Code, der alles zum Laufen bringt dnl # (mit Quellcode zur Verfügung gestellt) dnl # include(sendmail.mc)dnl # NOTWENDIGER EINTRAG!!! dnl # dnl #------------ ENDE DER BEISPIEL DATEI SENDMAIL.M4 ------------------- </verb></tscreen> <sect2> Definition eines lokalen E-Mail Programms <p> Anders als anderen Unix Distributionen kommt Linux nicht mit lokalen Zustellungsprogramm (MDA) als Standard daher. Die Slackware Distribution schon. Nun, es wird zumindest durch das »einfach-zu-verwendende-aber-langwierige« Installationsskript angeboten und verwendet <tt>procmail</tt>. Jetzt, wenn normalerweise <tt>deliver</tt> oder <tt>procmail</tt> installiert ist, um mit einem vorgegebenen sendmail Setup lokale E-Mails zu handhaben, wird dieses ohnehin sehr komplexe Setup nicht noch komplexer gemacht. Ich empfehle die Verwendung der allgemein erhältlichen Programme <tt>deliver</tt> oder <tt>procmail</tt>, die in einigen Linuxdistributionen als optionale Pakete enthalten sein können. Dafür müssen Sie »LOCAL_MAILER_DEF« in der Datei <tt>sendmail.m4</tt> definieren, das auf eine Datei zeigt, die wie folgt aussieht: <tscreen><verb> # -- /usr/local/lib/mail/mailers.linux -- # (lokale E-Mail Programme für Verwendung unter Linux) Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u Mprog, P=/bin/sh, F=lsDFMeuP, S=10, R=10, A=sh -c $u </verb></tscreen> Es gibt auch eine eingebaute Vorgabe für <tt>deliver</tt> in der Datei <tt>sendmail.mc</tt>, die in die Datei <tt>sendmail.cf</tt> einbezogen wird. Zur Spezifizierung verwenden Sie statt der Datei <tt>mailers.linux</tt> folgende Definition in Ihrer <tt>sendmail.m4</tt> Datei: <tscreen><verb> dnl --- (in sendmail.m4) --- define(LOCAL_MAILER_DEF, DELIVER)dnl # E-Mail Programm für lokale dnl # Zustellung </verb></tscreen> Unglücklicherweise geht <tt>sendmail.mc</tt> davon aus, daß <tt>deliver</tt> in <tt>/bin</tt> installiert ist, was bei Slackware 1.1.1 nicht der Fall ist; dort liegt es unter <tt>/usr/bin</tt>. In dem Fall müssen Sie es entweder mit einem Link täuschen oder <tt>deliver</tt> aus den Quellen neu aufbauen, so daß es unter <tt>/bin</tt> residiert. Bitte beachten Sie, daß <tt>procmail</tt> generell besser als <tt>deliver</tt> ist, zum Beispiel für die Filterung von E-Mails. <sect2> Die sendmail+IDA dbm Tabellen <p> Das Einstellen besonderer Umstande für Sites oder Domänene kann besser durch eine Anzahl optionaler <tt>dbm</tt> Tabellen erreicht werden, als durch eine direkte Bearbeitung der Datei <tt>sendmail.cf</tt>. Sehen Sie für mehr Einzelheiten in die Ausgabe des <em>Linux Journal</em> vom Juli 1994 (wenn Sie die noch finden können :-)), die Dokumentation in den Quellen oder in das <tt>sendmail</tt> Kapitel zu der neuesten Version des Linux Documentation Projects <em>Networking Administration Guide</em>, das sehr bald verfügbar sein wird. <descrip> <tag/mailertable/ definiert spezielles Verhalten für entfernte Host oder Domains <tag/uucpxtable/ erzwingt UUCP Zustellung der E-Mails an Hosts im DNS Format <tag/pathtable/ definiert UUCP Pfade zu entfernten Hosts oder Domains <tag/uucprelays/ Abkürzung von Pfadalias Pfaden zu bekannten entfernten Hosts <tag/genericfrom/ konvertiert interne Adressen zu generischen, die nach außen sichtbar sind <tag/xaliases/ konvertiert genererische Adressen nach/von gültigen internen Adressen <tag/decnetxtable/ konvertiert RFC-822 Adressen zur DECnet Adressform </descrip> <sect2> Also welche Einträge werden wirklich benötigt? <p> Wenn keine der optionalen dbm Tabellen verwendet werden, stellt <tt>sendmail</tt> E-Mails über »RELAY_HOST« und »RELAY_MAILER« zu, die in der Datei <tt>sendmail.m4</tt> definiert sind, die zur Generierung der <tt>sendmail.cf</tt> verwendet wird. Es ist leicht möglich, diese Umstände durch Einträge in die Domaintabelle oder »uucpxtable« zu übergehen. Eine generische Seite im Internet mit Domain Name Service (DNS) oder eine reine UUCP Seite, die alle E-Mails per UUCP über einen »Smart Relay Host« weiterleitet, braucht vielleicht überhaupt keine spezifischen Tabelleneinträge. Jedes System sollte virtuell die Makros »DEFAULT_HOST« und »PSEUDONYMS« setzen, die den anerkannten Sitenamen und Aliase, unter denen sie bekannt ist, entspricht. Falls alles, was Sie haben, ein Übertragungshost und E-Mailprogramm ist, müssen Sie diese Voreinstellungen nicht setzen, da sie automatisch arbeiten; UUCP Hosts brauchen vielleicht zusätzlich das Setzen von »UUCPNAME« auf ihren offiziellen UUCP-Namen. Letztere werden vielleicht außerdem »RELAY_MAILER« und »RELAY_HOST« setzen, die Smart-Host Routing über eine E-Mail Weiterleitung einschalten. Der zu verwendende E-Mail Transport wird in »RELAY_MAILER« eingestellt und sollte gewöhnlich »UUCP-A« für UUCP Seiten sein. Wenn Ihre Seite nur SMTP einsetzt und DNS (Domain Name Service) spricht, werden Sie den »RELAY_MAILER« wechseln. Wenn auf Ihrer Seite SLIP ist, werden Sie den leichten Ausweg nehmen wollen und alle ausgehenden E-Mails an Ihren Service Povider weiterleiten wollen, damit dieser die richtigen Dinge damit tut. Dafür müssen Sie »ISOLATED_DOMAINS« und »VALIDATION_DOMAINS« auf Ihre Domain definieren. Weiterhin ist »RELAY_HOST« als Ihr Service Provider zu definieren und der »RELAY_MAILER« muß »TCP« sein. Natürlich werden Sie nach einer Berechtigung fragen wollen, bevor Sie irgend ein System als Ihre generell verwendete Stelle zur Weiterleitung einstellen. <sect1>sendmail 8.x<p> <tt>sendmail</tt> 8.7.x von Berkeley war die letzte Hauptrevision nach <tt>sendmail5</tt>. Es hatte einen wunderbaren eingebauten Support unter Linux: einfach <tscreen><verb>make Linux</verb></tscreen> eingeben und alles war eingestellt. Ihnen wird am besten damit gedient sein, sich eines der verschiedenen Binärpaket aus den normalen Linux Archivseiten herauszugreifen, als wenn Sie sich alles wie Berkley mit <tt>dbm</tt> selbst erkämpfen müssen. Der Nachteil von <tt>sendmail</tt> v8 besteht darin, daß Sie das absolute Minimum konfigurieren müssen, damit die Arbeit erledigt wird; das Folgende ist ein Beispiel, das Sie zumindest recht nahe heranbringen sollte. <sect2> Eine Beispieldatei 8.7.x mc <p> Fast wie <tt>sendmail+IDA</tt> verwendet <tt>sendmail</tt> v8 <tt>m4</tt>, um eine Konfigurationsdatei in eine volle <tt>sendmail.cf</tt> zu verarbeiten, die <tt>sendmail</tt> verwendet. Das Folgende ist meine momentane <tt>.mc</tt> Datei für meinen Rechner (PPP zum Internet für ausgehende E-Mails, UUCP für eingehende E-Mails). <tscreen><verb> dnl divert(-1) #--------------------------------------------------------------------- # # Das ist die .mc Datei für einen Linux Host, der wie folgt eingestellt # ist: # # - verbunden zum Internet für ausgehende E-Mails (hier PPP) # - verbunden via UUCP für eingehende E-Mails # - Header enthalten Domain # - kein lokaler E-Mailer (statt dessen »deliver«) # - kein laufendes DNS, also nicht nach außen nicht anerkannt # - alle nicht-lokalen ausgehenden E-Mails gehen an den # RELAY_HOST über SMTP # (Wir haben PPP laufen und lassen unseren Service Provider # die Arbeit erledigen) # # vds 3/31/95 # #--------------------------------------------------------------------- include(`../m4/cf.m4') VERSIONID(`linux nodns relays to slip service provider smarthost') dnl Cwmyhostname.myprimary.domain myhostname.UUCP localhost OSTYPE(linux) FEATURE(nodns)dnl FEATURE(always_add_domain)dnl FEATURE(redirect) FEATURE(nocanonify) dnl MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp)dnl define(`RELAY_HOST', smtp:my.relay.host.domain) define(`SMART_HOST', smtp:my.relay.host.domain) define(`UUCP_RELAY', smtp:my.relay.host.domain) define(`LOCAL_MAILER_PATH', `/bin/deliver') define(`LOCAL_MAILER_ARGS', `deliver $u') </verb></tscreen> <sect2> sendmail v8 tidbits <p> Es gibt einige Unterschiede, die ich gegenüber »IDA bigots« erwähnen will. Bis jetzt habe ich den folgenden entdeckt: Statt <tscreen><verb>runq</verb></tscreen> muß für die Warteschlange (»Queue«) <tscreen><verb>sendmail -q</verb></tscreen> gestartet werden. <sect1> Lokale Zustellprogramme <p> Anders als die meisten Betriebssysteme hat Linux keine E-Mail Unterstützung »eingebaut«. Sie benötigen ein Programm, um lokale E-Mails zuzustellen, wie <tt>lmail</tt>, <tt>procmail</tt> oder <tt>deliver</tt>. Wie auch immer, jede neuere Distribution enthält jetzt ein entsprechendes Programm. Eine Beschreibung, wie sie für die lokale Zustellung verwendet werden, findet sich im oben erwähnten Binärrelease von »sendmail5.67b+IDA1.5«. <sect> Benutzer-Programm Administration <p> <sect1> mutt <p> Sie sollten kein Problem mit dem Kompilieren, Installieren oder Starten von <tt>mutt</tt> haben. Benutzer von <tt>qmail</tt> können entweder einen Patch beziehen oder es mit dem »-f« Flag starten, um ihre lokalen E-Mail Ordner zu lesen. Wenn <tt>mutt</tt> Sie mit einem »unknown terminal error« (Fehler: unbekanntes Terminal) nach einem Distributionsupdate ärgert, rekompilieren Sie es einfach. <sect1> elm <p> <tt>elm</tt> kompiliert, installiert und startet sich anstandslos unter Linux. Für mehr Informationen sehen Sie in die <tt>elm</tt> Quellen und Installationsanweisungen. <tt>elm</tt> und die Filter benötigen die Rechte »2755« (Gruppe: »mail«) mit den Rechten »775« für <tt>/var/spool/Mail</tt> und Gruppeneinstellung »mail«. <tt>qmail</tt> Benutzer können einen Patch beziehen, um die raffinierten Fähigkeiten von <tt>qmail</tt> zu nutzen oder starten <tt>elm</tt> mit dem »-f« Flag, um auf ihren lokalen E-Mail Ordner zu zeigen. Bei einer Sache müssen Sie Vorsicht walten lassen, wenn Sie <tt>elm</tt> als MIME-fähig kompiliert haben, müssen Sie <tt>metamail</tt> im Standardpfad installiert haben oder <tt>elm</tt> wird nicht in der Lage sein, MIME kodierte E-Mails zu lesen, die Sie erhalten haben. <tt>metamail</tt> ist auf <tscreen><htmlurl url="ftp://research.telcordia.com/pub/nsb" name="research.telcordia.com:/pub/nsb"></tscreen> und erhältlich. Wenn Sie eine binäre Distribution verwenden, müssen Sie eine Datei <tt>/usr/local/lib/elm/elm.rc</tt> erstellen, um die einkompilierten Hostnamen und Domaininformationen zu überlagern: <itemize> <item>Ersetzen Sie »subdomain.domain« mit Ihrem Domainnamen <item>Ersetzen Sie »myhostname« mit Ihrem Hostnamen ohne Domainangabe </itemize> <tscreen><verb> #---------- /usr/local/lib/elm/elm.rc ------------------ # # der unqualifizierte Hostname hostname = myhostname # # die lokale Domain hostdomain = subdomain.domain # # der voll qualifizierte Hostname hostfullname = myhostname.subdomain.domain # #-------------------------------------------------------- </verb></tscreen> In der Kategorie »zu cool um wahr zu sein« gibt es eine Distribution von <tt>elm-2.4.24</tt>, die »PGP-fähig« ist. Um sie auszuprobieren, holen Sie sich folgende Datei: <tscreen><htmlurl url="ftp://ftp.viewlogic.com/pub/elm-2.4pl24pgp3.tar.gz" name="ftp.viewlogic.com:/pub/elm-2.4pl24pgp3.tar.gz"></tscreen> Sie enthält <tt>elm2.4.24</tt> mit Unterstützung für PGP. Die Konfiguration und die Übersetzung gehen den selben Weg wie beim normalen <tt>elm</tt>, was bedeutet, daß Sie vielleicht die oben erwähnten Patches einspielen müssen. Dafür ist es das wert, ich habe es laufen und mag es sehr. Natürlich muß eine neuere Version erhältlich sein, die <tt>elm-ME+</tt> einschließt. Während dieser Punkt nicht Linux spezifisch ist, wird er (fälschlicherweise) nichts desto trotz als ein ärgerlicher <tt>elm</tt>-Fehler wahrgenommen. Wir haben gehört, daß <tt>elm</tt> manchmal bei einer Nachricht versagt, die bei einigen sehr großen Bytezahlen unfähig ist, <tt>malloc()</tt> auszuführen. Die erkannte Umgehung dazu ist das Entfernen der globalen E-Mail Aliase im Postprozeß. (<tt>aliases.dir</tt> und <tt>aliases.pag</tt>). <p> Das ist kein Fehler in <tt>elm</tt>, es ist ein Konfigurationsfehler desjenigen von <tt>elm</tt>, von dem Ihre binäre <tt>elm</tt>-Distribution stammt. <tt>elm</tt> hat ein erweitertes und nicht kompatibles Aliasformat; Sie müssen sicher stellen, daß der von <tt>elm</tt> für Aliase verwendete Pfad sich von dem von <tt>sendmail</tt> oder <tt>smail</tt> verwendeten Pfad unterscheidet. Vom Umfang der Berichte zu diesem Problem her ist es offensichtlich, daß wenigstens eine Hauptdistribution »auf der Straße« in der Vergangenheit falsch konfiguriert wurde (von Scot W. Stevenson (<tt>scot at catzen.gun.de</tt>)). Das momentane <tt>metamail</tt>-Paket erfordert <tt>csh</tt> für einige seiner Skripts. Das Fehlen von <tt>csh</tt> (oder <tt>tcsh</tt>) ruft höchst interessante Fehler hervor. <sect1> mailx <p> Falls Sie kein lokales <tt>mailx</tt> Programm haben, ersparen Sie sich die Qual - holen Sie sich einfach das <tt>mailx</tt> Kit von Slackware 2.1.0 oder später, das eine nette Implementation von <tt>mailx</tt> v5.5 hat. Falls Sie die Übersetzung aus den Quellen im Sinn haben, <tt>mailx</tt> v5.5 kompiliert unter Linux ohne Patch, soweit Sie <tt>pmake</tt> installiert haben. Falls noch irgend jemand es verwendet: ich rate dringend dazu, das alte <tt>edmail</tt> Zeug von SLS1.00 zu entfernen und durch <tt>mailx</tt> zu ersetzen. <sect> Handhabung von E-Mails aus der Ferne <p> Dieser Abschnitt beschreibt die Verwendung von POP oder IMAP zur Handhabung E-Mails aus der Ferne (»Remote« E-Mails). Andere Optionen beinhalten NFS Anbindung der Queue-Partition auf den Clientmaschinen (hier kann es zu Problemen kommen, wenn nicht alle Rechner das gleiche »Lock«-Verfahren verwenden) oder die Verwendung eines webbasierten E-Mail-Zugangs, was heute recht verbreitet ist. <sect1> Geschichte <p> In einem Workstation Netzwerk war E-Mail immer ein Problem: <itemize> <item>Entweder Sie verwenden »<tt>user@computer.foo.com</tt>«. Dann gibt es allerdings Probleme, wenn »<tt>computer</tt>« mal nicht am Netz ist. Außerdem macht dieses Konzept den Aufbau Ihres Netzwerkes außerhalb bekannt und ein und dieselbe Person hat unterschiedliche Adressen, wenn sie den Computer wechselt, usw. <item>Oder Sie nehmen einen Mail-Hub (Verteiler) »<tt>mailhost.foo.com</tt>« mit Regeln für das Umschreiben der Absenderadresse, so daß es aussieht, als würde jeder Benutzer von der selben Adresse aus schreiben, sogar, wenn sie auf verschiedenen Computern arbeiten. </itemize> Aber wie können die Benutzer in diesem Fall ihre E-Mails lesen? Verwenden Sie <tt>ssh</tt> mit <tt>elm</tt> :-)? Das würde Ihren E-Mail-Hub überlasten. Eine Methode war Weiterleitung oder UUCP, SMTP, etc. Aber das ist zu umständlich. Dann kamen POP3/IMAP. Beide hatten anfängliche Sicherheitsprobleme, die jetzt durch die Verwendung von <tt>ssh</tt> bei neuen Versionen behoben worden sind. Teilweise muß lokal ein MTA wie <tt>qmail</tt>, <tt>smail</tt> oder <tt>vmail</tt> eingerichtet werden. Bei <tt>mozilla</tt> ist dieses aber nicht notwendig. <sect1> E-Mails empfangen <p> Hier kommen die Hauptnachteile von POP3: <itemize> <item>Das Paßwort wird über das Netzwerk im Klartext übertragen. <item>Sie müssen einen POP3-fähiges E-Mail Programm haben (wie z.B. Pine, Emacs, Mozilla, Netscape, Mutt, IE, Pegasus, Eudora, Claris) <item>wenn ein Benutzer »Roaming« nutzen will (Roaming: E-Mails von verschiedenen Maschinen aus lesen) kann das Auftauchen von E-Mails auf dem gestern verwendeten Computer eine Plage sein. <item>Einige POP Server (z.B. <tt>qpopper</tt>, <tt/ipop3d</tt>) auf hochfrequentierten Servern können die Maschinen stark belasten. Denken Sie über Kontrolloptionen nach (wie etwa: keine E-Mails auf dem Server belassen) und/oder Ändern des POP-Servers (z.B. <tt>cucipop</tt>), ebenso den Start von <tt>inetd</tt> aus zu verhindern. </itemize> Das Paßwortproblem kann durch Erstellen eines verschlüsselten Kanals für POP oder das Verwenden der APOP oder RPOP Erweiterungen gelöst werden. Das E-Mail-Leserproblem ist entweder durch den Wechsel des Programms lösbar (unterschätzen Sie dabei nicht den Aufwand, der für die Umschulung der Benutzer benötigt wird) oder durch Verwenden eines E-Mail-Download-Tools in Verbindung mit einem lokalen E-Mail Programm. IMAP ist POP gegenüber in verschiedenen Situationen vorzuziehen, wie etwa entferntem (und besonders Roaming-) Zugriff, während POP Sie auf eine LAN beschränkt, wo das Ausspähen von Paßwörtern kein sehr beunruhigendes Problem darstellt. Mark Aitchison berichtete von einer Lösung durch Verwenden der Dateien <tt>hosts.deny</tt> und <tt>hosts.allow</tt> (bitte sehen Sie in die <em><htmlurl name="NET-3 HOWTO" url="DE-NET-3-HOWTO.html"></em>; dies setzt voraus, daß Sie POP von <tt>inetd</tt> aus starten). Die Politik, E-Mails auf dem Server zu belassen oder nicht, hat Auswirkung auf den Speicherplatz des Servers und einfacheres Backup/Sicherheit der E-Mails genau so wie die Erlaubnis zu Roaming, so daß die beste Lösung von der Art der Organisation abhängt. Natürlich kann das nicht sicherstellen, daß Ihre E-Mails nicht gelesen werden können, aber niemand wird in der Lage sein, sie zu löschen; wenn alle Ihre E-Mails mit PGP verschlüsselt sind, ist das die beste Lösung. Hier sind einige POP Programme, die ein Testen wert sind: <itemize> <item> <tt>gwpop</tt> (ein guter Weg zu POP) ist sehr gesichert, seit es einen verschlüsselten Kanal erstellt und die E-Mails direkt in die Warteschlange legt; wie immer hängt es von Perl ab. <item> <tt>popclient</tt>, einfach zu verwenden: Zum Beispiel, wenn Ihr Login »john« und Ihr Paßwort »PrettySecret« lautet, starten Sie einfach: <tscreen><verb> popclient -3 -v mail.acme.net -u john -p "PrettySecret" -k -o JOHN-INET-MAIL </verb></tscreen> Es ist sehr entmutigend im Falle von Mehrbenutzer-Maschinen: andere Benutzer können Ihr Paßwort beispielsweise mit »<tt>ps auxw</tt>« einsehen. <item> <tt>fetchmail</tt>, für das aktiv Support geleistet wird und das unglaublich einfach zu verwenden ist: es wird in <tt>˜/.fetchmailrc</tt> konfiguriert, so daß Sie nur <tt>fetchmail</tt> starten müssen, wenn Sie Ihre E-Mails abholen wollen. Hier ist meine Datei <tt>.fetchmailrc</tt>: <tscreen><verb> poll mail.server protocol pop3: forcecr password PrettySecret; </verb></tscreen> Nicht vergessen, <tscreen><verb>chmod 600 ~/.fetchmailrc</verb></tscreen> anzuwenden, oder <tt>fetchmail</tt> wird danach fragen. Bitte beachten Sie, daß die Option »forcecr« benötigt wird, um <tt>fetchmail</tt> mit <tt>qmail</tt> verwenden zu können, das sich strikt an die RFCs hält. </itemize> <sect1> E-Mails senden <p> Dafür müssen Sie eine SMTP-fähige E-Mailsofware wie <tt>qmail</tt>, <tt>smail</tt>, <tt>vmail</tt> oder <tt>mozilla</tt> haben (letzteres kann alles: E-Mails lesen, POP empfangen, SMTP senden) Gehen Sie zu einem der vorhergehenden Abschnitte für die Installation und Einstellung desjenigen Programms zurück, das Sie am meisten mögen. Dann, wenn Sie »Testen« erreichen, versuchen Sie, einige E-Mails an einen lokalen Account auf dem E-Mail Verteiler zu senden. <sect1> E-Mails lesen <p> Wenn Ihr Programm nicht alles selbst macht, können Sie <tt>elm</tt>, <tt>pgp</tt>, <tt>mush</tt>, <tt>pine</tt> ohne ähnliche installieren. Viele gute Programme sind für Linux Plattformen frei erhältlich. <sect1> Testen <p> Um zu testen, ob Ihr E-Mail Server POP unterstützt, versuchen Sie: <tscreen><verb> telnet mailhost 110 </verb></tscreen> Falls das geht, werden Sie etwas wie »OK Pop server (...) starting« erhalten, geben Sie dann »quit« ein. Um einen <tt>ssh</tt> verschlüsselten Kanal zu installieren, testen Sie zuerst Ihren E-Mail Server mit der Eingabe: <tscreen><verb> ssh mailhost date </verb></tscreen> Wenn Sie das Datum zurückgeliefert bekommen, sollte das in Ordnung sein. Beachten Sie bitte, daß <tt>ssh</tt> nicht nach einem Paßwort fragt, dafür müssen Sie eine Datei <tt>.shosts</tt> auf dem E-Mail Server erstellen, die den Namen des Clients enthält, um die <tt/ssh/-Portumleitung zu testen (die <tt>gwpop</tt> nutzt), geben Sie ein: <tscreen><verb> ssh -n -f -L 12314:localhost:110 mailhost sleep 30 telnet localhost 12314 </verb></tscreen> Dann werden Sie hoffentlich das POP Banner des E-Mail Verteilers sehen. Wenn Sie <tt>ssh</tt> nicht verwenden, vergessen Sie nicht, »$ssh« im <tt>gwpop</tt> Skript auszukommentieren. Um zu prüfen, ob <tt>procmail</tt> läuft, versuchen Sie: <tscreen><verb>procmail -v</verb></tscreen> <sect1> Verwendung <p> Jetzt können Sie das <tt>gwpop</tt> Perl Skript bearbeiten und prüfen, ob alles ok ist, dann starten Sie: <tscreen><verb> gwpop -v Ihr-Benutzername POP password on mailhost: IhrGeheimesPaßwort </verb></tscreen> Wenn die »Fehlermeldungen« von <tt>gwpop</tt> normal sind, werden die E-Mails vom E-Mail-Hub auf Ihre lokale Maschine heruntergeladen, wohin immer Sie <tt>gwpop</tt> angewiesen haben, diese abzulegen (bitte mit einigen E-Mails testen). Sie können <tt>gwpop</tt> auch als Daemon verwenden: <tscreen><verb> gwpop -d $HOME/tmp Ihr-Benutzername </verb></tscreen> <tt>gwpop</tt> Nachrichten werden dann an <tt>syslog</tt> gesendet und <tt>gwpop</tt> wird endlos laufen; ein »HUP« Signal wird <tt>gwpop</tt> auffordern, Ihre E-Mails abzuholen. Hier können Sie die POP Software finden, die verwendet wird: <itemize> <item><tt><htmlurl url="ftp://ftp.unina.it/pub/Unix/pkgs/network/mail/gwpop" name="ftp.unina.it:/pub/Unix/pkgs/network/mail/gwpop"></tt> <item><tt><htmlurl url="ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail" name="ftp.informatik.rwth-aachen.de:/pub/packages/procmail"></tt> <item><tt><htmlurl url="http://www.cs.hut.fi/ssh/" name="http://www.cs.hut.fi/ssh/"></tt> </itemize> </article>