Ziel dieser Beschreibung ist es, einen funktionierenden Postfix-basierten Mailserver zu betreiben. Der LDA (local delivery agent) soll dovecot sein. Der Mailserver soll eingehende Mails annehmen und nach außen Mails ausliefern. Das Ausliefern erfolgt über einen Mail-Relay, da der hier beschriebene Postfix hinter einer dynamischen IP hängt. Die Verwaltung der Domains sowie der User wird nicht mit mysql durchgeführt, sondern erfolgt in Textfiles. Die Installation erfolgt auf einem Debian-Etch-System.
Die Beschreibung basiert auf dem Howto von Christoph Haas. Deshalb werden hier im Wesentlichen die Schritte dokumentiert, die erforderlich sind, um den Mailserver ohne MySql - Unterstützung zu betreiben. Auf jedenFall empfiehlt es sich vorher sein HowTo zu lesen.
Zuerst sind die erforderlichen Pakete zu installieren.
apt-get install postfix
apt-get install dovecot-pop3d
apt-get install dovecot-imapd
apt-get install libsasl2
apt-get install libsasl2-modules
Schreiten wir zur Postfix-Konfiguration
1. Es ist der user und die group vmail anzulegen, unter dem Postfix bzw. dovecot die virtuellen mail-user verwalten
groupadd vmail -g 5000
useradd vmail -d /home/vmail -g 5000 -m -s /bin/false -m 5000
2. Virtuelle Domains einrichten
Der Postfix-Server gehört zu einer Domain. Er kann aber auch weitere Domains verwalten. Die weiteren Domains sind die virtuellen. Genaueres kann man hier nachlesen oder im Postfix-Manual.
Es ist das File /etc/postfix/virtual_mailbox_domains anzulegen
Es enthält die gehosteten virtual domains. Der Inhalt sieht bei mir wie folgt aus:
gimme-th.at OK
lstr8.dynalias.com OK
Das heißt, der Postfix betreut die Domains: gimme-th.at und lstr8.dynalias.com. (Die zweite Domain ist eine über DynDNS verwaltete Domain - die, die ich vor der TLD hatte.)
Anschliessend ist ein postmap hash:/etc/postfix/virtual_mailbox_domains ausführen, um die Datenbank für den Postfix zu erstellen. (Der Befehlt erstellt die Datei: virtual_mailbox_domains.db. Aus diesem File bezieht postfix die Informationen.)
3. Das File mit den Speicherorten für die User-Mailboxen erstellen: /etc/postfix/virtual_mailbox_maps
mrre [ät] gimme-th.at gimme-th.at/mrre
mrre [ät] lstr8.dynalias.com lstr8.dynalias.com/mrre
trashbin [ät] gimme-th.at gimme-th.at/trashbin
Es werden alle gültigen email-Adressen aufgeführt. Achtung! Aus Spam-Gründen habe ich den Klammeraffen (@) durch ” [ät] ” ersetzt! Bitte berücksichtigen!
In diesem File bitte keine Umleitungen für Mailboxen einrichten. Dazu kommt es später noch!
Um das Datenbank-File zu erstellen der Aufruf:
postmap hash:/etc/postfix/virtual_mailbox_maps
4. Das File mit den Umleitungen für die Mailboxen anlegen: /etc/postfix/virtual_alias_maps
abuse [ät] gimme-th.at mrre [ät] gimme-th.at
complaints [ät] gimme-th.at trashbin [ät] gimme-th.at
postmap hash:/etc/postfix/virtual_alias_maps
Das heißt, dass die email-Adresse abuse [ät] gimme-th.at auf
mrre [ät] gimme-th.at umgeleitet wird.
Mit postmap kann man jetzt seine Files auf Funktionsweise testen. Die Anfrage:
postmap -q complaints [ät] gimme-th.at hash:/etc/postfix/virtual_alias_maps
liefert dann: trashbin [ät] gimme-th.at
Jetzt wären also die wichtigsten Files für die Postfix-Konfiguration erstellt.
5. Nun geht es an die Konfiguration von postfix /etc/postfix/main.cf
Es sind (zusätzlich) folgende Einträge notwendig. Ein Großteil der default-Einstellungen kann übernommen werden bzw. so bleiben!
# ————————- Virtual Domain options
virtual_mailbox_domains=hash:/etc/postfix/virtual_mailbox_domains
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
dovecot_destination_recipient_limit=1
An dieser Stelle die ersten Kommentare:
virtual_mailbox_base = /home/vmail Hier wird das root-Verzeichnis für die Speicherung der virtuellen Mailboxen gesetzt. D.h. dieser Pfad wird vor die unter 3. genannten Pfade gesetzt.
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
Hier wird die uid und die gid vom User vmail angegeben. Der LDA wird dem Postfix bekannt gegeben: dovecot!
Und weiter geht’s mit der main.cf
# SMTP - AUTH
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Hier werden die Parameter für’s SMTP-Auth über dovecot angegeben.
#relaying via selfhost
relayhost = [mail.selfhost.de]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
smtp_sasl_security_options = noanonymous
smtp_sasl_type=cyrus
Diese Zeilen sind erforderlich, wenn man über einen externen Mail-Relay gehen möchte, der ein SMTP-Auth erfordert. Ich relaye über Selfhost., da selfhost die DNS-Einträge für meine Domain verwaltet. Achtung! Wenn sich der Postfix-Server selbst an einem anderen mail-Server via SMTP-AUTH authentifizieren muss, dann geht das nicht über dovecot, sondern nur über cyrus! Deshalb die letzte Zeile.
Konfiguration von dovecot
# Authentication configuration
auth_verbose = yes
auth default {
mechanisms = plain login
passdb passwd-file {
args = /etc/dovecot/passwd
}
userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%d/%n allow_all_users=yes
}
Die restlichen Konfigurationhinweise kann man von Workaround entnehmen.
Nun ist noch die Datei /etc/dovecot/passwd zu erstellen, in der die Passwörter gespeichert sind. Die könnte so aussehen:
mrre [ät] gimme-th.at:{Plain}MeinSicheresPasswort
thrashbin [ät] gimme-th.at:{Plain}MeinAnderesSicheresPasswort
Nun sind sowohl dovecot, als auch postfix zu starten.
/etc/init.d/postfix start
/etc/init.d/dovecot start
Anschließend sollte man testen, ob das mail-System funktioniert. Mit telnet auf dem Mail-Server einloggen:
telnet gimme-th.at smtp
ehlo mein.Server.com
mail from: You@yourdomain.com
rcpt to: mrre [ät] gimme-th.at
data
Hi mrre
.
quit
Damit loggt man sich per telnet auf dem mail-Server ein und versendet eine email an den mrre.
Ein weiteres gutes Werkzeug, um seinen mail-Server zu testen gibt es bei pingability. Dort werden sämtliche Funktionen getestet. Auch, ob der Server etwa ein open-Relay ist!
Anschließend der Hinweis: Sämtliche Probleme, die bei meiner Konfiguration aufgefallen sind, lagen an falschen Berechtigungen auf Dateien! Also: immer genau checken, ob der User vmail überall schreiben, bzw lesen darf, wo er möchte! :-)