Linux E-Mail Administrator HOWTO

Guylhem Aznar (guylhem at metalab.unc.edu) und Christian Böttger (christian.boettger at

linuxgazette.de) v3.2, 6. Juni 2002

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.

Inhaltsverzeichnis

1 Einführung, Copyright, und Disclaimer 3 1.1 E-Mail und Spamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Neue Versionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.4 Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 Danksagungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 Copyright . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.7 Eingeschränkte Garantie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Andere Informationsquellen 4 2.1 Mail User’s HOWTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 Usenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Mailinglisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.4 Andere Dokumente des LDP/DLHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.5 Bücher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Wie E-Mail funktioniert 6 3.1 E-Mail zwischen Vollzeit Internet Maschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Benachrichtigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.3 E-Mail an zeitweise internetverbundene Maschinen senden . . . . . . . . . . . . . . . . . . . 9 3.4 Ferne E-Mail und Fern-E-Mail Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.5 Mailbox Formate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 Voraussetzungen 12 4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5 Auswahl eines E-Mail Transportprogramms (MTA) 13 5.1 sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.2 smail v3.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 5.3 qmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

5.4 exim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6 Installation von Transportsoftware 14

6.1 qmail v1.03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.1.1 qmail beziehen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6.1.2 Dekomprimieren der Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.1.3 Vorbereitung der Übersetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 6.1.4 Konfigurierung von qmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 6.1.5 qmail Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1.6 Entfernen Ihres anderen MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 6.1.7 Das war es. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.2 smail v3.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2.1 smail konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.2.2 Andere gute Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 6.2.3 Neustart von inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.2.4 smail mit SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6.3 sendmail+IDA (veraltet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.3.1 Installation der Quellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6.3.2 Die Datei sendmail.m4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 6.3.3 Definition eines lokalen E-Mail Programms . . . . . . . . . . . . . . . . . . . . . . . . 37 6.3.4 Die sendmail+IDA dbm Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.3.5 Also welche Einträge werden wirklich benötigt? . . . . . . . . . . . . . . . . . . . . . . 38

6.4 sendmail 8.x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.4.1 Eine Beispieldatei 8.7.x mc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.4.2 sendmail v8 tidbits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

6.5 Lokale Zustellprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

7 Benutzer-Programm Administration 40 7.1 mutt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.2 elm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7.3 mailx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

8 Handhabung von E-Mails aus der Ferne 42 8.1 Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.2 E-Mails empfangen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 8.3 E-Mails senden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 8.4 E-Mails lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 8.5 Testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

8.6 Verwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1 Einführung, Copyright, und Disclaimer

1.1 E-Mail und Spamming

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.

1.2 Ziele

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.

1.3 Neue Versionen

Neue Versionen dieses Dokuments und viele andere deutsche HOWTOs finden Sie im Internet unter:

     http://www.linuxhaven.de/dlhp/

1.4 Feedback

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 /dev/null, also lassen Sie mich damit in Ruhe.

1.5 Danksagungen

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 Mail User HOWTO.

Hitoshi Hayakawa prüfte den qmail Abschnitt, Jun Morimoto fügte verschieden Bemerkungen über popclient und fetchmail hinzu und Takeo Nakano hat das Dokument durch ispell geschickt.

Falls ich jemanden vergessen habe, bitte ich um Verzeihung: Schreiben Sie mir einfach eine E-Mail.

1.6 Copyright

Dieses Dokument ist urheberrechtlich geschützt. Das Copyright für die englische Mail-Administrator HOW-TO, 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 General Public License 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.

1.7 Eingeschränkte Garantie

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.

2 Andere Informationsquellen

2.1 Mail User’s HOWTO

Es gibt eine Mail User HOWTO, welche auf die Benutzerprobleme ausgerichet ist. Sie wird momentan von Eric S. Raymond gepflegt.

2.2 Usenet

Es gibt keine Besonderheiten für die Konfiguration und den Start von E-Mail Software unter Linux. Folglich wollen Sie ganz bestimmt keine Fragen mit allgemeinem E-Mail Bezug in den de.comp.os.unix.linux.* Newsgruppen posten.

Posten Sie nicht in der de.comp.os.unix.linux 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 comp.mail.* Hierarchie gestellt werden, da sich diese Newsgruppen mit genau diesem Thema beschäftigen.

Wenn Sie nicht Linux spezifische Fragen in de.comp.os.unix.linux.* 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:

comp.mail.elm

Das ELM E-Mail System.

comp.mail.mh

Das Rand Nachrichten Verarbeitungssystem.

comp.mail.mime

Der MIME-Standard.

comp.mail.misc

Allgemeine Diskussionen über Computer E-Mail.

comp.mail.multi-media

Multimedia E-Mail.

comp.mail.mush

Die E-Mail Benutzer Shell (MUSH).

comp.mail.sendmail

Der BSD sendmail Vertreter.

comp.mail.smail

Der smail E-Mail Vertreter.

comp.mail.uucp

E-Mail in der UUCP Umgebung.

2.3 Mailinglisten

Es gibt viele sendmail, smail und qmail Mailinglisten. Die Adressen kann man in der Dokumentation unter /usr/share/doc/das_ausgewählte_Programm finden.

2.4 Andere Dokumente des LDP/DLHP

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:

• auf dem eigenen Computer in /usr/share/doc/ :-)

• Linux Networking Administrator’s Guide

• Mail User HOWTO

• Serial HOWTO

• Ethernet HOWTO

• UUCP HOWTO (falls Sie via UUCP versorgt werden)

2.5 Bücher

Das Folgende ist eine unvollständige Liste von hilfreichen Büchern:

• »Managing UUCP and USENET « 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.

• »Unix Communications« von The Waite Group enthält eine nette Beschreibung aller Teile und wie sie zusammenpassen.

• »Sendmail« 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.

• »The Internet Complete Reference« 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.

• »The Linux Networking Administrators’ Guide« 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.

3 Wie E-Mail funktioniert

Jetzt werden wir den Informationsfluß beschreiben, der üblicherweise stattfindet, wenn zwei Personen per E-Mail kommunizieren. Unterstellen wir, daß Alice von ihrem Computer wunderland.com eine E-Mail an Bob auf seinen Computer dobbs.com 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:

     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>>

Die Anordnung und die Bedeutung der Internet E-Mail Header sind durch einen Internet Standard, genannt RFC 822 , definiert.

3.1 E-Mail zwischen Vollzeit Internet Maschinen

Hier ist ein Diagramm des gesamten Vorgangs - die Etappen und die Terminologie werde ich unten erläutern.

                        +---------+          +-------+
     +-------+  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 |<----+
                                 +-----+

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 sendmail 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 dobbs.com 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:«.

     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

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 RFC 821 definiert.

Jetzt hat Bobs MTA die Nachricht von Alice. Er fügt einen Kopf an die Nachricht, der so oder ähnlich aussieht:

     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

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 procmail, 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 /usr/spool/mail/bob oder /var/mail/bob sein. Wenn er seine E-Mails liest, startet er seinen eigenen MUA, um in diese Datei zu sehen und sie zu editieren.

3.2 Benachrichtigung

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 biff(1) und comsat(8), statt. Das Programm biff ist ein Frontend oder eine Bedienoberfläche, welche Ihnen erlaubt, den comsat 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 sh/ksh/bash 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 xbiff. Falls Ihr Linux ein vorkonfiguriertes X-Desktop Setup hat, ist xbiff vermutlich installiert. Sehen Sie in der xbiff(1) Manual Page nach Details.

3.3 E-Mail an zeitweise internetverbundene Maschinen senden

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 wunderland.com 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 (sendmail) beträgt die Zeit erneuter Versuche 15 Minuten und der Ablaufzeitraum 4 Tage.

3.4 Ferne E-Mail und Fern-E-Mail Protokolle

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 RFC 1939 definiert) und IMAP (wird durch den Internet-Standard RFC 2060 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:

     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>

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 xbiff(1) 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 fetchmail, 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. fetchmail ist unter folgender Adresse zu finden:

     http://www.tuxedo.org/˜ esr/fetchmail/

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 fetchmail möglicherweise eine bessere Lösung als die POP/IMAP Funktionen, die Ihr E-Mail Programm bietet. fetchmail kann aufgefordert werden, im Hintergrund zu laufen und periodisch auf den Server zuzugreifen, so daß xbiff(1) oder ein anderes E-Mail Benachrichtigungprogramm wie für SMTP E-Mails arbeiten können. Zudem ist fetchmail 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 fetchmail) arbeiten:

                        +---------+          +---------+
     +-------+  tippt   |sendender| ruft auf |sendenden|
     | Alice |--------->|   MUA   |--------->|   MTA   |::>::::
     +-------+          |         |          |         |     ::
                        +---------+          +---------+     ::   auf der
                                                             ::   sendenden

3. Wie E-Mail funktioniert 11

                            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    |    .          +-----+
     +----------+    .

3.5 Mailbox Formate

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 HOW-TO 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 qmail). 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 emacs 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 grep auf so eine »Mailbox« angewendet wird, erhält man nichts, da alles, was grep zu sehen bekommt, Verzeichnisbits sind.

Microsoft Outlock Express .mbx Mailboxen können in ein RFC 822 Format mittels des Programms mbx2mbox umgewandelt werden.

4 Voraussetzungen

4.1 Hardware

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

     comp.dcom.modems

oder die verschiedenen Modem und Serial FAQs sowie die periodischen Veröffentlichungen im USENET.

5 Auswahl eines E-Mail Transportprogramms (MTA)

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 qmail. Es bietet hohe Sicherheit (obwohl vmail sicherer ist), große Geschwindigkeit (obwohl smail 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.

sendmail 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 wirklich veralteten sendmail Abschnitt in dieser HOWTO gibt. Falls Sie wissen, was Sie tun, wählen Sie sendmail (dann sollten Sie nicht diese HOWTO lesen), ansonsten empfehle ich generell qmail.

Engehende Beschreibungen dieser Programme folgen.

5.1 sendmail

BSD sendmail 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.

sendmail 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 sendmail 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 sendmail Versionen ein verbessertes Konfigurationssystem, das Sie von der legendären Grauenhaftigkeit der Konfigurationsdatei sendmail.cf fernhält. Am wichtigsten ist, daß sendmail 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).

Es gibt eine sendmail Homepage unter:

     http://www.sendmail.org/

. Sie beinhaltet Verweise zu einer ausführlichen sendmail Dokumentation, sollten Sie gerade mit einer angepaßten Konfiguration ringen.

Andere MTAs, wenn sie als »sendmail« bezeichnet werden, mögen die Semantik der sendmail Befehlszeilenoptionen nachahmen. Dies ist praktisch für E-Mail Programme, die oft erwarten, mit sendmail zu kommunizieren.

5.2 smail v3.2

smail war der erste ernste Versuch, sendmail zu ersetzen. Es hat ein einfacheres und sehr viel verständlicheres Konfigurationssystem als sendmail und ist ziemlich sicher. Einige Linux Distributionen vorinstallieren es eher als sendmail.

Zu einer Zeit war smails exzellente Unterstützung für gemischte TCP/IP und UUCP Seiten sein Hauptverkaufspunkt, aber als UUCP verblaßte, geschah das auch mit smail.

Wie bei sendmail ist es unschön, daß Sie an einer vorinstallierten smail Konfiguration zerren müssen.

Sehr selten könnten Sie in Verweisen auf eine »smail 2.5« stoßen. Dieses Programm ist seit langer Zeit bereits obsolet. Beschäftigen Sie sich nicht damit.

5.3 qmail

Das Programm qmail ist ein zu sendmail 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 qmail Homepage ist unter

     http://pobox.com/˜ djb/qmail.html

erreichbar.

5.4 exim

Das exim Programm ist ähnlich wie smail3, 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 exim Homepage lautet:

     http://www.exim.org/

Ich probierte es auf meinem eigenen Computer aus, es sieht aus wie eine nette Mischung zwischen dem smail Konfigurationssystem und der qmail Sicherheit, überdies mit dem Vorteil, unter der GPL zu stehen.

Ein Abschnitt, der erklärt, wie Ihr momentaner MTA durch exim ersetzt werden kann, wird demnächst hinzugefügt.

6 Installation von Transportsoftware

6.1 qmail v1.03

Sicher, schnell und einfach zu benutzen, das ist mein bevorzugter MTA (= »Mail Transport Agent« E-Mail Transportprogramm).

Momentan bietet keine Distribution eine Vorinstallation von qmail. Wir konzentrieren uns auf das Kompilieren und Installieren von qmail, da dies der einzige knifflige Teil ist: die Konfiguration ist ziemlich geradlinig.

6.1.1 qmail beziehen

Besuchen Sie

     http://www.qmail.org/

um die letzte Version herunterzuladen.

6.1.2 Dekomprimieren der Quellen

Danach werden sie ausgepackt durch Start von:

     mv qmail.tar.gz /usr/local/src
     cd /usr/local/src ; tar -zxvf qmail.tar.gz

Falls Sie eine »bz2« Version finden (ein neueres und besseres Packformat), ersetzen Sie tar einfach durch:

     bunzip2 qmail.tar.bz2
     tar -xvf qmail.tar

6.1.3 Vorbereitung der Übersetzung

Jetzt wechseln Sie in das qmail Verzeichnis, um die Konfigurationsvorgaben einzusehen:

     cd qmail; more conf-*

Sie sollten keine Vorgaben ändern müssen, aber Sie können z.B. ein alternatives Installationsverzeichnis angeben oder bessere flags zur Kompilierung setzen.

Jetzt rufen Sie

     mkdir /var/qmail

auf, um das Zielverzeichnis zu erstellen.

Wenn Sie keine Debian Distribution installiert haben, müssen Sie einige Benutzer IDs für die Benutzung von qmail hinzufügen: qmails hohe Sicherheit hängt davon ab.

Die Tatsache, daß qmail 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:

     # 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

Oder bearbeiten Sie /etc/passwd und /etc/group von Hand, um diese Benutzer selbst anzufügen.

Evan E. berichtete, er mußte den »-g groupid« Parameter für ein Vanilla groupadd (Caldera 1.2) benutzen, da ansonsten groupadd folgenden Fehler ergab: »Eine Gruppe mit diesem Namen existiert bereits.«

Sie können zum Beispiel dementsprechend hinzufügen:

     qmail:*:2107:
     nofiles:*:2108:

6. Installation von Transportsoftware 16

und

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

Jetzt können Sie

make setup check

aufrufen, um Ihre Einstellungen zu prüfen, dann

./config

um qmail zu konfigurieren. Achtung, Ihr Server muß über DNS auflösbar sein, oder ./config wird verwirrt werden.

Falls Sie keinen DNS Zugang haben, können Sie Ihren Servernamen direkt per

./config-fast foo.bar.com

angeben.

Nun müssen Sie einige Alias Namen installieren, da /etc/alias nicht von qmail verwendet wird, bis Sie ein optionloses Paket kompilieren und installieren. Hier ist mein Setup:

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)"

Sie müssen jede dieser Dateien in ˜ alias erstellen, wobei &guylhem in .qmail-root durch Ihr eigenes Login für root E-Mail ersetzt werden muß.

Eine Warnung an UUCP Benutzer: Vertrauen Sie nicht der qmail FAQ für UUCP; benutzen Sie statt dessen meine .qmail-uucp-default. 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:

• Für Heimatverzeichnisse, eingebunden im NFS Format, verwenden Sie das MAILDIR Format mit einem Patch für lokale E-Mail Leser. Patches sind unter

          http://www.qmail.org

erhältlich.

• 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 setenv (für csh) für ihren E-Mail Leser erstellen.

• Vermeiden Sie das /var/spool/mail/$Benutzer Format, da zu unsicher.

Um das Standardformat festzulegen, lesen Sie jede Datei in /var/qmail/boot, kopieren danach die, die Ihnen am besten gefällt, nach /var/qmail/rc.

/home/ oder /proc/ sind eine sichere Wahl, aber bevorzugen Sie /home/ aus Sicherheitsgründen.

6.1.4 Konfigurierung von qmail

In der Datei /var/qmail/control müssen einige Optionen angepaßt werden.

defaultdomain, me, plusdomain

me

ist Ihr »Full Qualified Domain Name« (voll qualifizierter Domainname, Abkürzung: FQDN), zum Beispiel lautet er auf meinem Computer barberouge.linux.lmm.com

defaultdomain

wird an jeden Hostnamen ohne Punkte angefügt, einschließlich defaulthost. Zum Beispiel können Sie es auf localnetwork setzen, so daß jede E-Mail, gesendet an »joe@seinpostfach« statt dessen ergänzt wird, um an »joe@seinpostfach.lokalesnetzwerk« gesendet zu werden. plusdomain

ist die Ausnahme: es wird an jeden Hostnamen angefügt, der mit einem Plus-Zeichen endet, eingeschlossen defaulthost (gesetzt in me, falls es mit einem Plus-Zeichen endet).

Diese drei Beispiele zeigen Ihnen die Macht und Leichtigkeit der qmail Konfiguration.

locals, rcpthosts 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 locals und rcpthosts ist, daß letztere nicht als lokale Aliases betrachtet werden, was nützlich ist, falls Sie E-Mails von einigen kostenlosen E-Mail Adressen wie yahoo.com oder gmx.de 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!

virtualdomains Dort können Sie den Standardmodus für den Ausgang bestimmen, z.B.

     #:alias-uucp

wenn Sie abgehende E-Mails nicht per UUCP, sondern per SMTP (Vorgabe) senden wollen:

     :alias-ucp

6.1.5 qmail Test

Nachdem nun alles konfiguriert ist, versuchen Sie

     sh -cf '/var/qmail/rc &'

um qmail zu starten (es wird den lokalen MTA nicht beeinträchtigen), dann

     echo to: meinylogin | /var/qmail/bin/qmail-inject

Sie sollten diese E-Mail in dem von Ihnen in /var/qmail/boot/ gewählten Format erhalten.

6.1.6 Entfernen Ihres anderen MTA

Wenn dieser Test erfolgreich verlaufen ist, beenden Sie Ihren frühreren MTA:

     killall -STOP daemon_name

Falls irgendwelche Child-Prozesse laufen, sollten Sie

     killall -CONT their_name

abwarten, noch einmal

     killall -STOP

wiederholen und solange wie nötig wiederholen.

Wenn es keine Child-Prozesse gibt

     killall -TERM

und dann

     killall -CONT

Entfernen Sie den MTA. Wie man das anstellt, hängt von der installierten Distribution ab, zum Beispiel

     rpm -e –nodeps

bei RedHat, Caldera und SuSE, oder

     dpkg -r –force-depends

bei Debian. Danach starten Sie:

     # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
     # ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

Nun setzen Sie »qmail-smtpd« in /etc/inetd.conf ein (alles auf einer Zeile):

     smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env
      /var/qmail/bin/qmail-smtpd

Falls Sie eine alte »nicht-SYSV-init« Distribution wie RedHat einsetzen, fügen Sie einfach in die Startskripte ein:

     sh -cf '/var/qmail/rc &'

Diese sollten sich gewöhnlich in /etc/local befinden, aber Ihr Aufwand mag variieren.

Für aktuelle »SYSV-init« fähige Distributionen (RedHat, Caldera, SuSE, Debian) fügen Sie dieses Skript zu

/etc/init.d oder /etc/rc.d/init.d/ hinzu:

Debian Version:

     #!/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

RedHat Version:

#!/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

Und erstellen Sie symbolische Links zu jeder /etc/rc.d/rcN.d/, zum Beispiel:

     ln -sf /etc/init.d/qmail /etc/rc1.d/K19qmail

Wenn der erste Buchstabe ein »K« ist, werden Sie qmail auf diesem Runlevel beenden (»1« für den Einzelmodus oder »6« für den Start), falls aber der erste Buchstabe ein »S« ist, wird qmail auf diesem Runlevel gestartet (Runlevel wie oben).

• Wie ist zu entscheiden, ob Sie ein »K« oder ein »S« setzen sollen? Machen Sie, was die Mehrheit der Daemons in diesem Runlevel tun.

• 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.

RedHat, Caldera und SuSE werden /etc/rc.d/ benutzen, anstelle der lesbaren /etc/ der Debian Distribu-

tion, d.h., zum Beispiel /etc/rc.d/rc1.d oder /etc/rc.d/init.d.

6.1.7 Das war es.

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

     killall inetd
     init 1

um in den Einzelnutzer Modus zu wechseln, danach:

     init 2

um zurück in Ihr normales Runlevel zu wechseln (angezeigt in /etc/inittab mit der »initdefault« Bezeichnung).

Sie können das qmail Skript auch von Hand starten, aber die »init« Methode wird Ihnen zeigen, falls das qmail 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 inn).

6.2 smail v3.1

smail 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.

6.2.1 smail konfigurieren

Installieren Sie das smail Binärpaket aus Ihrer Distribution (ich empfehle dies zu wählen) oder besorgen Sie sich die Quellen und bauen smail. Falls Sie smail von den Quellen selbst bauen, benötigen Sie Folgendes in Ihrer os/linux Datei, so daß sed Ihnen Shell Skripte liefert, die richtig arbeiten:

     CASE_NO_NEWLINES=true

Sobald das installiert ist, werden Konfigurationsdateien gewiß nach /etc/smail gelangen (aber das mag bei Ihnen anders sein, wenn Sie alte Distributionen verwenden); lassen Sie uns mit ihrer Bearbeitung beginnen.

Die Datei »config«

     # 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

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 smail Dokumentation für weitere Details oder Beispiele unter /usr/doc/smail/examples nach, ob etwas davon auf Ihre Situation paßt.

Die Datei »directors«

     # 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

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.

Die Datei »fidopaths«

.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

Erstellen Sie so eine Datei nur, wenn Sie ifmail und FIDO verwenden.

Die Datei »routers«

# 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

Sie sollten nur dann ein ifmail-Kapitel eintragen, wenn Sie ifmail 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 /etc/smail/maps/table 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.

Die Datei »transports«

# 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})$)"

Sie sollten ein ifmail Kapitel nur dann einbeziehen, wenn Sie ifmail 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 .config Dateien verwenden können.

Nehmen Sie zu Kenntnis, daß ich einige Teile wie »pipes« oder »file« auskommentiert habe, um die Sicherheit zu erhöhen.

Das Verzeichnis »maps/« Das Verzeichnis maps/ enthält die Dateien map und table:

Zuerst die Datei map:

#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

Bearbeiten Sie diese Datei wieder so, daß sie zu Ihrer Situation paßt (ich werde von polux.linux.eu.org versorgt).

Nun die Datei table:

*       uux

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 »*«!).

6.2.2 Andere gute Beispiele

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 smail auf anderem Weg dienen.

Die Datei »transports«

#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

Die Datei »table«

#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

6.2.3 Neustart von inetd

Um smail als SMTP Daemon zu starten, fügen sie eines der Folgenden zu /etc/inetd.conf hinzu:

     smtp stream tcp nowait  root  /usr/bin/smtpd smtpd

Alternativ:

     smtp stream tcp nowait  root  /usr/sbin/tcpd  /usr/sbin/in.smtpd

Abgehende E-Mails werden bei der Benutzung von elm automatisch versandt.

6.2.4 smail mit SMTP

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 /var/spool/smail/input. Wenn dann die nächste Verbindung zustande kommt, wird runq gestartet, das den E-Mail Versand auslöst. Jedenfalls ist das Empfangen von E-Mails das 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.

6.3 sendmail+IDA (veraltet)

Für große Seiten ist sendmail aufgrund der »unglaublichen Einfachheit der Verwendung« (ein sehr relatives Gefühl, wenn Sie qmail kennen) eine gute Wahl. Aber Sie müssen sich zwischen sendmail+IDA und sendmail 8.x entscheiden:

• Wenn Sie einen alten Kernel (1.0) haben: sendmail+IDA

• Wenn Sie keinen so alten Kernel (1.2) haben: sendmail+IDA und Quellcode Bearbeitung

• Wenn Sie einen neuere Kernel (2.0) haben, werden Sie sendmail 8.x wählen

Zur Erinnerung: Linux-Neulinge oder diejenigen, die über Sicherheit und Leichtigkeit der Konfiguration besorgt sind, sollten lieber die Verwendung von smail oder qmail in Erwägung ziehen, die sicherer und leichter zu nutzen sind.

6.3.1 Installation der Quellen

Falls Ihre Dirstribution Sie nicht mit einem installationsfertigen Paket von sendmail versorgt (».rpm« für RedHat, Caldera und SuSE, ».deb« für Debian), laden Sie einfach die Quellen herunter und starten:

     cd / ; tar -zxvf sendmail5.67b+IDA1.5.tgz
     cd /usr/local/lib/mail/CF

Kopieren Sie die Dateien sample.m4 und local.m4 nach »IhrHostName.m4«.

Ä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:

     make IhrHostName.cf

Kopieren Sie die entstandene Datei nach /etc/sendmail.cf.

Falls Sie nur UUCP haben, brauchen Sie keine der in der README.Linux Datei erwähnten Tabellen zu erstellen.

Sie müssen die Dateien nur per touch erstellen, damit der Makefile arbeitet. Bearbeiten Sie die ».m4« Datei, wenden Sie make auf die sendmail.cf 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 dbm 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

     /usr/lib/sendmail -bz

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 syslog starten, Ihre ein- und ausgehenden E-Mails im Log eingetragen werden. Sehen Sie für Einzelheiten in die Datei /etc/syslog.conf.

Die Quellen für sendmail+IDA finden Sie unter:

     vixe.cso.uiuc.edu

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 Linuxspezifischen Patches, die jetzt in den Vanilla Quellen sind. Ich habe Ihnen gesagt, daß dieses sendmail nur für alte Kernels war :-).

Es ist äußerst fraglich, wo dies notwendig ist: einfach »make« 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, sendmail+IDA laufen zu lassen, empfehle ich Ihnen sehr, die Version sendmail5.67b+IDA1.5 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 sendmail 8.x statt sendmail+IDA nutzen, aber ich sagte bereits, Sie sollten besser sendmail 8.x wählen :-).

6.3.2 Die Datei sendmail.m4

Für sendmail+IDA müssen Sie eine sendmail.m4 Datei erstellen, statt die sendmail.cf Datei direkt zu bearbeiten. Das Schöne daran ist, daß die Einstellung der E-Mail Konfiguration einfach, die in smail oder traditionellem sendmail extrem schwierig (wenn nicht sogar für manche ganz unmöglich richtig zu machen) ist.

Die sendmail.m4 Datei, die dem oben gebrachten smail Beispiel entspricht, sieht wie folgt aus:

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 -------------------

6.3.3 Definition eines lokalen E-Mail Programms

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 procmail.

Jetzt, wenn normalerweise deliver oder procmail 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 deliver oder procmail, die in einigen Linuxdistributionen als optionale Pakete enthalten sein können.

Dafür müssen Sie »LOCAL_MAILER_DEF« in der Datei sendmail.m4 definieren, das auf eine Datei zeigt, die wie folgt aussieht:

     # -- /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

Es gibt auch eine eingebaute Vorgabe für deliver in der Datei sendmail.mc, die in die Datei sendmail.cf einbezogen wird. Zur Spezifizierung verwenden Sie statt der Datei mailers.linux folgende Definition in

Ihrer sendmail.m4 Datei:
     dnl --- (in sendmail.m4) ---
     define(LOCAL_MAILER_DEF, DELIVER)dnl            # E-Mail Programm für lokale
     dnl                                             #  Zustellung

Unglücklicherweise geht sendmail.mc davon aus, daß deliver in /bin installiert ist, was bei Slackware 1.1.1 nicht der Fall ist; dort liegt es unter /usr/bin. In dem Fall müssen Sie es entweder mit einem Link täuschen oder deliver aus den Quellen neu aufbauen, so daß es unter /bin residiert. Bitte beachten Sie, daß procmail generell besser als deliver ist, zum Beispiel für die Filterung von E-Mails.

6.3.4 Die sendmail+IDA dbm Tabellen

Das Einstellen besonderer Umstande für Sites oder Domänene kann besser durch eine Anzahl optionaler dbm Tabellen erreicht werden, als durch eine direkte Bearbeitung der Datei sendmail.cf.

Sehen Sie für mehr Einzelheiten in die Ausgabe des Linux Journal vom Juli 1994 (wenn Sie die noch finden können :-)), die Dokumentation in den Quellen oder in das sendmail Kapitel zu der neuesten Version des Linux Documentation Projects Networking Administration Guide, das sehr bald verfügbar sein wird.

mailertable definiert spezielles Verhalten für entfernte Host oder Domains

uucpxtable erzwingt UUCP Zustellung der E-Mails an Hosts im DNS Format pathtable

definiert UUCP Pfade zu entfernten Hosts oder Domains

uucprelays Abkürzung von Pfadalias Pfaden zu bekannten entfernten Hosts

genericfrom konvertiert interne Adressen zu generischen, die nach außen sichtbar sind

xaliases konvertiert genererische Adressen nach/von gültigen internen Adressen

decnetxtable konvertiert RFC-822 Adressen zur DECnet Adressform

6.3.5 Also welche Einträge werden wirklich benötigt?

Wenn keine der optionalen dbm Tabellen verwendet werden, stellt sendmail E-Mails über »RELAY_HOST« und »RELAY_MAILER« zu, die in der Datei sendmail.m4 definiert sind, die zur Generierung der sendmail.cf 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.

6.4 sendmail 8.x

sendmail 8.7.x von Berkeley war die letzte Hauptrevision nach sendmail5. Es hatte einen wunderbaren eingebauten Support unter Linux: einfach

     make Linux

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 dbm selbst erkämpfen müssen.

Der Nachteil von sendmail 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.

6.4.1 Eine Beispieldatei 8.7.x mc

Fast wie sendmail+IDA verwendet sendmail v8 m4, um eine Konfigurationsdatei in eine volle sendmail.cf zu verarbeiten, die sendmail verwendet. Das Folgende ist meine momentane .mc Datei für meinen Rechner (PPP zum Internet für ausgehende E-Mails, UUCP für eingehende E-Mails).

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')

6.4.2 sendmail v8 tidbits

Es gibt einige Unterschiede, die ich gegenüber »IDA bigots« erwähnen will. Bis jetzt habe ich den folgenden entdeckt:

Statt

     runq

muß für die Warteschlange (»Queue«)

     sendmail -q

gestartet werden.

6.5 Lokale Zustellprogramme

Anders als die meisten Betriebssysteme hat Linux keine E-Mail Unterstützung »eingebaut«. Sie benötigen ein Programm, um lokale E-Mails zuzustellen, wie lmail, procmail oder deliver.

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«.

7 Benutzer-Programm Administration

7.1 mutt

Sie sollten kein Problem mit dem Kompilieren, Installieren oder Starten von mutt haben. Benutzer von qmail können entweder einen Patch beziehen oder es mit dem »-f« Flag starten, um ihre lokalen E-Mail Ordner zu lesen.

Wenn mutt Sie mit einem »unknown terminal error« (Fehler: unbekanntes Terminal) nach einem Distributionsupdate ärgert, rekompilieren Sie es einfach.

7.2 elm

elm kompiliert, installiert und startet sich anstandslos unter Linux. Für mehr Informationen sehen Sie in die elm Quellen und Installationsanweisungen. elm und die Filter benötigen die Rechte »2755« (Gruppe: »mail«) mit den Rechten »775« für /var/spool/Mail und Gruppeneinstellung »mail«.

qmail Benutzer können einen Patch beziehen, um die raffinierten Fähigkeiten von qmail zu nutzen oder starten elm mit dem »-f« Flag, um auf ihren lokalen E-Mail Ordner zu zeigen.

Bei einer Sache müssen Sie Vorsicht walten lassen, wenn Sie elm als MIME-fähig kompiliert haben, müssen Sie metamail im Standardpfad installiert haben oder elm wird nicht in der Lage sein, MIME kodierte E-Mails zu lesen, die Sie erhalten haben. metamail ist auf

     research.telcordia.com:/pub/nsb

und erhältlich.

Wenn Sie eine binäre Distribution verwenden, müssen Sie eine Datei /usr/local/lib/elm/elm.rc erstellen, um die einkompilierten Hostnamen und Domaininformationen zu überlagern:

• Ersetzen Sie »subdomain.domain« mit Ihrem Domainnamen

• Ersetzen Sie »myhostname« mit Ihrem Hostnamen ohne Domainangabe

     #---------- /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
     #
     #--------------------------------------------------------

In der Kategorie »zu cool um wahr zu sein« gibt es eine Distribution von elm-2.4.24, die »PGP-fähig« ist. Um sie auszuprobieren, holen Sie sich folgende Datei:

     ftp.viewlogic.com:/pub/elm-2.4pl24pgp3.tar.gz

Sie enthält elm2.4.24 mit Unterstützung für PGP. Die Konfiguration und die Übersetzung gehen den selben Weg wie beim normalen elm, 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 elm-ME+ einschließt.

Während dieser Punkt nicht Linux spezifisch ist, wird er (fälschlicherweise) nichts desto trotz als ein ärgerlicher elm-Fehler wahrgenommen. Wir haben gehört, daß elm manchmal bei einer Nachricht versagt, die bei einigen sehr großen Bytezahlen unfähig ist, malloc() auszuführen. Die erkannte Umgehung dazu ist das Entfernen der globalen E-Mail Aliase im Postprozeß. (aliases.dir und aliases.pag).

Das ist kein Fehler in elm, es ist ein Konfigurationsfehler desjenigen von elm, von dem Ihre binäre elm-Distribution stammt.

elm hat ein erweitertes und nicht kompatibles Aliasformat; Sie müssen sicher stellen, daß der von elm für Aliase verwendete Pfad sich von dem von sendmail oder smail 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 (scot at catzen.gun.de)).

Das momentane metamail-Paket erfordert csh für einige seiner Skripts. Das Fehlen von csh (oder tcsh) ruft höchst interessante Fehler hervor.

7.3 mailx

Falls Sie kein lokales mailx Programm haben, ersparen Sie sich die Qual - holen Sie sich einfach das mailx Kit von Slackware 2.1.0 oder später, das eine nette Implementation von mailx v5.5 hat. Falls Sie die Übersetzung aus den Quellen im Sinn haben, mailx v5.5 kompiliert unter Linux ohne Patch, soweit Sie pmake installiert haben.

Falls noch irgend jemand es verwendet: ich rate dringend dazu, das alte edmail Zeug von SLS1.00 zu entfernen und durch mailx zu ersetzen.

8 Handhabung von E-Mails aus der Ferne

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.

8.1 Geschichte

In einem Workstation Netzwerk war E-Mail immer ein Problem:

• Entweder Sie verwenden »user@computer.foo.com«. Dann gibt es allerdings Probleme, wenn »computer« 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.

• Oder Sie nehmen einen Mail-Hub (Verteiler) »mailhost.foo.com« 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.

Aber wie können die Benutzer in diesem Fall ihre E-Mails lesen?

Verwenden Sie ssh mit elm :-)?

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 ssh bei neuen Versionen behoben worden sind. Teilweise muß lokal ein MTA wie qmail, smail oder vmail eingerichtet werden. Bei mozilla ist dieses aber nicht notwendig.

8.2 E-Mails empfangen

Hier kommen die Hauptnachteile von POP3:

• Das Paßwort wird über das Netzwerk im Klartext übertragen.

• Sie müssen einen POP3-fähiges E-Mail Programm haben (wie z.B. Pine, Emacs, Mozilla, Netscape, Mutt, IE, Pegasus, Eudora, Claris)

• 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.

• Einige POP Server (z.B. qpopper, ipop3d) 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. cucipop), ebenso den Start von inetd aus zu verhindern.

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 hosts.deny und hosts.allow (bitte sehen Sie in die NET-3 HOWTO; dies setzt voraus, daß Sie POP von inetd 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:

• gwpop (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.

• popclient, einfach zu verwenden:

Zum Beispiel, wenn Ihr Login »john« und Ihr Paßwort »PrettySecret« lautet, starten Sie einfach:

          popclient -3 -v mail.acme.net -u john -p "PrettySecret" -k -o
           JOHN-INET-MAIL

Es ist sehr entmutigend im Falle von Mehrbenutzer-Maschinen: andere Benutzer können Ihr Paßwort beispielsweise mit »ps auxw« einsehen.

• fetchmail, für das aktiv Support geleistet wird und das unglaublich einfach zu verwenden ist: es wird in ˜ /.fetchmailrc konfiguriert, so daß Sie nur fetchmail starten müssen, wenn Sie Ihre E-Mails abholen wollen. Hier ist meine Datei .fetchmailrc:

          poll mail.server protocol pop3:
                  forcecr
                  password PrettySecret;

Nicht vergessen,

          chmod 600 ~/.fetchmailrc

anzuwenden, oder fetchmail wird danach fragen.

Bitte beachten Sie, daß die Option »forcecr« benötigt wird, um fetchmail mit qmail verwenden zu können, das sich strikt an die RFCs hält.

8.3 E-Mails senden

Dafür müssen Sie eine SMTP-fähige E-Mailsofware wie qmail, smail, vmail oder mozilla 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.

8.4 E-Mails lesen

Wenn Ihr Programm nicht alles selbst macht, können Sie elm, pgp, mush, pine ohne ähnliche installieren. Viele gute Programme sind für Linux Plattformen frei erhältlich.

8.5 Testen

Um zu testen, ob Ihr E-Mail Server POP unterstützt, versuchen Sie:

     telnet mailhost 110

Falls das geht, werden Sie etwas wie »OK Pop server (...) starting« erhalten, geben Sie dann »quit« ein.

Um einen ssh verschlüsselten Kanal zu installieren, testen Sie zuerst Ihren E-Mail Server mit der Eingabe:

     ssh mailhost date

Wenn Sie das Datum zurückgeliefert bekommen, sollte das in Ordnung sein. Beachten Sie bitte, daß ssh nicht nach einem Paßwort fragt, dafür müssen Sie eine Datei .shosts auf dem E-Mail Server erstellen, die den Namen des Clients enthält, um die ssh-Portumleitung zu testen (die gwpop nutzt), geben Sie ein:

     ssh -n -f -L 12314:localhost:110 mailhost sleep 30
     telnet localhost 12314

Dann werden Sie hoffentlich das POP Banner des E-Mail Verteilers sehen. Wenn Sie ssh nicht verwenden, vergessen Sie nicht, »$ssh« im gwpop Skript auszukommentieren. Um zu prüfen, ob procmail läuft, versuchen Sie:

     procmail -v

8.6 Verwendung

Jetzt können Sie das gwpop Perl Skript bearbeiten und prüfen, ob alles ok ist, dann starten Sie:

     gwpop -v Ihr-Benutzername
     POP password on mailhost: IhrGeheimesPaßwort

Wenn die »Fehlermeldungen« von gwpop normal sind, werden die E-Mails vom E-Mail-Hub auf Ihre lokale Maschine heruntergeladen, wohin immer Sie gwpop angewiesen haben, diese abzulegen (bitte mit einigen E-Mails testen).

Sie können gwpop auch als Daemon verwenden:

     gwpop -d $HOME/tmp Ihr-Benutzername

gwpop Nachrichten werden dann an syslog gesendet und gwpop wird endlos laufen; ein »HUP« Signal wird gwpop auffordern, Ihre E-Mails abzuholen.

Hier können Sie die POP Software finden, die verwendet wird:

   • ftp.unina.it:/pub/Unix/pkgs/network/mail/gwpop
   • ftp.informatik.rwth-aachen.de:/pub/packages/procmail
   • http://www.cs.hut.fi/ssh/