 Zitat von www.tuxfutter.de/wiki/Einrichten_eines_Mailservers_mit_Postfix


Zitat
von http://www.tuxfutter.de/wiki/Einrichten_eines_Mailservers_mit_Postfix
[]
Warnung
Bevor es an die eigentliche Anleitung geht, zunächst
eine wichtige Warnung:
Auch
wenn die Konfiguration relativ simpel erscheint, so kann bei nicht
sachgerechter Ausführung der Einsatz eines eigenen Mailservers
sehr
schnell ein Schuss ins eigene Knie werden:
Nicht vernünftig eingerichtete Mailserver offenbaren
sich meistens als sog. offenes Relay. Das bedeutet, dass jeder
den Mailserver zum Versand von E-Mail verwenden kann. SPAMmer nutzen
normalerweise offene Relays zum Versand ihres Werbemülls. Da
offene
Relays relativ schnell aufgespürt und auch beim Provider
gemeldet
werden, kann der Internetzugang dadurch gesperrt werden. Der
Administrator des Servers wird dann Probleme haben, dem Provider sein
Fehlverhalten zu erklären.
Verschiedene Webseiten bieten Tests auf offene Relays an.
Standardkonfiguration
Nach der Installation von Postfix
(z.B. mit apt-get, YaST,
rpm
oder portage) geht es an die
Konfiguration des Servers.
Zentrale Konfigurationsdatei ist /etc/postfix/main.cf. In
dieser Datei steht alles Wesentliche, was postfix wissen muss.
Die Einträge command_directory, daemon_directory
und program_directory sind eigentlich immer korrekt
eingestellt. Rumfummeln sollte man an diesen Optionen auf keinen Fall!
[]
smtpd_banner
In
dieser Zeichenkette steht, wie sich Postfix bei dem anfragenden
Programm meldet. Normalerweise ist auch hier alles soweit korrekt
eingestellt, man kann aber auf Wunsch die Angaben ändern. In
den
meisten Fällen wird hier die Postfix Version angezeigt. Somit
sollten
alle etwas paranoid eingestellten Administratoren diesen Banner
anpassen.
Beispiel:
smtpd_banner = $myhostname ESMTP Exchange Server 2003 (Microsoft Windows 2003)
Dies sieht bei einem "telnet localhost 25" dann so aus:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 athene.dnsalias.org ESMTP Exchange Server 2003 (Microsoft Windows 2003) quit 221 Bye Connection closed by foreign host.
[]
myhostname
Die
Postfixvariable myhostname beinhaltet den vollen Rechnernamen und kann
in der main.cf explizit gesetzt werden. Die Variable sollte auf jeden
Fall gesetzt werden, wenn der Rechner über mehrere Namen
ansprechbar
ist.
Also:
myhostname = mail.mustermann-gmbh.de
weist Postfix an, sich unter den Namen
"mail.mustermann-gmbh.de" zu erkennen zu geben.
[]
mydestination
Ein
Rechner kann unter mehreren Namen im Netz vorhanden sein. Postfix muss
wissen, für welche Namen er zuständig ist. Eine
Möglichkeit ist die
Verwendung virtueller Domains, man kann aber auch die variable mydestination
verwenden.
In der Regel steht hier nur "localhost" und (z.B.)
"mail.mustermann-gmbh.de" eingetragen.
Der Eintrag "localhost" ist wichtig, da Cronjobs
Mails versenden. Diese wären bei Fehlen von "localhost" dann
nicht mehr zustellbar.
[]
mynetworks
Dieser Eintrag ist sehr wichtig!
Hier wird definiert, welche Rechner eines Netzwerks Postfix
für den Mailversand verwenden
dürfen.
Ein typischer Eintrag für ein privates Klasse-C Netz
sieht so aus:
mynetworks = 127.0.0.0/8, 192.168.1.0/24
Das
heisst, nur das Netzwerk 127.0.0.0 (in der Regel ist hier nur
"localhost" enthalten), sowie das Netzwerk 192.168.1.0 darf diesen
Server verwenden.
Man könnte auch 0/0 schreiben,
dies bedeutet aber, dass jeder Computer im Internet
diesen Server verwenden darf!
[]
relayhost
Mails werden von einem Mailserver zum nächsten
transportiert. Normalerweise wird per DNS
der, bzw. die für eine Domain zuständige(n)
Mailserver ermittelt (das
ist der berühmte MX; Mail-Exchanger) und an diesen direkt die
Post
ausgeliefert. Hat man keinen DNS (Intranet), sollte man die Option
"disable_dns_lookups" auf "yes" setzen. Dann wird der relayhost
über
/etc/hosts aufgelöst.
Manche Netzwerkstrukturen verlangen aber
den Mailtransport über eine festgelegte Route, bevor eine Mail
an einen
MX ausgeliefert wird.
So transportieren also z.B. mehrere
interne Mailserver die Mails an einen zentralen Mailserver (dieser ist
dann das erwähnte Relay), der dann wiederum die Mails an die
Empfängerdomains (bzw. deren MXe) verteilt.
[]
inet_interfaces
Hier kann loopback-only (Postfix 2.2 und
später), all oder eine Liste von
IP-Adressen angegeben werden.
Die
Einstellung bestimmt, auf welchen IP-Adressen Postfix E-Mails annimmt.
Soll z.B. ein Netzwerk in einem Router (auf dem auch Postfix
läuft) vom
Empfang / Versand von E-Mails ausgeschlossen werden, wird die
IP-Adresse in dieser Option nicht angegeben.
[]
relay_domains
Die Variable relay_domains legt fest,
für welche E-Mail-Adressen Mails auch ohne Authentifizierung
angenommen werden.
In der Regel sieht dieser Eintrag folgendermassen aus:
relay_domains = $mydestination
Zwar
kann man auch Dateien zur Ermittlung nehmen, aber es geht im Moment um
eine kleine Standardinstallation. Provider verwenden natürlich
kleine
Datenbanken.
Was also hat es mit dieser Variable auf sich?
Ein Postfix-Mailserver nimmt Mails an, für deren
Domains er per mydestination zuständig
ist. Darüber hinaus akzeptiert die Mails, die an relay_domains
gerichtet sind, um diese weiterzuleiten. Dies wird z.B. für
Backup-MX-Server benutzt, die bei Ausfall des zuständigen
Servers als
"zweite Wahl" die Mails annehmen, puffern und später an den
zuständigen
Server weiterleiten.
delay_warning_time
Diese
Variable legt fest, wieviel Zeit vergehen muss, bevor eine Warnung an
einen User verschickt wird, wenn eine E-Mail nicht zugestellt werden
konnte, weil der zuständige Mailserver nicht erreichbar ist.
Normal
sind 4 Stunden (delay_warning_time = 4h).
Die User brauchen keine Panik zu bekommen, denn es wird
weiterhin versucht, die Mail zuzustellen.
[]
maximal_queue_lifetime
Wenn
nach einiger Zeit festgestellt wird, dass eine E-Mail definitiv nicht
zugestellt werden kann, weil der für den Empfang
zuständige Server
nicht erreichbar ist, wird die Mail aus der Warteschlange entfernt.
Dies geschieht in der Regel nach 5 Tagen (maximal_queue_lifetime = 5d).
Der User, der die Mail verschicken wollte, wird vom System
darauf hingewiesen, dass das System endgültig aufgibt, die
gewünschte
Mail zu versenden.
[]
message_size_limit
"Schick mir doch mal dein Fotoalbum mit den Fotos deines
Karibik-Urlaubs!".
So etwas liest man immer wieder.
Der Urlauber sendet nun 300 MB an Daten!
Um
diese Menge zu limitieren, wird message_size_limit auf einen angenehmen
Wert eingestellt. Die Angabe ist in Bytes! Für eine maximale
Nachrichtengrᅵsse von 1 MB ist der Wert
also auf 1048576 Bytes
einzustellen.
[]
(Neu-) Start des Servers
Eines vorweg:
Ein Reboot des Rechners (z.B. per init 6, shutdown
-r now oder reboot) ist
natürlich nicht nötig!
Mit /etc/init.d/postfix start wird der
Mailserver gestartet. Sollte es eine Fehlermeldung geben, dass postfix
bereits läuft, wird /etc/init.d/postfix restart
verwendet.
Mit pstree
kann man nun nachsehen, ob der Dienst gestartet wurde. Ein vor sich hin
wartender postfix ist an
|-master-+-pickup | `-qmgr
zu erkennen.
[]
Test des Servers
Ist der Server gestartet und idlet dieser vor sich hin,
empfiehlt es sich, mit tail -f /var/log/mail.log in
einer Shell
das Logfile des postfix mitlaufen zu lassen und auf einer anderen Shell
(auf dem selben Rechner) eine Testmail an root zu schicken:
echo "Dies ist eine Testmail" | mail -s "Test" root@localhost
erledigt das.
Im Log taucht dann in etwa folgendes auf:
May 6 12:06:17 athene postfix/pickup[7178]: 87C8FD0CF: uid=500 from= May 6 12:06:17 athene postfix/cleanup[7377]: 87C8FD0CF: message-id=<20050506100617.87c8fd0cf@athene.dnsalias.org> May 6 12:06:17 athene postfix/qmgr[3467]: 87C8FD0CF: from=, size=325, nrcpt=1 (queue active) May 6 12:06:21 athene postfix/smtp[7379]: 87C8FD0CF: to=, delay=4, status=sent (250 2.0.0 j46A6Kh02547 Message accepted for delivery)
Der
wichtigste Eintrag ist "Message accepted for delivery". In diesem Fall
hat also alles geklappt und im Postfach von root sollte eine sinnfreie
Mail zu finden sein.

|