# Postfix

Dieses Buch steht im Regal EDV.

## Zusammenfassung des Projekts

* Zielgruppe:
* Lernziele:
* Buchpatenschaft/Ansprechperson: Zur Zeit niemand, das Buch darf gerne übernommen werden.
* Sind Co-Autoren gegenwärtig erwünscht? ja, sehr gerne.

# Postfix
## Vorbemerkungen

Dieses Buch erklärt beispielhaft die Einrichtung eines Postfix-Mailservers auf Basis von Debian Linux in der Version 3.1 (Sarge) aus dem Jahre 2005. Dies resultiert aus der starken Verbreitung von Debian sowie aus der Aktualität der verwendeten Version beim Erstellen dieses Buches. Die Installation sowie einige Konfigurationsschritte können bei anderen Distributionen abweichen und müssen entsprechend angepasst werden.

## Allgemeines

Sofern Sie beabsichtigen einen Mailserver nur für sich zu betreiben, dann haben Sie die Wahl zwischen Postfix, Qmail oder einem der anderen unzähligen Mailserver, die es derzeit gibt. Sollten Sie aber beabsichtigen einen Mailserver mit Web-Oberfläche z.B. für ihren Fußballverein oder ihre Firma anzubieten, dann werden Sie recht schnell mit den traditionellen Methode an ihre Grenzen stoßen. Hier ist eine schnelle, sichere Einrichtung eines Mailservers geboten, der obendrein noch gut zu warten ist und bei dem jederzeit „neue“ Module wie Virenscanner oder Spam-Filter nachinstalliert werden können.
In diesem Projekt werden wir einen Postfix-Mailserver erstellen, der seine gesamte Verwaltungsinformationen für Benutzer, Domains und Weiterleitungen in einer MySQL-Datenbank ablegt, die zudem noch gut zu pflegen ist und den höchsten Ansprüchen der Zeitersparnis genügt.

### Ziel

Sofern Sie beabsichtigen für eine größere Anzahl von Usern E-Mail-Accounts einzurichten, dann haben Sie sich bestimmt schon gefragt, wie große E-Mail-Provider mit der Flut an Kundendaten ruhig und gewissenhaft umgehen können. Um uns diese Erkenntnis im Umgang mit E-Mail auch zu ermöglichen, greifen wir auf Postfix zurück. Zusätzlich bietet Postfix nicht nur die Möglichkeit die Daten der User in einem Textfile abzulegen sondern auch die Userdaten in einer Datenbank zu speichern. Wir werden hierfür die bereits bekannte und hier vorgestellte MySQL-Datenbank verwenden. Außerdem wollen wir unseren Usern noch die folgenden Funktionen für deren E-Mail-Postfächer zur Verfügung stellen:
* Die Möglichkeit mit dem bisher bestehenden Client (Kmail oder Outlook) die E-Mails via POP3/IMAP abzuholen
* Die einfache Möglichkeit sich die E-Mail über einen Webzugang im Web-Browser anzeigen zu lassen
* Die E-Mails vor der Zustellung in die Postfächer nach Viren zu scannen
* Und Last but not Least: die E-Mails ebenfalls vor dem Zustellen in die Postfächer noch einem SPAM-Filter vorzulegen, der ggf. bekannte SPAM-Mails herausfiltert.

### Erforderliche Vorbereitungen

* Eine SQL-Datenbank: Hier bietet sich die freie Datenbank MySQL oder PostgreSQL an.
* SMTP-, POP3-, IMAP-Dienste: Hierfür bietet sich Postfix und die Courier-Paketfamilie an
* Postfix

### Schritt für Schritt zum eigenen Mailserver
#### Schritt 1

Installation der erforderlichen Debian-Pakete mit dem apt-get-Befehl.
Die Installation der Postfix-Binary-Pakete mit apt-get sollte eigentlich nicht schwer sein. Hierzu gibt es je nach Distribution fertige Pakete, die Sie mit einem einfachen Befehl über das Paketmanagement installieren. Es könnte sein, dass Sie in ihrer Distribution noch die Quellen für Postfix in der Version 1.xx haben. Sollten Sie den Postfix in der neueren Version installieren wollen, dann fügen Sie die folgenden Zeilen ihrer sourceslist hinzu.
Updated: 03.10.2006 APT-Pinning ( http://www.backports.org/dokuwiki/doku.php?id=instructions )
Bei unserem Debian-Server ist es der Befehl:
Oben wird auch das Paket Postfix für PostgreSQL-, LDAP- und PCRE-Unterstützung installiert. Falls Sie dies nicht wünschen, lassen Sie diese Pakete weg.
Installieren Sie mit dem gleichen Befehl auch noch folgende Pakete:
* Postfix-mysql, Postfix-doc
* Mysql-client, Mysql-Server (sofern noch nicht auf dem System vorhanden)
* Courier-Authdaemon (courier-authlib-mysql), Courier-authmysql, Courier-POP, Courier-POP-ssl, Courier-imap, Courier-imap-ssl
* Postfix-TLS, Libasl-modules-plain, sasl-bin, libpam-mysql, openssl
* Spamkiller und Virenscanner
* sqwebmail
* phpmyadmin (optional)
Postfix ist nun installiert, aber noch nicht konfiguriert. Debian hat außerdem die Pakete postfix-mysql, postfix-pgsql, postfix-ldap und postfix-pcre installiert. Bitte beachten Sie an dieser Stelle, dass Sie alle anderen MTA (Mail Transport Agents) stoppen, damit diese nicht in irgendeiner Form dazwischen funken.
Außerdem hat Debian für Sie schon die folgenden Daten angelegt:
Das Verzeichnis /etc/postfix - Hier befinden sich die Konfigurationsdateien von Postfix, insbesondere ist hier die master.cf zu erwähnen. Außerdem sind dort noch die folgenden Files untergebracht.
Auf diese werden wir im weiteren Verlauf noch eingehen.
Die Datei /etc/init.d/postfix – Die Startdatei, um Postfix zu starten
Das Verzeichnis /usr/lib/postfix – Hier findet man die Module von Postfix, sowie die erforderlichen Unterprogramme
/usr/sbin/postfix – In diesem Verzeichnis finden Sie das Postfix Master Programm
/etc/rc2.d/ - Dort befindet sich das Start Skript (S20postfix), welches Postfix beim Erreichen des Level2 startet. Es handelt sich hierbei um ein Skript, das von S20postfix auf ../init.d/postfix verweist.
Also wenn wir unserem System trauen, dann startet unser Server den MTA Postfix auf Level2 und beendet den MTA beim herunterfahren auf Level1. Der Start schlägt jedoch fehl, solange in /etc/postfix/ die main.cf fehlt. Diese können wir uns von der Beispielkonfiguration kopieren.
Alternativ nutzt man den Befehl dpkg-reconfigure postfix, der uns mittels eines Dialog-Menüs die initiale Konfiguration für uns erstellt.

#### Schritt 2

Bild

#### Schritt 3

Bild

#### Schritt 4

Bild

#### Schritt 5

Bild
Das Ergebnis können Sie sich in der /etc/postfix/main.cf anschauen: Betrachten Sie auch das File /usr/share/postfix/main.cf.dist , eine auführlich dokumentierte Version:

## Die Datenbank mit den Verwaltungs- & Userdaten erstellen

Verbinden Sie sich zur Datenbank (MySQL) oder benutzen Sie PhpMyAdmin um die nachfolgenden Datenbanken anzulegen und die nachfolgenden Daten einzugeben.
Zuerst legen Sie mit dem Befehl CREATE DATABASE [Datenbankname] eine Datenbank an, in der die Daten gespeichert werden können.
Danach legen Sie die Tabelle Maildomains in der soeben erstellten Datenbank mail an.
In der soeben erstellten Tabelle Users sollen später dann die Informationen über E-Mail-Adresse und Passwort der Benutzer abgelegt werden. Diese werden wir später mit Leben füllen.
Da Sie natürlich auch User haben werden, die die E-Mails an einen anderen Account weitergeleitet bekommen wollen, sollten Sie diese ebenfalls berücksichtigen. Hierzu legen Sie am besten eine zusätzliche Tabelle an.

### Der User Mailsystem – als Pseudo-User

Sollten Sie viele User anlegen müssen, dann haben Sie auch entsprechend viele Postfächer zu verwalten. Mit einem virtuellen User-Mailsystem können Sie es sich ersparen, für jedes Postfach eine eindeutige UserID erstellen zu müssen.

### Postfix konfigurieren

Nun sollten Sie die Postfix-Konfigurationsdatei im Verzeichnis /etc/postfix/main.cf an ihre Bedürfnisse anpassen:
7.Schritt: SMTP-Authentifizierung konfigurieren
Zunächst erstellen Sie für die Konfigurationsdatei smtp.conf ein Verzeichnis unterhalb des /etc/postfix Verzeichnisses. Erstellen Sie nun in diesem Verzeichnis die smtpd.conf Datei mit folgendem Inhalt:
Mit diesem Befehl erstellen Sie das Zertifikat, welches zuvor in der main.cf angegeben wurde.
Beim Erstellen des Zertifikats werden Sie aufgefordert, einige Angaben zu machen, die dann in das Zertifikat gespeichert werden. Sie werden aufgefordert einen DN ("Distinguished Name") sowie weitere Angaben zu machen, von denen Sie jedoch einige leer lassen können. Es gibt für einige Felder einen Standardwert. Wenn Sie ein Feld leer lassen wollen, so geben Sie einen '.' ein.
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:RheinlandPfalz
Locality Name (eg, city):Koblenz
Organization Name (eg, company) [Internet Widgits Pty Ltd]: example.com
Organizational Unit Name (eg, section):Bucherstellung
Common Name (eg, YOUR name):Peter Example
Email Address: sample@example.org
Danach sollten sich in dem neu erstellten Verzeichnis die folgenden Dateien befinden:
8.Schritt: Konfiguration des POP3/IMAP Dienstes
Die Standard Einträge sind zum leichteren Auffinden mit einem > gekennzeichnet. In Ihrer Datei hingegen sind die Werte aus den mit < gekennzeichneten Zeilen einzutragen.
Danach /etc/courier/authmysqlrc
Danach starten Sie den courier-authdaemon neu. mobil:/etc/courier# /etc/init.d/courier-authdaemon restart Stopping Courier authdaemon: done. Starting Courier authdaemon: done.
9.Schritt: Testphase
Postfix
User Postfix suchen:
Die Gruppe Postfix finden:
Postfix unterstützt die folgenden Module:
Die Module Mysql und LDAP noch hinzufügen In unserem fall einfach die erforderlichen Pakete installieren
Danach können wir den Postfix-Dienst neu starten.
make upgrade Postfix Version:mobil:
Wieder starten
Testen, ob der Mailserver funktioniert
Danach öffnen Sie eine Telnetsession auf
Legen Sie bitte die folgende Datei ... unter /etc/postfix an:
Weiter geht's dann mit.... Bitte legen Sie ebenfalls die Datei mailbox.mysql im Verzeichnis /etc/postfix an
See /usr/share/postfix/main.cf.dist for a commented, more complete version

### Bücher:

* Peer Heinlein: Das Postfix-Buch (2004), ISBN 393751404X
* Kyle D. Dent: Postfix (2004), ISBN 3897213729
* Ralf Hildebrandt and Patrick Koetter: The Book of Postfix: State-of-the-Art Message Transport (2005), ISBN 1-59327-001-1
* Ralf Hildebrandt, Patrick Ben Koetter: Postfix: Einrichtung, Betrieb und Wartung (2005), ISBN 3-89864-350-6