Standardmäßig hört der Mail Transfer Agent Postfix auf dem Port 25. Möchte man nun das Postfix auch auf einem zusätzlichen Port hört, so muss man die „/etc/postfix/master.cf“-Datei bearbeiten. Dort sucht man die Zeile:
smtp inet n - - - - smtpd
Unter der Zeile fügt man die Zeile:
587 inet n - - - - smtpd
hinzu. Anschließend muss der Dienst noch neugestartet werden:
service postfix restart
Damit hört Postfix neben Port 25 nun auch auf Port 587, dem bevorzugten Port für die Maileinlieferung von Clients.
Unter Umständen möchte man seine eigene Blacklist direkt auf dem Mailserver führen. Für diesen Zweck gibt es unter Postfix die Einstellung „check_sender_access“. Dazu bearbeitet man die Datei „/etc/postfix/main.cf“ mittels des gewünschten Editors:
nano /etc/postfix/main.cf
In der Abteilung „smtpd_recipient_restrictions“ wird der Eintrag
Vor einiger Zeit beschrieb ich wie man einen Mailserver unter Ubuntu mittels Postfix und Dovecot aufsetzt. Der dort installierte Server ist, in der Lage Mails zu senden und zu empfangen. Allerdings enthält er keinerlei Maßnahmen zum Schutz vor unerwünschten Mails. An dieser Stelle setzt Postgrey, eine Greylisting Implementierung für Postfix, an. Beim Greylisting werden Mails von einem unbekannten Sender erst einmal mit einem temporären Fehler beantwortet. RFC konforme Mailserver senden die Mail nach einer Verzögerung nochmal. Beim Spamversendern ist dies meist nicht der Fall, womit der Spam nicht im System auftaucht. Die Installation ist dabei relativ einfach:
apt-get install postgrey
Nach der Installation muss die „/etc/postfix/main.cf“ Datei angepasst werden. Der Zeile „smtpd_recipient_restrictions“ wird dabei der Wert „check_policy_service inet:127.0.0.1:10023“ hinzugefügt. Nachdem der Service mittels:
service postfix restart
neugestartet wurde, ist das Greylisting aktiv. In der Logdatei „/var/log/mail.log“ findet man, sobald man eine Mail von einem unbekanntem Sender bekommt folgende Zeile:
Oct 10 10:32:39 service postfix/smtpd[22287]: NOQUEUE: reject: RCPT from mail.example.org[178.19.71.5]: 450 4.2.0 <>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html; from=<mail.example.org> to=<> proto=ESMTP helo=<mail.example.org>
Wenn die Mail erneut empfangen wird und die Greylistingzeit vorbei ist, wird Postgrey die Mail annehmen. Möchte man die Greylistingzeit ändern, so muss die Datei „/etc/default/postgrey“ bearbeitet werden. Für eine Verzögerung von 60 Sekunden könnte das ganze dann wie folgt aussehen:
POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=60"
Natürlich muss der Service für diese Änderung neugestartet werden.
Möchte man einen Mailserver auf seinem eigenen Server aufsetzen, so kann man sich durch hunderte Seiten Dokumentationen wühlen. Allerdings geht das ganze auch einfacher. Für einen Mailserver benötigen wir dabei einen MTA (Mail Transfer Agent) und einen IMAP/POP3 Server. Als MTA wird in diesem Fall Postfix und als IMAP/POP3 Server Dovecot genutzt werden. Dankenswerterweise liefert Ubuntu bereits das Paket „dovecot-postfix mit, welchen nur installiert werden muss:
apt-get install dovecot-postfix
Bei der anschließenden Installation werden einige Fragen gestellt. So sollte man bei einem dezidierten Server die Konfigurationsart „Internet-Site“ wählen. In der abschliesenden Frage sollte der Domainname des Servers eingetragen werden. Dieser muss dabei nicht mit dem Domainnamen der späteren Mailadressen übereinstimmen. So könnte der Domainname „mail.example.com“ sein, während die spätere Mailadresse „“ lautet.
Mailserver schauen nach ob der Name der IP Adresse (Reverse DNS) auch zum Mailserver passt. Nutzt man zum Beispiel die IP-Adresse 192.168.10.1 und deren Reverse DNS Name lautet „mail.example.com“ so muss auch der Hostname „mail.example.com“ lauten. Den Hostnamen kann man in der „/etc/hosts“ Datei konfigurieren. Auch ein Blick in die „/etc/postfix/main.cf“-Datei lohnt sich. Der Hostname (myhostname) sollte hier der gleiche sein. Auch das Überprüfen der Option „mydestination“ ist empfohlen.
Der Mailserver soll für verschiedene Domains zuständig sein. Außerdem sollen bei diesem Setup keine Unix Accounts für die Nutzer angelegt werden, die Verwaltung der Nutzer erfolgt virtuell. Auch auf Datenbanken zur Speicherung der Nutzer wird verzichtet, da sich dies erst ab zirka 100 Domains lohnt. Im ersten Schritt wird die Datei „/etc/postfix/main.cf“ um folgende Einträge erweitert:
Postfix wird bei der Gelegenheit in Zeile 3 auch der Gruppe „vmail“ hinzugefügt. In den letzten beiden Zeilen wird der Ordner für die lokalen Mailboxen erzeugt und dem Nutzer „vmail“ zugewiesen. Danach geht es an die Konfiguration der virtuellen Mailboxen:
nano /etc/postfix/virtual_domains
In der Datei „virtual_domains“ werden die Domains festgelegt für welche das System zuständig ist. Dabei wird jede Domain zeilenweise eingetragen:
example.com
example.org
Das Mapping der jeweiligen Mailadressen zu den Mailboxen findet in der Datei „/etc/postfix/vmailbox“ statt:
nano /etc/postfix/vmailbox
Dort werden auch wieder zeilenweise die jeweilige Mailadresse zu der Mailbox zugeordnet.
example.com/webmaster
example.com/seeseekey
Die jeweiligen Pfade der Mailbox sind dabei nicht absolut, sondern setzen sich aus dem in „virtual_mailbox_base“ definierten Pfad und dem jeweiligen Mailboxpfad zusammen. Der Slash am Ende der Mailboxdefinition führt dazu das Postfix als Speicherverfahren „maildir“ anstatt „mbox“ benutzt, wobei „maildir“ vorgezogen werden sollte. Weiterleitungen von einer Mailadresse an eine andere, werden in der Datei „/etc/postfix/virtual_alias“ definiert:
Postfix benötigt einige binäre Lookuptabellen, welche nach jeder Änderung mittels:
erzeugt werden müssen. Nun muss der LDA (Local Delivery Agent) in der „/etc/postfix/master.cf“-Datei konfiguriert werden. Dieser nimmt die Mail vom MTA entgegen und speichert sie in den lokalen Mailboxen. Dazu fügen wir am Ende der Datei die Zeilen:
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
hinzu. Nachdem die Mailboxen über Postfix fertig konfiguriert worden sind, geht es an die Detailkonfiguration von Dovecot. In der Datei „/etc/dovecot/conf.d/10-auth.conf“ wird die Option „#disable_plaintext_auth = yes“ auskommentiert, damit keine Klartextauthentifikation möglich ist. Am Ende der Datei kommentieren wir die Zeile:
!include auth-system.conf.ext
aus und stattdessen die Zeile:
!include auth-passwdfile.conf.ext
ein. Anschließend wird die Datei „auth-passwdfile.conf.ext“ bearbeitet. Die Datei sollte nach der Bearbeitung in etwa so aussehen:
Im nächsten Schritt wird der LDA in Dovecot konfiguriert. In der Datei „/etc/dovecot/conf.d/15-lda.conf“ ergänzen wir dem „lda“-Block so das er anschließend wie folgt aussieht:
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
#mail_plugins = $mail_plugins
hostname = mail.example.com
postmaster_address =
auth_socket_path = /var/run/dovecot/auth-master
mail_plugins = cmusieve
}
Nun muss noch der Speicherort der Mailboxen bekanntgegeben werden. Dazu wird in der Datei „/etc/dovecot/conf.d/10-mail.conf“ die „mail_location“ von:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
in
mail_location = maildir:/var/mail/vhosts/%d/%n
geändert. Um Probleme mit der Authentifikation von Postfix zu vermeiden muss die Datei „/etc/dovecot/conf.d//10-master.conf“ angepasst werden. Hier wird der Block:
unix_listener auth-master {
mode = 0666
user =
group =
}
geändert. Nach einem Neustart der Dienste:
sudo service dovecot restart
sudo service postfix restart
sollte das Mailsystem funktionieren. Ist das wider Erwarten nicht der Fall, so empfiehlt sich ein Blick in die Logdateien „/var/log/mail.err“ und „/var/log/mail.log“. Wenn die Informationen in diesen Dateien zu ungenau sind, hilft es in der Konfigurationsdatei „/etc/dovecot/conf.d/10-auth.conf“ die Optionen:
auth_verbose = yes
auth_debug = yes
zu setzen. Dadurch ist die Ausgabe wesentlich ausführlicher. Möchte man einen neuen Nutzer anlegen so erzeugt man zuerst die passende Zeile für die „passwd“-Datei im „vhosts“-Verzeichnis:
Nun muss der entsprechende Eintrag in der „/etc/postfix/vmailbox“ angelegt werden und einige Befehle ausgeführt werden:
postmap /etc/postfix/vmailbox
mkdir -p /var/mail/vhosts/example.com/info
chown -R vmail:vmail /var/mail/vhosts
sudo service dovecot restart
sudo service postfix restart
Natürlich kann man sich für das anlegen neuer Nutzer auch ein entsprechendes Skript schreiben. Nach dem Neustart der Services ist das neue Postfach eingerichtet und kann genutzt werden.