Startseite
Datenbanken (mySQL, SQL, etc.)
Mailserver
Einrichten eines Mailservers mit Postfix
Linux Email-Server
Shell
Sicherheit
Verschiedenes
Webserver
Suche



Zitat von www.tuxhausen.de/email-server.html

Linux_Email-Server_1v4.pdf   70 K
Linux_Email-Server_2v4__Emails_abholen_mit_fetchmail_.pdf   74 K
Linux_Email-Server_3v4__Emails_vom_Server_abholen_mit_IMAP_.pdf   197 K
Linux_Email-Server_4v4__Emails_versenden_mit_Postfix_.pdf   97 K

  

Linux Email-Server

Zitat von http://www.tuxhausen.de/email-server.html

(siehe dazu auch: http://de.wikibooks.org/wiki/Postfix)

Linux Email-Server

In dieser Artikel-Serie lernst du alles um einen kleinen Email-Servers aufzubauen.
Es handelt sich um einen kompletten Email-Server für kleine Arbeitsgruppen (so bis 30 Benutzer)

Voraussetzung für diese Serie sind leider grundlegende (keine speziellen) Netzwerkkenntnisse, du solltest grob wissen, wie der Email-Transport funktioniert und was ein DNS ist.

Der Email-Server soll folgende Aufgaben übernehmen:

  1. Abholen der Emails von mehreren Benutzern
  2. Emails lokal speichern
  3. Interne Emails direkt zustellen
  4. Externe Emails über SMPT-Server des Providers senden



Zu den einzelnen Punkten im Detail:

  1. Es existieren mehrere POP3-Fächer bei unserem Webhoster oder Provider. Zum Beispiel ein POP3 Fach für Angela und eines für Bert.
    Diese POP3-Fächer werden abgeholt und die Emails auf dem Server gespeichert. Jeder Benutzer greift nicht auf das POP3-Fach seines Providers/Hosters zu, sondern auf unseren Server.
    Der Server holt die Fächer von allen Benutzer regelmäßig ab.

  2. Alle Emails werden auf dem Server gespeichert. Jeder Benutzer kann verschiedene Ordner selber anlegen und die Emails verteilen. Aber es bleiben alle Emails auf dem Server, so können die Emails auch außerhalb des eigenen Arbeitsplatzes eingesehen werden.

  3. Schreibt zum Beispiel Angela Bert eine Email, so kümmert sich unserer Email-Server darum und verteilt die Email selber. Dafür brauchen wir dann keine Internet-Verbindung.

  4. Schreibt Bert eine Email an eine externe Adresse, also außerhalb der Firma, so gibt unser Server diese weiter und versucht nicht selber die Email zu versenden.
    Ist der Server nicht im Internet, soll er die Emails speichern und bei der nächsten Einwahl weiterleiten.

Vorbereitungen


Zuerstmal schreibt man sich alle wichtigen Dinge auf:

Benutzer und POP3-Fächer

Es ist am einfachsten wenn jeder Benutzer sein eigenes POP3-Fach bekommt, dann brauchen die Emails nicht sortiert zu werden. Allgemeine Fächer wie office@example.net kann man mit einer "Email-Weiterleitung" direkt beim Provider in ein POP3-Fach eines Benutzers weitergeleitet.

Ein weiteres kleines Problem:
Meist bestehen in kleinen Netzwerken die Benutzer-Namen einfach nur aus dem Vornamen, das ist zwar einfach und wenig Tipperei, aber von außen sollen Email-Namen in der Form A.Allen@example.net benutzt werden. Also, müssen die Emails doch sortiert werden, d.h.eine Email an A.Allen geht an angela, das Problem ist aber mit Postfix sehr einfach zu lösen.
Legst du deine Benutzer aber neu an, so verwende einfach als lokalen Benutzer-Namen die Email-Adresse, ist einfacher und übersichtlicher. (Ist das zu verstehen ? Wenn nicht bitte melden )

Noch ein Problem:
Meist geben die Webhoster den POP3-Fächern andere Namen als den eigentlichen Email Namen, ich mache das hier auch mal so. Wenn du kannst, sollten die Namen einen Bezug zum Benutzer herstellen

Benutzer Email-Adresse Name des POP3-Faches / Paßwort
angela A.Allen@example.net hdv45 / geheim
bert B.Beimer@example.net hdv46 / geheim2

Der Name des POP3-Servers: pop.puretec.de
der zu benutzende SMTP-Server (an den wir die externen Emails senden): smtp.puretec.de

Das Netzwerk

Ich gehe bei mal folgendem Netzwerk aus :

Unsere Domain ist example.net, das hat folgenden Grund: Ich hatte mal in einem Artikel werner@tuxhausen.dee geschrieben und bekam darauf Spam !! Und example.net ist laut RFC2606 für Doku reserviert.

Wir haben ein kleines Klasse-C Netzwerk mit der Netzwerkadresse 192.168.44.0 mit der Subnetmaske 255.255.255.0 oder kurz /24.

Wir haben ein Netzwerk mit einem Server (benton.example.net) und zwei Client-Rechnern (ac01.example.net und ac02.example.net).
Der Server hat ein Modem/ISDN-Karte/Router und ist damit ans Internet gebunden; er hat keine feste IP-Adresse, sondern bekommt diese bei der Einwahl vom Provider zugewiesen.
Als Email-Software wird Netscape Messenger und Microsoft-Outlook benutzt.


Hier mal ein Bild von unserem Beispiel-Netzwerk:

Software auf dem Server

Unser Netz steht, der Server ist bereit, alles läuft. Welche Software brauchen wir ?
Da wir unter Linux arbeiten, gibt es wie immer ca. 100 Wege das Ganze zu machen. Aber ich nehme für unseren Server folgende Software:

  1. fetchmail - zum Abholen der POP3-Fächer
  2. UW Imapd - dient dem Benutzer zum Abholen der Emails vom Email-Server
  3. Postfix - zum Versand der Emails

Warum diese ??
Naja, weil sie alle gut und stabil funktionieren und vor allem:

- fetchmail kann als Daemon laufen und so periodisch die Emails abholen
- UW Imapd ist sehr einfach einzurichten
- Postfix hat eine einfache Konfiguration (parameter = yes), und ist sehr sicher

So es geht los, zur besseren Übersicht habe ich das Ganze in drei Artikel gesplittet:

  1. Emails abholen mit fetchmail [1]
  2. Emails vom Server abholen mit IMAP [2]
  3. Emails versenden mit Postfix [3]




Im Text genannte Links

[1] Tuxhausen - Emails abholen mit fetchmail: http://www.tuxhausen.de/fetchmail.html
[2] Tuxhausen - Emails vom Server abholen mit IMAP: http://www.tuxhausen.de/imapd.html
[3] Tuxhausen - Emails versenden mit Postfix: http://www.tuxhausen.de/software_postfix.html

Erstellt: 2005-07-11 Autor: Markus Ungermann Kontakt
Letztes Update: 2002-08-21 URL: http://www.tuxhausen.de/email-server.html


Email-Server: Emails abholen mit fetchmail

Im ersten Teil des Email-Servers [1] erfährst wie du die Emails aller Benutzer abholst und verteilst.
Dazu dient uns fetchmail.


fetchmail

fetchmail [2] ist ein Linux Konsolenprogramm, es dient zum Abholen der Emails von einem Emailserver. Es holt die Emails ab und übergibt sie dem lokalen Emailsystem. fetchmail wird meistens genutzt um mehrere Emailserver hintereinander abzufragen, die empfangenen Emails werden dann an einen Emailverteiler (zum Beispiel: procmail) oder direkt in die Inbox der Benutzer weitergeleitet.
fetchmail kann die Emails von folgenden Servern abholen: POP2, POP3, IMAP4, MS Exchange Server (NTLM) , Kerberos POP,...
Man kann fetchmail direkt mit allen Parametern aufrufen, aber normalerweise legt man im home Verzeichnis die Datei .fetchmailrc an und schreibt dort alle Parameter rein.


Installation von fetchmail

Am einfachsten ist es fetchmail mit den Hilfsmittel deiner Distribution zu installieren (SuSE: Yast; Mandrake: Software-Manager; Debian: apt-get). Solltest du es dort nicht finden oder eine zu alte Version haben, kannst du es aus den Quellen installieren.

Sollte dein Provider dir anbieten die Emails sicher via SSL abzuholen, lies bitte diesen Tuxhausen-Artikel: fetchmail und SSL [3], dort steht auch drin wie du fetchmail aus den Quellen kompilierst.



fetchmail Konfigurationsdatei

fetchmail erwartet seine Konfigurationsdatei im Homeverzeichnis des Benutzers unter dem Namen ".fetchmailrc" .
Die Emails bitte NICHT als root abholen, am besten einen extra Benutzer dafür erstellen !!

Der Aufbau der Datei ist sehr einfach:
In dem folgendem Beispiel werden die Emails von Angela und Bert bei Puretec abgeholt.
Die Emails von Angela und Bert werden in die INBOX (meist /var/spool/mail/Benutzername) abgelegt.

Als kleinen Zusatz zu den Fähigkeiten fetchmails werden noch die privaten Emails von markus (m.u@gmx.net) abgeholt und diese mit procmail sortiert.
Auf procmail gehe ich zunächst nicht weiter ein, vielleicht kommt mal ein Artikel (bei Interesse bitte mailden):

#.fetchmailrc

#Server Puretec
server pop.puretec.de
proto pop3

#Benutzer und Password
user hdv45
pass geheim

#Optionen
to angela

#Weiterer User auf Server Puretec
#Benutzer und Password
user hdv46
pass geheim2

#Optionen
to bert

#----------------
#Server GMX
server pop.gmx.de
proto pop3

#Benutzer und Password
user m.u@gmx.net
pass geheim

#Optionen
keep
mda /usr/bin/procmail

Die einzelnen Zeilen haben die folgende Bedeutung:

server Der Name des Servers von dem du die Emails abholst
proto Das Protokoll des Servers. Meist wird POP3 benutzt
user Der Benutzername von dem du die Emails abholen willst
pass Das Passwort des Benutzers
to Emails direkt in die INBOX vom lokalen Benutzer gespeichert
keep Zum Testen kann keep verwendet werden, dann werden die Emails auf dem Server nicht gelöscht
mda Emails werden an das Programm (hier /usr/bin/procmail )weitergeleitet
(procmail ist ein Mailfilter-Programm)

Die Optionen to und mda möchte ich noch etwas erläutern:
Normalerweise hat man bei seinem Provider einen anderen Benutzernamen als auf dem privaten Arbeitsplatz-Rechner. Deswegen muß man fetchmail sagen was er mit der Email machen soll. Sagt du das nicht, landen alle Emails in der INBOX des Benutzers der die Emails abholt. Wenn du die Emails für mehrere Leute abholst, geht das natürlich nicht.

Mit der Option to werden die Emails dem angegebenen Benutzer zugeordnet und in /var/spool/mail/ abgelegt.
Im ersten Teil des Beispiels werden also alle Emails des Users hdv45 dem lokalen Benutzer angela zugeteilt. Die Emails landen dann in /var/spool/mail/angela.

Mit der Option mda können die Emails an ein anderes Programm weitergegeben werden. Sinnvoll wäre der Filter procmail oder ein Virenscanner-Programm (das aber nach dem Scan die Email weiterleitet !). Auf diese Optionen möchte ich hier nicht weiter eingehen.

Noch ein Tipp:
Holst du die Emails verschiedener User von dem selben Server ab, kannst du server und proto ab dem zweiten User-Eintrag sparen. Die Einstellung gilt für alle folgenden user; bis zum nächsten server.
Im obigen Beispiel trifft das auf hdv46 (Bert) zu.


Abholen der Emails

So, nachdem du deine .fetchmailrc geschrieben hast, probieren wir Sie aus. Am Besten schreibst du erstmal ein keep als Option, dann kann nichts mit deinen nichtabgeholten Emails passieren.
Nun logst du dich als der Benutzer ein, bei dem die .fetchmailrc im Homeverzeichnis liegt:

[tux ] $ fetchmail #Emails abholen
1 message for hdv45 at pop.puretec.de (1244 octets).
reading message 1 of 1 (1244 octets) . flushed
fetchmail: No mail for hdv46 at pop.puretec.de
fetchmail: No mail for m.u@gmx.net at pop.gmx.de

Du siehst nun folgendes:

  • Angela (user hdv45) hat eine Email mit der Größe von 1244 octets (1000 octets ~ 1KB) erhalten
  • Bert (user hdv46) und Markus privat (user m.u@gmx.net) haben leider keine neue Emails :-(


Das wars, die Emails wurden angeholt und einsortiert.
Denk daran die Option keep wieder aus der .fetchmailrc zu entfernen, sonst wurden sich einige Benutzer warum die Email immer wieder ankommt.

Daemon-Modus

Eine Sache solltest du aber noch ändern:
fetchmail sollte als Daemon laufen und selbstständig periodisch die Emails abholen, sonst müßtet du immer selber fetchmail eintippen.
Das ist auch aber auch nicht schwer:

Für den Daemon-Modus schreibt du folgendes:

[tux] $ fetchmail --daemon 500 #fetchmail holt die Emails automatisch alle 500 sec ab
[tux] $ fetchmail --quit #Beendet den im Daemon-Modus laufenden fetchmail

Mit dem Parameter --daemon 500 startest du den Daemon-Betrieb, und zwar holt fetchmail dann alle 500 Sekunden die Emails ab.
Und mit dem Parameter --quit beendest du den im Daemon-Modus laufenden fetchmail, sehr schön für Skripte.
Damit das Ganze auch noch nach dem nächsten Booten funktioniert solltest du dir ein Init-Skript schreiben, oder jeden Morgen um 6h fetchmail per cron-Job starten und abends wieder beenden.


Auf gehts zum nächsten Teil des Email-Servers: Emails vom Server abholen mit IMAP [4]


Tipps zum Betrieb von fetchmail

  • Startest du fetchmail mit der Option -v sieht du eine erweiterte Ausgabe (verbose) . Je mehr -v ( -vv -vvv) du einsetzt desto mehr siehst du. Diese Option ist gut zur Fehlersuche geeignet


Quellen und weitere Dokumentation


Eigentlich nur die man-Pages und die zu fetchmail Dokumentation.
Auf der fetchmail-Homepage [1] gibt es eine FAQ und die man-Pages als HTML


Im Text genannte Links

[1] Tuxhausen - Email-Server: http://www.tuxhausen.de/email-server.html
[2] Fetchmail Homepage: http://fetchmail.berlios.de/
[3] Tuxhausen - fetchmail und SSL : http://www.tuxhausen.de/software_fetchmail_ssl.html
[4] Tuxhausen - Emails vom Server abholen mit IMAP: http://www.tuxhausen.de/imapd.html




Erstellt am: 2002-04-13 Autor: Markus Ungermann
Last Update: 2006-08-14 URL: http://www.tuxhausen.de/fetchmail.html



Email-Server: IMAP-Server

Im zweiten Teil des Email-Servers [1] erfährst du wie die Benutzer die Emails von deinem Email-Server abholen.
Dazu dient uns der IMAP-Daemon.


Was ist IMAP ?

IMAP (Internet Message Access Protocol) ) ist ein Dienst der das Abholen von Emails von einem Server ermöglicht. IMAP ist ähnlich POP3, hat aber einen großen Vorteil: Bei IMAP bleiben die Emails auf dem Server und werden nicht auf dem Benutzer-Rechner gespeichert.
Wozu du das brauchst ?

  • Du kannst alle deine Emails von mehreren Rechner lesen, auch aus der Ferne.
  • Bei einem Crash deines Arbeitsplatz-Rechner verlierst du keine Email, da diese auf dem Server liegen (der hoffentlich ein funktionierendes Backup hat :-) )
  • IMAP funktioniert unter verschiedenen Betriebsystemen, du kannst deine Emails von Linux und Windows lesen (ohne große Anstrengungen)

Ein Paar technische Infos zu IMAP: IMAP basiert auf TCP/IP und hört auf Port 143, die aktuelle Version 4 ist in RFC 2060 [2] definiert. Weitere Info zu IMAP gibt es z.B: bei The IMAP Connection [3].


Installation von UW Imapd

Unter Linux gibt es verbreitete IMAP-Server:

  • der erste ist der UW Imapd [4] der University of Washington.
    Dieser ist klein, einfach und wird hier im diesem Artikel verwendet

  • der zweite ist der Cyrus IMAP Server [5] von Carnegie Mellon
    Dieser ist eher für größere Installation und schwieriger einzurichten.

So wie gesagt ich verwende hier den UW Imapd, warum sieht du gleich.

Am einfachsten ist es den UW Imapd mit den Hilfsmittel deiner Distribution zu installieren (SuSE: Yast; Mandrake: Software-Manager; Debian: apt-get).

Solltest du es dort nicht finden oder eine zu alte Version haben, kannst du es aus den Quellen installieren. Diese findest du auf den Seiten der University of Washington
Da ich selber den UW Imapd noch nie aus den Quellen kompiliert habe, möchte hier auf diese Variante nicht weiter eingehen.
Hinweisen möchte ich aber auf die Doku zur Installation [6].


UW Imapd Konfiguration

Jetzt kommt das allerbeste: Den UW Imapd brauchst du nicht zu konfigurieren, alles geht von alleine !!
Die University of Washington beschreibt das so :

"For ordinary "vanilla" UNIX systems, this software is plug and play; just build it, install it, and you're done."
Mein Versuch einer deutschen Übersetzung: Für übliche "reine" UNIX Systeme ist diese Software Plug and Play, compiliere, installiere, und du bist fertig.

Und da uns die Distributoren das compilieren auch noch abgenommen haben: installieren, fertig :-))

Solltest du allerdings spezielle Dinge brauchen (SSL, Kerberos, ...) mußt du selber Hand an den Quelltext legen.

Einige Dinge solltest du allerdings wissen:

  • UW Imapd erwartet alle neuen Emails unter /var/spool/mail/BENUTZERNAME und zwar für jeden Benutzer. Benutzt du allerdings fetchmail (Option to ), solltest du hier keine Probleme haben

  • Zusatz-Ordner werden im /home Verzeichnis des Benutzers angelegt.
    Ist der Server nicht nur ein Email-, sondern auch noch ein Samba-Server, könnte das Probleme geben: Jeder Benutzer kann seine Email-Ordner mit dem Windows-Explorer löschen !!
    Wie man das aber einfach mit dem Netscape Messenger umgehen kann, zeige ich dir gleich.



Mailprogramm-Konfiguration

Wie nun doch eine Konfiguration ?
Ja, aber in deinem Email-Programm. Ich verwende hier mal den Netscape Messenger der 4.x Serie, da dieser sehr gut mit Imap zusammenarbeitet.
Bei anderen Mailern sollte es ähnlich sein.

Zuerst die Grundeinstellungen unter /Einstellungen/Mail & Diskussionsforen/Mail-Server und dort auf Hinzufügen:


Das dürfte eigentlich klar sein:
Unter Server-Name: kommt unser Email-Server, unter Benutzername unser lokaler Benutzername.
Wenn du willst, kann der Messenger auch immer selber mal nach Emails sehen.

Dann bitte auf den Reiter IMAP klicken:



Hier kommen einige spezielle Dinge:
Zuerst finde ich es persönlich schön wenn die gelöschten Emails im Papierkorb landen. Du kannst die gelöschten auch markieren; dann sind sie rot durchgestrichen, stehen aber noch in der Liste und gehen erst weg wenn du den Ordner komprimierst (dazu gleich mehr).
Der Punkt "Posteingang beim Beenden leeren" sorgt für eine Komprimierung beim Beenden des Messengers, nützlich.

Jetzt noch auf den Reiter Erweitert klicken:


Jetzt kommt der Punkt den ich oben schon angesprochen hatte: Normalerweise liegen alle Emails (außer der Inbox) im home-Verzeichnis des Benutzer. Ist der Server auch noch ein Samba-Server, löscht der Benutzer schnell mal seine Emails, glaub mir.
Gibst du jetzt im Feld "IMAP-Server-Verzeichnis" emails/ an, dann laden alle Emails (außer der INBOX) im Verzeichnis /home/benutzername/emails und das löscht sich keiner.
Die anderen Felder kannst du leer lassen, die werden beim ersten Verbinden automatisch gefüllt.

So das war hier alles, du solltest nun die Emails abrufen und Ordner anlegen können.

Ach ja, die Komprimierung: Löscht du Emails aus einem Ordner, so sind diese erstmal nicht weg, sondern nur zum Löschen markiert. Gehst du auf einen Ordnern und drückst die rechte Maustaste oder oben auf /Datei, erscheint der Punkt "Ordner komprimieren". Klickst du den an, dann wird der Ordner aufgeräumt und markierte Emails gelöscht. Das kannst du aber auch automatisch machen lassen: Bei den IMAP-Einstellung "Clean up All Folders on Exit" (warum ist das in englisch ?!?) anklicken. Finde ich persönlich nicht so gut, Geschmackssache.


Gut, Emails holen wir mit fetchmail vom Provider ab, lesen diese über IMAP, fehlt nur noch das Senden der Emails. Also auf zum nächsten Teil der Serie Emails versenden mit Postfix [7]


Quellen und weitere Dokus


Die man-Pages und die zu UW Imapd gelieferte Dokumentation.
Infos zu IMAP bei The IMAP Connection [3].


Im Text genannte Links

[1] Tuxhausen - Email-Server: http://www.tuxhausen.de/email-server.html
[2] RFC 2060: http://www.isi.edu/in-notes/rfc2060.txt
[3] The IMAP Connection http://www.imap.org/
[4] Homepage UW IMAPD http://www.washington.edu/imap/
[5] Homepage Cyrus IMAP Server http://asg.web.cmu.edu/cyrus/imapd/
[6] Hinweise zu Installation UW Imapd http://www.washington.edu/imap/documentation/
[4] Tuxhausen - Emails vom Server abholen mit IMAP: http://www.tuxhausen.de/imapd.html




Erstellt am: 2002-04-13 Autor: Markus Ungermann Kontakt
Last Update: 2005-07-11 URL: http://www.tuxhausen.de/imapd.html



Email-Server: Postfix - Ein Email-System für Linux

(siehe dazu auch: http://de.wikibooks.org/wiki/Postfix)

Im dritten und letzten Teil des Email-Servers [1] erfährst du wie die Emails von deinem Email-Server versendet werden.
Dazu dient uns Postfix.

Postfix

Postfix ist ein sogennanter MTA, ein Mail Transfer Agent, er kümmert sich um den Versand und Empfang von Email. Er nimmt die Emails von den Nutzern im Netzwerk an, verteilt sie im eigenen Netzwerk oder übergibt sie an einen anderen MTA. Desweiteren kann er auch Emails außerhalb des eigenen Netzes annehmen und weiterleiten. Er ist quasi der Postbote; ein Tux mit einem Rucksack, der durch das Netz flitzt.

Postfix ist (wird) von Wietse Venema geschrieben worden und steht unter einer von der Mozilla Public License abgeleiteten Lizenz von IBM. Richtig, IBM, dort arbeitet Wietse und bei IBM hat Postfix einen anderen Namen "IBM Secure Mailer".

Postfix ist ein sehr sicheres und ziemlich einfach zu administrierendes Programm. Postfix istmodular aufgebaut und besteht aus vielen kleinen Programmen, hier mal eine kleine Übersicht (Quelle: Postfix-Doku) :



Erklärung:

  • gelbe Ellipsen = Programme
  • gelbe Kästchen = Mail-Queues
  • grüne Kästchen = Tabellen / Dateien

In der obigen Überischt erkennst du, welchen Weg die Emails durch die einzelnen Postfix-Programme nehmen.
Ich denke mal das reicht als grober Überblick, weiteres findest du in der Doku auf der Postfix-Homepage [2].



Installation von Postfix

Die Installation kann einfach oder schwer werden, es hängt davon ab ob und welcher MTA (sendmail, smail, qmail, exim, ...) vorher auf deinem System lief. Am besten einfach Postfix von deiner Distribution installieren, sollte überall dabei sein (bei Mandrake ist es der Standart-MTA).
Bei Debian solltest du nicht den exim deinstallieren (sonst wird noch weitere Software deinstalliert !! ), sondern einfach Postfix installieren. Dann wird auch exim entfernt.

Wenn du es aus dem Internet im Quelltext laden willst, solltest du vorher alles was mit sendmail zu tun hat umbennen ( d.h. sendmail, newaliases, mailq) und dann kompilieren und installieren (der üblich Dreisatz: ./configure, make, make install). Aber wie gesagt, es kann beim selberkompilieren sehr verschiedene Probleme geben und deshalb beschreibe ich es nicht, kann dir aber bei Fragen evtl. weiterhelfen.

Wenn dein Provider dir anbietet oder dich zwingt SMTP mit Authentifizierung (STMP Auth) zu verwenden, solltest du das tun. Die Vorgehensweis hierzu findest du im Tuxhausen-Artikel SMTP AUTH mit Postfix [3].




Konfiguration von Postfix

main.cf

Die Datei main.cf (meist unter /etc/postfix zu finden) ist die Hauptkonfigurations-Datei von Postfix. In ihr stehen alle wichtigen Parameter.
Die Datei erklärt auch direkt (in englisch) was der Parameter bewirkt, und wie er voreingestellt ist. Ich werde hier nicht alle Parameter erklären, sondern nur die wichtigen die wir für unseren Server brauchen!
Für dieses Beispiel hab ich Postfix in der Version 1.1.11 unter Debian Woody (3.0) benutzt.

  • queue_directory,command_directory, daemon_directory
    dienen zum Einstellen der Arbeitsverzeichnisse und können meist so stehen bleiben.

  • mail_owner
    legt den Besitzer der Queues und der meisten Postfix-Programme fest. Auf keinen Fall root verwenden !! Besser einen Benutzer anlegen der nur für Postfix zuständig ist und sich nicht einloggen kann, Empfehlung: mail_owner = postfix

  • myhostname
    legt fest welchen Namen der Mailserver haben soll. Bei uns also:
    myhostname=benton.example.net
    Gibst du hier keinen Namen an, probiert Postfix den Namen mit Hilfe von gethostname() selber herauszufinden.
    Ein Tipp: Der Name muß nicht der richtige Name des Rechners sein, solange der Name per DNS aufgelöst werden kann.

  • mydomain
    legt den Domain-Namen fest. Also für uns: mydomain=example.net

  • mydestination
    legt fest wofür der Server zuständig ist; d.h. für welche Domains die Emails angenommen werden. Günstig wäre unser Hostnamen, unsere Domain und noch unser localhost, die Einstellung dafür ist :
    mydestination= $myhostname, $mydomain, localhost.$mydomain
    Das $ vor $myhostname besagt, das der Namen benutzt werden soll der in myhostname steht. Die Variable $myhostname hat also den Wert benton.example.net
    Diese Vorgehensweise verhindert Schreibfehler und dient zum schnellen Ändern mehrerer Parameter.

  • alias_maps
    legt fest welche Alias-Datenbank verwendet werden soll und welches Format sie hat. Siehe nächsten Abschnitt
    Der richtige Eintrag für uns ist : alias_maps = hash:/etc/aliases

  • mynetworks
    An diesem Punkt trägst du die Netzwerke ein, die Postfix als vertrauenswürdig einstufen soll.
    Also für uns: mynetworks = 127.0.0.0/8, 192.168.44.0/24
    Die 127. Adresse stellt den localhost, also den Emailserver selber dar.

  • relayhost
    legt fest wohin Postfix die Emails die er selber nicht ausliefern kann (also alles außerhalb der Domain), senden soll. Wir wollen sie zu dem Mailserver unseres Providers senden, und zwar auf Port 25 (Standart SMTP-Port). Wir geben also an: relayhost = smtp.puretec.de
    Diese Einstellung hängt natürlich davon wie dein Povider es genau managt, es könnte sein daß du dich zuerst via POP3 anmelden mußt. Damit wollen die Provider Spam verhindern. Verlangt dein Provider SMTP mit Authentifizierung (STMP Auth), sollten du mal in Tuxhausen-Artikel SMTP AUTH mit Postfix [3] gucken.
    Genaueres bitte bei deinem Provider erfragen!
Wäre unser Server fest mit dem Internet verbunden, wären wir so gut wie fertig (allerdings wäre dieser Server dann extrem unsicher ); aber unser Server wählt sich ja nur bei Bedarf ein und kann nur dann die Emails abschicken.
Also müßen wir noch einige Dinge einstellen:
  • defer_transports = smtp
    verhindert das der Server selbständig versucht die Emails zu veschicken. Wir wollen dem Server nach der Einwahl explizit die Anweisung zum Email versenden geben. Mit dem Befehl postfix flush verschickt Postfix die Email, dieser Befehl gehöhrt also in dein Einwahlscript.
    Leider ist dieses Script sehr Distributionsabhängig, aber unter /etc/ppp/ip-up findest du ein Script das sich um die PPP-Anmeldung kümmert. Dort trägst du diesen Befehl irgendwo unten ein, dann sollte der Server nach der Einwahl die Emails abliefern. Ich presönlich habe mir ein Script für diesen Zweck geschrieben (für Debian potato).
    Leider gibt es ein kleines Problem: Wenn du online bist und eine Email schreibst, versendet Postfix diese nicht, da er ja nur explizit aufgefordert ausliefern soll!
    Tja, ich habe die Funktion wieder herausgenommen, aber im Postfix-Manual wird extra darauf hingewiesen. Weitere Hinweise zum Betrieb von Postfix an einem Einwahl-Rechner findest du hier [4] (eng.) (Ich danke Ralf Rascher für diesen Tip).
    Ist der Server allerdings nicht online und bekommt eine Email, so wird diese gespeichert und später versendet.

Das war es auch schon, alle anderen Parameter sind für unseren Zweck nicht direkt wichtig. Solltest du den Server aber in einer größeren Umgebung einsetzen die permanent mit dem Internet verbunden ist, solltest du noch einige Sicherheitsvorkehrungen gegen Spam einbauen. Alle weiteren Parameter sind in der Datei und in der Doku beschrieben.
Zuerst testen wir mal ob alles soweit in Ordnung ist:
[root]# postfix check

Achtung !! postfix check findet keinerlei Schreibfehler !!
Zum Überprüfen deiner Parameter folgendes eingeben:
[root]# postconf


Hier sollten jetzt alle Parameter die du in die main.cf geschrieben hast auftauchen.

Jetzt kannst du deinen Postfix mal starten:
[root]# postfix start

Gibt es Fehler in deiner Konfigurationsdatei oder falsche Rechte, weist dich Postfix nun darauf hin, ansonsten ist alles glatt gegangen.
Dieses Start-Kommando mußt du natürlich noch in deine Startscripte aufnehmen, sonst hast du nach dem nächsten rebbot keinen Postfix mehr. Das brauchst du aber nur zu machen, wenn du Postfix aus den Quellen kompilierst hast.

Beendet wird Postfix so:
[root]# postfix stop

Nach jeder Änderung mußt du Postfix sagen, daß er die Konfiguration neu einlesen soll, und zwar so:
[root]# postfix reload




Die Alias-Datenbank

Mit dieser Datenbank lassen sich lokale Adressen umschreiben und umleiten.
Wir brauchen diese Datenbank um einen virtuellen Email-Namen einem reelen Benutzer-Namen zuordnen, also alle Emails an B.Beimer@example.net gehen an den lokalen Benutzer bert.
Verwendest du für die lokalen Benutzer-Namen den Email-Namen, brauchst du die Alias eigentlich nicht, aber guck trotzdem mal rein.

Die Eintragungen finden in der Datei aliases statt, diese ist meistens im /etc Verzeichnis zu finden.
Achtung, sollte diese Datei noch von sendmail stammen, könnte es damit evtl. Probleme geben!

Ein Eintrag in der Alias-Datenbank sieht bei Postfix so aus:

  "B.Beimer": bert
"A.Allen": angela

root: bert
postmaster: root

test: tux@web.de

Die erste Zeile bedeutet, alle Emails an B.Beimer(@example.net) werden an bert(@example.net) weitergleitet. Das gleiche machen wir mit Angela.
Danach legen wir fest, daß alle Emails die an root gehen, zu bert geleitet werden. Danach gehen alle Emails von postmaster an root , aber wir eben festgelegt das diese an bert gehen; also kriegt bert alle Emails die an postmaster gehen.

Als kleinen Zusatz zu den Fähigkeiten von Postfix steht in der letzten Zeile: Alle Emails die nach test@example.net gehen, werden an tux@web.de weitergeleitet.

Wichtig ist noch: Kommt ein Punkt im Namen vor, benutze die " "Zeichen (siehe letzte Zeile).
Ich denk mal, so schwer war das nicht, oder?

Nach jeder Änderung in aliases mußt du Postfix sagen, daß er die Datenbank neu erzeugen soll (keine Angst, die aliases wird dabei nicht überschrieben) und das geht so:
[root]# postalias /etc/aliases

Mailing-Listen

Mit der Alias Datenbank kannst du auch prima kleine Email-Verteiler-Listen schreiben. Nehmen wir mal an du willst allen lokalen Benutzern eine Mitteilung schreiben, wäre es nicht prima wenn du eine Email an alle@example.net schreiben würdest, und alle bekommen sie?

Kein großes Problem mit Postfix:
Zuerst eine Text-Datei ( /etc/postfix/lists/alle ) mit der Empfänger-Liste anlegen.

Hier die Liste:

   #Interne Mailingliste von example.net
#DAS LETZTE KOMMA IST WICHTIG!!!
angela,
bert,

Und in die Alias-Datenbank kommt dieser Eintrag:

   #Mailinglisten
alle: :include:/etc/postfix/lists/alle

Dann noch schnell die Alias-Datenbank updaten und das war es schon, schreibst du nun eine Email an alle@example.net, bekommen angela und bert diese Email.

Das Ganze geht natürlich auch mit Adressen die nicht innerhalb deiner Domain liegen. Der Tuxhausen-Newsletter [5] funktioniert so. Deine Textdatei sieht dann in etwas so aus:

   #Tuxhausen Newsletter
#DAS LETZTE KOMMA IST WICHTIG

mu@web.de,
tux@linux.org,
"billy.regal@ikea.de",




Tipps zu Postfix


  • Auch Postfix hat ein sendmail, es ist aber nicht das Original sendmail gemeint, sondern das "Postfix-sendmail-Ersatz-Programm", damit bleiben die wichtigsten alten sendmail Befehl verfügbar, nur das sie jetzt von Postfix ausgeführt werden.

  • Mit dem Befehl mailq werden alle Emails angezeigt die noch nicht ausgeliefert wurden. Im Grunde versteckt sich hinter mailq der Befehl sendmail -bp

  • Mit postfix flush fordest du Postfix auf, alle wartenden Emails jetzt zu verschicken. Sehr nützlich wenn die Einwahl ins Internet erfolgt ist

  • Alle noch nicht abgeschickten Emails lagern unter /var/spool/postfix/deferred/. Löscht du eine Email aus dem Verzeichnis, wird sie nicht mehr versendet. Nützlich um eine fehlerhafte Email noch schnell abzufangen.

  • Hast du eine echte Domain (wie tuxhausen.de) und verwendest du diese Domain auch für dein Intranet, möchtest aber eine Email an einen externen Kollegen (extern@tuxhausen.dee) senden, der Kollege aber keinen Zugang zu deinem Postfix-Server hat, hast du ein kleines Problem. Schickst du die Email an unseren Server nimmst er sie an und leitet sie weiter, aber Lokal !!
    Postfix ist ja der Mailer der Domain (mydestination= $myhostname, $mydomain, ...), und so bleibt die Email in deinem Netz !
    Der einzige Weg den ich kenne: $mydomain aus mydestination löschen und alle internen Emails an @benton.example.net senden.

  • Wenn du eine Email aus der Warteschlange löschen willst mußt du zuerst die Queue ID ermittlen und diese dann löschen:
    [root]# mailq #Wartende Emails anzeigen
    -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
    9064B165C4* 582 Tue Aug 20 22:11:11 m.ungermann@tuxhausen.de
    mu@elzet80.de

    -- 0 Kbytes in 1 Request.

    [root]# postsuper -d 9064B165C4 #Wartende Email löschen
    postsuper: 9064B165C4: removed
    postsuper: Deleted: 1 message


Quellen und weitere Dokus

Der deutsche Mirror der Postfix-Homepage [2]
Außerdem gibt es das Red Hat Postfix HowTo [6] (englisch).
Im Linux-Magazin 06/2000 erschien ein Artikel über Postfix: Modular und sicher [7]

Über Postfix gibt ein recht gutes deutschsprachiges Buch: "Das Postfix Buch" von Peer Heinlein, erschienen bie SuSE Press (ist aber nicht nur für SuSE geeignet), ISBN 3-935922-41-8
Und natürlich die üblichen man Pages....



Im Text genannte Links

[1] Tuxhausen - Email-Server: http://www.tuxhausen.de/email-server.html
[2] Postfix Homepage: http://www.informatik.uni-bonn.de/pub/software/postfix/
[3] SMTP AUTH mit Postfix http://www.tuxhausen.de/postfix_smtp_auth.html
[4] Hinweise Postfix mit Dial-Up-Rechner (eng.): http://www-dt.e-technik.uni-dortmund.de/~ma/postfix/dialup.html
[5] Tuxhausen-Newsletter http://www.tuxhausen.de/newsletter.html
[6] Red Hat Postfix HowTo: http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/book1.html
[7] Artikel Linux-Magazin: http://www.linux-magazin.de/ausgabe/2000/06/Postfix/postfix.html

Erstellt: 2001-01-28 Autor: Markus Ungermann Kontakt
Letztes Update: 2005-07-11 URL: http://www.tuxhausen.de/software_postfix.html


(siehe dazu auch: http://de.wikibooks.org/wiki/Postfix)