|
|
| Feldname | Inhalt |
|---|---|
| From: | E-Mail Adresse des Absenders |
| To: | E-Mail Adresse des Empfängers |
| Subject: | Das Thema der Nachricht |
| Date: | Das Sendedatum |
| Reply-To: | E-Mail Adresse, an die der Absender die Antwort wünscht (optional) |
Bei der Übermittlung der Mail setzt jede Vermittlungsstation ihren Stempel in den Header einer E-Mail. So sieht der Header einer E-Mail beispielsweise so aus:
Return-Path: <stephan.mattescheck@galileo-press.de>
Received: from localhost (localhost [127.0.0.1])
by gaston.willemer.edu (8.11.6/8.10.2/SuSE Linux 8.10.0-0.3) with ...
for <arnold@localhost>; Wed, 16 Jan 2002 13:35:42 +0100
Received: from pop3.web.de [217.72.192.134]
by localhost with POP3 (fetchmail-5.9.0)
for arnold@localhost (single-drop); Wed, 16 Jan 2002 13:35:42 +0100 (CET)
Received: from [212.227.126.171] (helo=moutng1.schlund.de)
by mx10.web.de with esmtp (Exim 4.02 #6)
id 16QoC7-0005m8-00
for arnold.willemer@web.de; Wed, 16 Jan 2002 12:25:27 +0100
Received: from [212.227.126.150] (helo=mxng07.kundenserver.de)
by moutng1.schlund.de with esmtp (Exim 3.22 #2)
id 16QoC6-0004tV-00
for arnold.willemer@web.de; Wed, 16 Jan 2002 12:25:26 +0100
Received: from [212.79.176.2] (helo=gw-galileo-tops.tops.net)
by mxng07.kundenserver.de with esmtp (Exim 3.22 #2)
id 16QoC5-0002I8-00
for arnold@willemer.de; Wed, 16 Jan 2002 12:25:25 +0100
Received: from stephan (stephan.galileo-press.de [192.168.57.228])
by gw-galileo-tops.tops.net (8.9.3/8.9.3) with ESMTP id MAA09037
for <arnold@willemer.de>; Wed, 16 Jan 2002 12:27:02 +0100
From: "Stephan Mattescheck" <stephan.mattescheck@galileo-press.de>
To: arnold@willemer.de
Date: Wed, 16 Jan 2002 12:26:39 +0100
MIME-Version: 1.0
Subject: Katalog
Message-ID: <3C45717F.12078.6C8A48@localhost>
Priority: normal
X-mailer: Pegasus Mail for Windows (v4.01)
Content-type: text/plain;
charset=ISO-8859-1
Content-description: Mail message body
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from Quoted-printable to 8bit by gaston.willemer.edu ...
Status: R
X-Status: N
Hallo, Herr Willemer,
|
UNIX und Mail
sendmail ist Zentrum der Mail
Wie schon erwähnt, verfügt eine UNIX-Maschine normalerweise auch über ein lokales
Mailingsystem. Zentrales Programm ist traditionsgemäß sendmail, das
mehrere Aufgaben übernimmt. Einerseits wartet sendmail als
SMTP-Dämon im Hintergrund auf
Aktivitäten am Port 25 und legt die empfangenen Mails in der Mailqueue ab.
Es kümmert sich aber auch um die Verteilung der im Briefkasten liegenden
Mails an die einzelnen lokalen Postfächer der Benutzer und es sorgt dafür, dass
Mail an andere Domänen an die entprechenden Rechner weitergeleitet wird.
SMTP (Simple Mail Transport Protocol)
SMTP über Port 25
SMTP ist ein Protokoll, um Nachrichten zu versenden. Das Protokoll wird in
RFC 788 und RFC 821 beschrieben. Es wird standardmäßig unter der Portnummer
25 abgewickelt. Man könnte den Port 25 also als eine Art Briefschlitz der
Maschine bezeichnen. Und das Programm sendmail ist der Postbote, der
die Post vom Briefkasten zur zentralen Verteilstelle schafft.
Hier werden von außen Nachrichten eingeworfen, die an Benutzer dieser Maschine
gehen. Die Benutzer der Maschine wiederum benutzen den lokalen Port 25, um
Nachrichten an andere lokale Benutzer oder an Benutzer anderer Maschinen
einzuwerfen.
Alle Nachrichten werden in der Mailqueue zwischengelagert.
Nachrichten an fremde Rechner reicht sendmail an die entsprechenden
Rechner weiter.
SMTP Missbrauch durch Spam
Schickt allerdings ein fremder Rechner E-Mail, die für einen ganz anderen
Rechner gedacht ist, gleicht sendmail den scheinbaren Fehler aus
und leitet
die E-Mail weiter. Das Problem ist, dass so auch Massenmails, die man auch
Spam nennt, über den fremden Rechner verteilt werden können. Hat man den
Absender noch geschickt gefälscht, ist der missbrauchte Rechner der einzige,
der zurück zu verfolgen ist.
Dieser Verhalten, das man >>Relay<< nennt, ist in den neueren Versionen von
sendmail abgeschaltet.
Mailservices im Internet versuchen zu erreichen, dass nur ihre Kunden
SMTP nutzen können. Da SMTP von Haus aus kein Passwort verlangt, gibt es
zwei Ansätze, sicher zu stellen, wer der Auftraggeber ist. Der eine Weg ist,
SMTP nur zu erlauben,
wenn von der gleichen TCP/IP-Nummer in einer bestimmten Zeit vorher ein
POP3 erfolgreich durchgeführt wurde.
Da POP3 ein Passwort verlangt, ist der Nutzer identifizierbar. Der zweite
Weg ist eine Erweiterung der SMTP um eine Passwortübermittlung.
Konfiguration durch sendmail.cf
Die Konfiguration des sendmail erfolgt in der Datei
/etc/sendmail.cf.
Es gibt kaum eine Literatur zu sendmail, die nicht auf die
Unlesbarkeit der
dieser Datei eingeht. Aus diesem Grund gibt es diverse Ansätze, die
Konfiguration zu vereinfachen. Ein Ansatz verwendet die Makrosprache m4.
Die entsprechende Konfigurationsdatei ist dann sendmail.m4.
Es ist allerdings meist gar nicht nötig, die sendmail.cf komplett zu
verstehen, da man sie selten von Grund auf neu erstellt. Es reicht, die
entscheidenden Einträge anzupassen. Die meisten
Einträge sind durch die Grundinstallation korrekt gesetzt.
qmail und smail als sendmail-Ersatz
In den letzten Jahren gibt es einige Mail Transprot Agents (MTA), die anstelle
von sendmail installiert werden können. Die prominentesten sind wohl
smail und qmail.
gaston> mailq
/var/spool/mqueue (1 request)
----Q-ID---- --Size-- -----Q-Time----- --------Sender/Recipient-
fB2AaPI01856 2511 Sun Dec 2 11:36 <arnold@willemer.de>
8BITMIME
<willemer@t-online.de>
|
O QueueDirectory=/var/spool/mqueue |
Um die obige Mail aus der Queue zu entfernen, muss man als root folgenden Befehl absetzen:1)
rm /var/spool/mqueue/?ffB2AaPI01856 |
root: arnold, \root aw: awillemer@os2aw us: usander@os2us all: aw, meier@marian.mymail.de, us owner-all: aw |
Jeder Benutzer kann seine lokale Mail an einen anderen Rechner weiterleiten, indem er im Benutzerverzeichnis eine Datei .forward anlegt und hier die Zieladresse z. B. uwe@myserver ablegt
gaston> mail No mail for arnold gaston> |
Wenn Post da ist, erscheint eine Liste aller vorliegenden Mails. Jede Mail hat eine Nummmer. Der Zeiger in Form eines Größerzeichen zeigt auf die erste neue E-Mail. Diese wird durch Return angezeigt. Die Anzeige erfolgt einfach per more.
gaston> mail Mail version 8.1 6/6/93. Type ? for help. "/var/mail/andrea": 4 messages 1 new 4 unread U 1 promotion5@amazon.de Sun Feb 3 20:58 289/12731 "Noch mehr tolle Preis" U 2 newsletter@jako-o.de Thu Feb 14 14:54 110/3977 "Post von JAKO-O - Feb" U 3 newsletter@jako-o.de Thu Feb 14 15:25 102/3594 "Post von JAKO-O - Feb" >N 4 promotion5@amazon.de Wed Feb 20 10:09 610/23184 "Alles versandkostenfr" & |
Das Programm mail hat vor allem zwei Vorteile: es ist auf jeder UNIX-Maschine verfügbar und es stellt keinerlei Ansprüche an das Terminal. Ansonsten bietet sich Ersatz mit elm oder pine für Terminalumgebungen oder Netscape und die diversen Mailclients der Desktops. Gemeinsam ist ihnen, dass sie die Nachrichten aus der lokalen Mailbox in /var/spool/mail lesen und Mails in die Mailqueue abstellen.
Die Mailprogramme bieten zur Verwaltung der E-Mails oft eigene Ordner an, in denen die Post sortiert werden kann. Diese werden normalerweise im gleichen Format wie das Postfach abgelegt, allerdings in einer eigenen Datei in einem eigenen Verzeichnis. So verwendet elm das Verzeichnis ~/.elm oder der Netscape Messanger das Verzeichnis ~/nsmail.
Das POP3 definiert nicht, wie Nachrichten zu senden sind. Das Senden
von Nachrichten wird üblicherweise über das SMTP abgewickelt.
POP3
RFC 1939
POP3 ist das aktuell gängige Protokoll, mit dem ein E-Mail Client seine
Nachrichten beim Server abholt. Es ist in der RFC 1939 definiert.
Im Prinzip arbeitet es fast wie ein
ferngesteuertes lokale Mailprogramm. Es meldet sich über die in der
/etc/passwd abgelegte Kennung an und liest das Postfach in
/var/spool/mail aus.
Ideal für gemietete Leitungen
Dieses Verfahren ist ideal für Telefonanbindungen, bei denen die Dauer
der Verbindung berechnet wird. Der Client zieht seine E-Mail vom Server
herunter, löscht sie dort und schließt die Verbindung. Das dauert normalerweise
nur wenige Minuten. Die Bearbeitung der Mail erfolgt offline auf dem
Arbeitsrechner des Anwenders.
Konfiguration eines CLients
Einen POP3-Client zu konfigurieren ist verhältnismäßig einfach.
Damit der POP3-Client weiß, wo er die Post abholen soll,
braucht er den Namen (oder die IP-Nummer) des POP3-Servers und manchmal noch
die Portnummer, die für POP3 standardmäßig 110 ist, wie man der
/etc/services entnehmen kann. Ansonsten benötigt das Mailprogramm
noch die Kennung und das Passwort auf der UNIX-Maschine.
Der Client hat die Möglichkeit,
nur die bisher ungelesenen Nachrichten abzuholen oder alle. Er kann nach
dem Download die Nachrichten stehen lassen oder löschen.
POP3 Server
In einer reinen UNIX-Umgebung wird ein POP3-Server gar nicht gebraucht,
da die E-Mails vom System per SMTP durchgeschoben werden. Darum gehört POP3
nicht zur
Standardinstallation einer UNIX Maschine. Soll aber die Post durch
andere Arbeitsplatzrechner gelesen werden, die selbst keinen SMTP Server
anbieten, wie MS-Windows oder Mac, dann installiert man einen POP3-Server.
Die Installation läuft normalerweise ohne weitere Konfiguration ab, da
der POP3-Server die Authentifizierung
ganz normal über die passwd-Datei
laufen lassen kann. Die E-Mails können direkt dort abgeholt werden, wo
sie der lokale Maildienst ablegt.
gaston> telnet gaston 110 Trying 192.168.109.144... Connected to gaston. Escape character is '^]'. +OK ready <3745.1014213784@gaston.willemer.edu> User andrea +OK Password required for andrea. pass daswerdeichhierauchgeradeimklartextschreiben +OK andrea has 4 visible messages (0 hidden) in 44471 octets. list +OK 4 visible messages (44471 octets) 1 12980 2 4064 3 3673 4 23754 . retr 1 +OK 12980 octets Return-Path: <ems+HA564Q8DYULUE6@bounces.amazon.com> Received: from localhost (localhost [127.0.0.1]) ... Mit vorzüglicher Selbstbeherrschung Roswita Presswurst |
IMAP4 ist definiert in RFC 1730, IMAP4r1 in RFC 2060.
IMAP (Internet Message Access Protocol)
Mehrere Clients
IMAP ist eine Neuentwicklung, die an einer Schwachstelle von POP3 einsetzt.
Wenn der Anwender nicht nur einen Computer hat, sondern beispielsweise einen
Arbeitsplatz in der Firma, einen Rechner zu Hause, von wo aus er hin und wieder
arbeitet und dann noch einen Laptop, den er mitnimmt, wenn er zu Kunden fährt,
dann verteilen sich die Nachrichten auf diese Rechner. Gerade in einem Intranet
wie in einer Firma möchte man möglichst von jedem Arbeitsplatz aus schnell
mal seine E-Mail einsehen können.
E-Mails bleiben auf dem Server.
Die Lösung für solche Situation ist naheliegend: man lässt die E-Mail auf dem
Server. Hier setzt das Protokoll IMAP an. Nicht nur die Daten liegen zentral,
sogar die Ordner, die sich Anwender normalerweise auf ihrem Client anlegen,
um ihre Post zu sortieren, werden auf dem Server gehalten. Unter IMAP heißen
diese Ordner Mailboxen. Da der Client die Daten niemals herunterladen muss,
kann man von jedem Arbeitsplatz mit einem IMAP Mailclient die E-Mail
bearbeiten. Man kann die Konsequenz auch weiter treiben, dass man eigentlich
nicht einmal zwingend einen Mailclient braucht. Es reicht, wenn man eine
Intranetanwendung hat, die man mit dem Webbrowser aufruft.
Vereinfachte Datensicherung
Für Firmen ergibt sich ein weiterer Vorteil bei der Frage der Datensicherung
der Mails. Das
ist natürlich ungleich einfacher, wenn die Daten zentral abgelegt werden,
als wenn man noch die Postfächer auf den verschiendenen Arbeitsplätzen sichern
muss.
Zwei Servervarianten
Es gibt zwei relevante Implementationen eines IMAP-Servers. Die erste stammt
vom IMAP-Entwickler Mark Crispin von der Universtät Washington und wird
als UW-Server bezeichnet. Die andere Implementierung ist von der Carnegie
Mellon University und läuft unter dem Namen >>Projekt Cyrus<<.
Der UW-Server braucht nach einer Installation auf einem UNIX-Rechner keine
weitere Konfiguration, sofern sendmail als MTA (Mail Transport Agent) verwendet
wird. Es gibt Aussagen, dass sich der UW-Server nicht mit dem Maildir-Format
von Qmail verträgt.3)
Der Cyrus-Server bietet die Möglichkeit, Mailquotas zu setzen. Diese Fähigkeit
ist vor allem wichtig für Internetprovider, die einem Benutzer nicht erlauben
können und wollen, dass ihre Mailbox beliebig groß wird. Dieser Vorteil wird
durch einen größeren Installations- und Wartungsaufwand erkauft. So müssen die
Mailboxen auf das Cyrus-System umgestellt werden und eine eigene
Benutzerverwaltung aufgesetzt werden. Für Provider hat letztere den Vorteil,
dass die /etc/passwd nicht mit reinen Mailbenutzern aufgebläht
wird und dezentral verwaltet werden kann.
Um den kompletten Mailverkehr eines Anwenders zu speichern, braucht man auf dem Server beträchtliche Kapazität. Das ist im Firmennetz kein Problem, da es fast egal ist, ob diese Daten auf dem lokalen Anwenderrechner liegen oder zentral abgelegt werden. Die zentrale Lagerung hat sogar den Vorteil, dass die Mail so leicht in die tägliche Datensicherung einbezogen werden kann. Für einen Provider ist es schon schwieriger, diese Datenmengen für jeden Kunden bereit zu stellen. Wenn einige Kunden dann auch noch mp3-Dateien oder Videodateien senden und empfangen, wird der Service schnell unbezahlbar. Einer der großen Freemaildienste im Web bietet einen IMAP-Dienst an. Er ist aber auf 8 MByte beschränkt. Der Umfang meiner E-Mail-Daten liegt inzwischen bei dem Zehnfachen und es sind keine der genannten Speicherfresser dabei.
Zusammenfassend kann man sagen, dass IMAP gegenüber POP3 eine bessere Lösung für das Intranet ist. Solange die meisten Internetnutzer keine Flatrate haben und solange der Speicher im Internet nicht großzügiger bemessen ist, wird POP3 hier sicher nicht so schnell abgelöst werden.
Große Firmen haben einen eigenen Mailserver im Internet stehen, der ihre
E-Mail per SMTP zugesandt bekommt. Dazu braucht man eine Standleitung
zum Internet und eine feste Internetadresse.
Für kleinere Firmen lohnt sich dieser Aufwand oft nicht. Immerhin erreicht
man mit einem POP3 Postfach beinahe die gleiche Wirkung.
Post sammeln: fetchmail
festchmail sammelt POP3 Postfächer ab
Die Lücke schließt das Programm fetchmail. Es holt bei Aufruf aus einer Liste
von POP3-Postfächern die E-Mail ab und stellt sie in das lokale Mailsystem per
SMTP ein. Dabei ist frei einstellbar, welches Postfach zu welchem
lokalen Anwender gehört. Der Aufruf kann durch die
crontab
in regelmäßigen
Abständen angestoßen werden oder beispielsweise jedesmal, wenn sowieso
eine Verbindung zum Internet aufgemacht wird.
poll Server protocol POP3 user User password passwd is localUser |
Leider muss hier das Passwort im Klartext stehen. Damit nicht jeder die Passwörter auslesen kann, muss die Datei mit chmod 710 .fetchmailrc für Fremde unlesbar gemacht werden.
Der folgende Aufruf klappert alle Mailserver ab und die E-Mails werden ins eigene Mailsystem gestellt.
fetchmail -k -L ~/fetchmail.log |
Damit man die E-Mails auch in den lokalen Briefkästen landen, muss noch einmal sendmail -q durchgeführt werden.
Der Parameter -k sorgt dafür, dass die Mails nicht auf dem fernen POP3 Server nach dem Lesen gelöscht werden. Insbesondere in der Testphase ist das eine hilfreiche Option. fetchmail liest nur ungelesene Mails. Sollen alle gelesen werden, verwendet man -a. Die Option -L schreibt die Protokolle in die angegebene Datei hier fetchmail.log im Heimatverzeichnis.
| Option | Bedeutung |
|---|---|
| -k | Mails auf POP3 Server nicht löschen |
| -a | lese alle Mails, nicht nur die ungelesenen |
| -L Datei | Protokolliere in Datei |
Mailserver und Domain
Domäne
Eine E-Mail Adresse hat den Aufbau: Username@Domäne. An sich ist diese
Adresse unvollständig, da auch der Computer benannt werden müsste, auf
dem der Anwender seinen Briefkasten hat. Da aber normalerweise der Benutzer
in einer Domäne bereits eindeutig gehalten wird, kann man die Angabe des
Computers sparen, wenn die Domäne selbst festlegt, wie sie die Nachricht an
den Benutzer weiterleitet.
Die Adresse arnold@willemer.de besagt, dass der User arnold in der Domäne
willemer.de gemeint ist. Die Domäne willemer.de hat einen Mailserver, der
mittels DNS (Domain Name Service) festgelegt
werden kann und der die E-Mail für die Domäne weiter verteilt.
In der Konfigurationsdatei des DNS-Servers, die die Namen auf die IP-Nummern umsetzt, gibt es eine Zeile mit dem Code MX. Diese bezeichnet den Mailserver. Hier der entsprechende Ausschnitt:
@ IN SOA mail.willemer.edu. root.mail.willemer.edu.
(
......
)
; Wer sind die zustaendigen Mailserver
IN MX 10 mail.willemer.edu.
|
In diesem Beispiel ist der Computer namens mail für die Domäne willemer.edu zuständig. Die Zahl hinter MX ist die Priorität. Werden mehrere Server aufgelistet, wird zuerst derjenige mit der kleinsten Nummer ausgewählt. Erst wenn der nicht ansprechbar ist, wird die Post an denjenigen mit der nächstkleinsten Nummer gesendet. Dieser wird in regelmäßigen Abständen versuchen, die Mail an den primär zuständigen Mailserver weiterzugeben, auf dem die Anwender ihre Mail abholen.
Diese Lösung ist recht einfach installiert und extrem billig. Sie hat
natürlich den Nachteil, dass der Mailserver ständig abgefragt wird und dass die
E-Mail nicht sekundengenau beim Empfänger auf dem Schreibtisch liegt.
Erstes Beispiel: Interne Firmenmail
sendmail verteilt interne Post
Soll nur eine einfache Möglichkeit erstellt werden, innerhalb einer Firma
E-Mails auszutauschen, kann man leicht auf einem ausgedienten PC
Linux installieren. Anschliessend wird für jeden Mitarbeiter ein
Benutzerkonto eingerichtet. Die lokale E-Mail-Verteilung zwischen den Usern
läuft
bei jeder Distribution. Gegebenenfalls ist zu kontrollieren, wie häufig
der Austausch der Mail abläuft. Dies kann man am Parameter -q des
sendmail festmachen.
Zeittakt
Die Option -q ohne weitere Argumente führt die Mailverteilung genau
einmal aus. Wird dagegen eine Zeitangabe mitgegeben, geht sendmail
in den Hintergrund
und wird in dem angegebenen Intervall aktiv. Durch die Buchstaben h (Stunden),
m (Minuten) und s (Sekunden) wird die Zeit angegeben. Beispielsweise bedeutet
-q 1h30m, dass sendmail alle anderthalb Stunden die Verteilung vornimmt.
IMAP oder POP3
Was nun noch gebraucht wird, ist ein POP3- oder IMAP-Server. Beides wird bei
den Distributionen normalerweise mitgeliefert, aber nicht installiert.
Man braucht hier nicht zu konfigurieren, die Standardinstallation reicht.
Damit ist der Server bereits fertig.
Blick auf den Client
Im Netz muss gewährleistet sein, dass jeder Arbeitsplatz den Mailserver
erreichen kann.
Auf den Clients muss TCP/IP installiert sein und es wird ein
POP3-kompatibler E-Mail-Client benötigt. Da POP3 von fast jedem
E-Mail-Client bedient wird, ist die Auswahl riesig. Bei IMAP muss man etwas
genauer hinsehen, aber die Chance, dass der Client auch diesen Standard
beherrscht, ist groß. Der Client braucht nur
wenige Parameter. Zunächst benötigt er den Namen oder die IP-Nummer des
Mailservers. Dann den Benutzernamen und das Passwort, mit dem sich der Benutzer
auf dem Mailserver einloggen kann. Zuletzt wird eingestellt, in welchem
Intervall die Clients den Server nach neu eingetroffener Mail abfragen sollen.
O DeliveryMode=deferred # ... DSsmtprelay.t-online.de # ... DMwillemer.de |
DeliveryMode=deferred erreicht, dass Nachrichten nur noch versandt werden, wenn sendmail -q aufgerufen wird.
DS beschreibt den Mailserver, an den abgehende Mails versandt werden. In diesem Fall wurde der Server smtprelay von T-Online verwendet. Dieser erlaubt, dass ich meine eigene Domain als Absender verwenden kann.
poll pop.foo.de protocol POP3 user arnold password aBc is arnold poll pop3.mail.de protocol POP3 user wili password 2ef is arnold poll pop.fake.de protocol POP3 user fake password PaSw is andrea |
Anschließend sollte der folgende Aufruf alle Mailserver abklappern und die E-Mails ins eigene Mailsystem stellen.
fetchmail -L /var/log/fetchmail |
Die E-Mails werden nach dem nächsten Aufruf von sendmail -q in die lokalen Briefkästen verteilt
echo "Post holen..." >/dev/xconsole fetchmail >/dev/xconsole echo "Post senden..." >/dev/xconsole sendmail -q |
|
Diese Seite basiert auf Inhalten aus dem Buch
Arnold Willemer: Wie werde ich UNIX-Guru Verlagsrechte bei galileo computing |
| Homepage |
(C) Copyright 2002 Arnold Willemer
|