Good to Know Database

Raspbian Wheezy: Mailserver mit Postfix und Cyrus einrichten


Wenn Sie auf Ihrem Raspberry Pi einen eigenen Mailserver für Ihr Netzwerk betreiben wollen, können Sie unter Raspbian Postfix als Maildaemon einrichten. Damit Sie die Mails von einem Client abrufen können, können Sie entweder über POP3 oder IMAP auf den Mailserver zugreifen. In beiden Fällen können Sie den Cyrus IMAP/POP3 Server verwenden. Sollten Sie auch Mails von einem externen POP3-Server abholen wollen, sollten Sie im Anschluss noch das Tutorial Raspbian Wheezy: Fetchmail (als Daemon) einrichten lesen.

Als Grundlage für die folgende Anleitung dient das momentan aktuelle Raspbian Image vom 26.07.2013 (2013-07-26-wheezy-raspbian.zip), welches Sie zuvor auf eine SD-Karte installieren müssen.

Postfix installieren

Bei der Standardinstallation von Raspbian ist Postfix noch nicht installiert und muss daher erst installiert werden. Bevor Sie die Installation starten, sollten Sie die lokale Paketdatenbank aktualisieren.

pi@raspberrypi ~ $ sudo apt-get update

Nachdem die Paketdatenbank aktualisiert wurde können Sie mit dem folgenden Befehl Postfix installieren.

pi@raspberrypi ~ $ sudo apt-get install postfix

Während der Installation wird das interaktive Konfigurationsskript von Postfix aufgerufen. Wählen Sie bei der Frage nach einer passenden Konfiguration No configuration beziehungsweise Keine Konfiguration aus und bestätigen die Auswahl mit OK. Dadurch wird die Installation mit der folgenden Meldung beendet und Postfix nicht automatisch nach der Installation gestartet.

Postfix was not set up.  Start with
  cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf
.  If you need to make changes, edit
/etc/postfix/main.cf (and others) as needed.  To view Postfix configuration
values, see postconf(1).

After modifying main.cf, be sure to run '/etc/init.d/postfix reload'.

Cyrus installieren

Cyrus als IMAP- und POP3-Daemon können Sie mit dem folgenden Befehl installieren.

pi@raspberrypi ~ $ sudo apt-get install cyrus-imapd cyrus-pop3d cyrus-admin

SASL installieren

Für die Authentifizierung am Cyrus-Daemon wird noch der Simple Authentication and Security Layer (SASL) benötigt. Diesen installieren Sie durch den folgenden Befehl.

pi@raspberrypi ~ $ sudo apt-get install sasl2-bin libsasl2-modules

SASL konfigurieren

Damit der saslauthd beim Systemstart automatisch gestartet wird, müssen Sie die Konfigurationsdatei /etc/default/saslauthd bearbeiten.

pi@raspberrypi ~ $ sudo vi /etc/default/saslauthd

Suchen Sie in der Konfigurationsdatei nach dem folgenden Abschnitt.

# Should saslauthd run automatically on startup? (default: no)
START=no

Ändern Sie anschließend den Wert der Option START auf yes und speichern die Datei wieder ab.

START=yes

Nachdem Sie die /etc/default/saslauthd gespeichert haben, sollten Sie den saslauthd starten.

pi@raspberrypi ~ $ sudo /etc/init.d/saslauthd start
[ ok ] Starting SASL Authentication Daemon: saslauthd.

Cyrus konfigurieren

Bei der Konfiguration von Cyrus wird hier zuerst der imapd konfiguriert. Dazu öffnen Sie die Datei /etc/imapd.conf mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/imapd.conf

Suchen Sie zuerst nach dem folgenden Abschnitt.

# Uncomment the following and add the space-separated users who
# have admin rights for all services.
#admins: cyrus

Entfernen Sie hier das Kommentarzeichen am Zeilenanfang damit Sie später mit dem Benutzer cyrus den Mailservice administrieren können.

admins: cyrus

Als nächstes suchen Sie den folgenden Abschnitt.

# Force PLAIN/LOGIN authentication only
# (you need to uncomment this if you are not using an auxprop-based SASL
# mechanism.  saslauthd users, that means you!). And pay attention to
# sasl_minimum_layer and allowapop below, too.
#sasl_mech_list: PLAIN

Auch hier muss das Kommentarzeichen entfernt werden.

sasl_mech_list: PLAIN

Im Anschluss wird müssen Sie die Option sasl_pwcheck_method anpassen.

# The mechanism(s) used by the server to verify plaintext passwords. Possible
# values are "saslauthd", "auxprop", "pwcheck" and "alwaystrue".  They
# are tried in order, you can specify more than one, separated by spaces.
#
# Do note that, since sasl will be run as user cyrus, you may have a lot of
# trouble to set this up right.
sasl_pwcheck_method: auxprop

Geben Sie hier als neuen Wert saslauthd an.

sasl_pwcheck_method: saslauthd

Als letzte Änderung in der Konfigurationsdatei suchen Sie den folgenden Abschnitt.

# If enabled, the SASL library will automatically create authentication secrets
# when given a plaintext password. Refer to SASL documentation
sasl_auto_transition: no

Hier müssen Sie den Wert der Option auf yes ändern.

sasl_auto_transition: yes

Nachdem Sie die /etc/imapd.conf gespeichert haben, sollten Sie ein Passwort für den Benutzer cyrus festlegen.

pi@raspberrypi ~ $ sudo passwd cyrus
Enter new UNIX password: strenggeheim
Retype new UNIX password: strenggeheim
passwd: password updated successfully

Starten Sie jetzt den cyrus-imapd neu, damit die Einstellungen geladen werden.

pi@raspberrypi ~ $ sudo /etc/init.d/cyrus-imapd restart

Postfächer anlegen

Nachdem der saslauthd und der cyrus-imapd konfiguriert wurden, können Sie für die lokalen Benutzer die Postfächer erstellen. Beachten Sie dabei, dass es für jedes Postfach einen lokalen Linux-Benutzer mit dem gleichen Namen geben muss.

Sollten Sie also ein Postfach für einen bisher nicht existierenden Benutzer anlegen wollen, müssen Sie vorher mit dem folgenden Befehl einen neuen Linux-Benutzer erstellen. Durch die Option -m wird automatisch ein privates Verzeichnis unter /home für den Benutzer angelegt. Durch -s /sbin/nologin wird verhindert, dass sich der Benutzer lokal an einer Konsole oder über SSH anmelden kann. Mit der Option -g wird der Benutzer zur Gruppe users hinzugefügt.

pi@raspberrypi ~ $ sudo useradd -m -s /sbin/nologin -g users georg

Des Weiteren sollten Sie für den neuen Benutzer ein Passwort festlegen.

pi@raspberrypi ~ $ sudo passwd georg
Enter new UNIX password: strenggeheim
Retype new UNIX password: strenggeheim
passwd: password updated successfully

Starten Sie jetzt das Cyrus-Administrationsprogramm mit dem folgenden Befehl und melden sich mit dem bereits oben für den Benutzer cyrus festgelegten Passwort an.

pi@raspberrypi ~ $ cyradm --auth login localhost --user cyrus
IMAP Password: strenggeheim

Um eine Mailbox anzulegen müssen Sie folgenden Befehl ausführen. Hier wird nur eine Mailbox für den Benutzer georg angelegt.

localhost> createmailbox user.georg

Lassen Sie sich nun mit listmailbox alle Postfächer anzeigen die angelegt wurden.

localhost> listmailbox
user.georg (\HasNoChildren)

Wenn soweit alles in Ordnung ist, können Sie cyradm verlassen.

localhost> exit

Sollten Sie Hilfe unter cyradm benötigen müssen Sie nur ein ? eintippen.

Postfix konfigurieren

Da wärend der Installation von Postfix keine Konfiguration ausgwählt wurde, können wir diese jetzt individuell für unsere Zwecke erstellen. Kopieren Sie jetzt die Beispiel-Konfigurationsdatei an die vorgesehene Stelle. Bei Fragen zu den in dieser Anleitung verwendeten Optionen empfiehlt sich auch immer ein Blick in die ausführlich kommentierte Beispiel-Konfigurationsdatei.

pi@raspberrypi ~ $ sudo cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf

Setzen Sie mit dem folgenden Befehl den vollständigen Pfad zu Sendmail in der Option sendmail_path.

pi@raspberrypi ~ $ sudo postconf -e 'sendmail_path = /usr/sbin/sendmail'

Die Option newaliases_path soll den vollständigen Pfad zum Befehl newaliases enthalten.

pi@raspberrypi ~ $ sudo postconf -e 'newaliases_path = /usr/bin/newaliases'

Den Pfad zu mailq sollten Sie über die mailq_path angeben.

pi@raspberrypi ~ $ sudo postconf -e 'mailq_path = /usr/bin/mailq'

Über setgid_group wird die Gruppe festgelegt, welche für den Mailtransfer und das Verwalten der Mail-Warteschlangen genutzt werden soll.

pi@raspberrypi ~ $ sudo postconf -e 'setgid_group = postdrop'

Mit html_directory kann man den Pfad zur Postfix HTML Dokumentation angeben.

pi@raspberrypi ~ $ sudo postconf -e 'html_directory = no'

Den Pfad zu den Manpages legt man mittels manpage_directory fest.

pi@raspberrypi ~ $ sudo postconf -e 'manpage_directory = /usr/share/man'

sample_directory enthält den Pfad zu den Postfix Beispielkonfigurationsdateien.

pi@raspberrypi ~ $ sudo postconf -e 'sample_directory = no'

Über readme_directory kann man den Pfad zu den Readme Dateien angeben.

pi@raspberrypi ~ $ sudo postconf -e 'readme_directory = no'

Bis jetzt haben wir nur einige grundlegende Optionen eingestellt, damit Postfix die benötigten externen Programme findet und überhaupt gestartet werden kann. Jetzt müssen wir noch den eigentlichen Mailserver konfigurieren.

Zuerst setzen Sie den Parameter myhostname mit dem vollständigen Rechnernamen und geben Ihre Domain mit dem Parameter mydomain an.

pi@raspberrypi ~ $ sudo postconf -e 'myhostname = raspberrypi.home.lan'
pi@raspberrypi ~ $ sudo postconf -e 'mydomain = home.lan'

Damit Postfix von den Mail-Clients aus Ihrem lokalen Netzwerk E-Mails entgegen nimmt und gegebenenfalls weiterleitet, müssen Sie Ihr privates Netzwerk durch den Parameter mynetworks angeben.

pi@raspberrypi ~ $ sudo postconf -e 'mynetworks = 127.0.0.0/8 192.168.10.0/24'

Des Weiteren müssen Sie Postfix so konfigurieren, dass der Daemon auf dem lokalen Netzwerk-Interface auf eingehende Verbindungen wartet. Wenn Sie den Parameter inet_interfaces wie folgt auf den Wert all setzen, lauscht Postfix auf allen Netzwerk-Schnittstellen des Servers.

pi@raspberrypi ~ $ sudo postconf -e 'inet_interfaces = all'

Mit dem Parameter mydestination geben Sie an, für welche Domains der Mailserver zuständig ist und die eingehenden Mails in die lokalen Postfächer einsortiert.

pi@raspberrypi ~ $ sudo postconf -e 'mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost'

Damit Postfix die Alias-Tabelle /etc/aliases auswertet, müssen Sie die folgenden zwei Parameter setzen.

pi@raspberrypi ~ $ sudo postconf -e 'alias_maps = hash:/etc/aliases'
pi@raspberrypi ~ $ sudo postconf -e 'alias_database = hash:/etc/aliases'

Jetzt müssen Sie noch Postfix mitteilen dass er alle lokalen E-Mails an Cyrus weiterleiten soll. Dazu setzen Sie die Parameter mailbox_transport und fallback_transport wie folgt.

pi@raspberrypi ~ $ sudo postconf -e 'mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp'
pi@raspberrypi ~ $ sudo postconf -e 'fallback_transport = lmtp:unix:/var/run/cyrus/socket/lmtp'

Damit Postfix die E-Mails an Cyrus übergeben kann, müssen Sie in der /etc/postfix/master.cf die Chroot-Funktion für den lmtp-Service daktivieren. Öffnen Sie hierzu die Konfigurationsdatei mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/postfix/master.cf

Suchen Sie hier nach der folgenden Zeile.

lmtp      unix  -       -       -       -       -       lmtp

Ersetzen Sie jetzt das Minuszeichen aus der Chroot-Spalte mit einem n. Dadurch wird der lmtp-Service nicht mehr in einer Chroot-Umgebung ausgeführt.

lmtp      unix  -       -       n       -       -       lmtp

Damit das lmtp-Subsystem auf den Socket des Cyrus-Daemons zugreifen darf, muss der Benutzer postfix jetzt noch zur Gruppe mail hinzugefügt werden

pi@raspberrypi ~ $ sudo adduser postfix mail
Adding user `postfix' to group `mail' ...
Adding user postfix to group mail
Done.

E-Mail Umleitungen einrichten

Wenn Sie die E-Mails eines lokalen Benutzers an einen anderen lokalen E-Mailaccount weiterleiten wollen, müssen Sie einen Alias in der /etc/aliases anlegen. Öffnen Sie dazu die Datei mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/aliases

Fügen Sie am Ende der Datei eine neue Zeile nach dem folgenden Schema ein. Als erstes wird der lokale Benutzer angegeben, dessen E-Mails weitergeleitet werden sollen. In diesem Fall ist dies der Benutzer pi. Nach einem Doppelpunkt kann man einen oder mehrere durch Kommatas getrennte lokale Benutzer angeben, an welche die E-Mails weitergeleitet werden sollen

pi:    georg

Nachdem Sie die /etc/aliases überarbeitet haben, müssen Sie die Datei /etc/aliases.db wie folgt aktualisieren.

pi@raspberrypi ~ $ sudo postalias /etc/aliases

Postfix starten

Die Konfiguration ist damit abgeschlossen und Sie können auch Postfix starten.

pi@raspberrypi ~ $ sudo /etc/init.d/postfix start
[ ok ] Starting Postfix Mail Transport Agent: postfix.

Dienste beim Systemstart automatisch starten

Normalerweise werden die drei hier benötigten Dienste bereits bei der Installation entsprechend in den Runlevels verlinkt damit diese automatisch gestartet werden. Um dies zu überprüfen können Sie die folgenden drei Befehle aufrufen.

pi@raspberrypi ~ $ find /etc/rc* -name *saslauthd
/etc/rc1.d/K02saslauthd
/etc/rc2.d/S01saslauthd
/etc/rc3.d/S01saslauthd
/etc/rc4.d/S01saslauthd
/etc/rc5.d/S01saslauthd

pi@raspberrypi ~ $ find /etc/rc* -name *cyrus-imapd
/etc/rc0.d/K01cyrus-imapd
/etc/rc1.d/K01cyrus-imapd
/etc/rc2.d/S02cyrus-imapd
/etc/rc3.d/S02cyrus-imapd
/etc/rc4.d/S02cyrus-imapd
/etc/rc5.d/S02cyrus-imapd
/etc/rc6.d/K01cyrus-imapd

pi@raspberrypi ~ $ find /etc/rc* -name *postfix
/etc/rc0.d/K01postfix
/etc/rc1.d/K01postfix
/etc/rc2.d/S02postfix
/etc/rc3.d/S02postfix
/etc/rc4.d/S02postfix
/etc/rc5.d/S02postfix
/etc/rc6.d/K01postfix

Sollten Sie feststellen, dass bei einem Service die SymLinks auf die Init-Skripte nicht erstellt wurden, können Sie diese mit dem jeweils dazugehörigen Befehl selber erstellen.

pi@raspberrypi ~ $ sudo update-rc.d saslauthd defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match saslauthd Default-Stop values (1)

pi@raspberrypi ~ $ sudo update-rc.d cyrus-imapd defaults
update-rc.d: using dependency based boot sequencing

pi@raspberrypi ~ $ sudo update-rc.d postfix defaults
update-rc.d: using dependency based boot sequencing

Konfiguration des Mail-Clients

Jetzt müssen Sie nur noch Ihren Mail-Client einrichten. Dazu erstellen Sie entweder ein IMAP- oder ein POP3-Mail-Konto mit folgenden Einstellungen.

SMTP-Server:    raspberrypi.home.lan beziehungsweise die IP-Adresse Ihres Raspberry Pi's wenn kein DNS-Server vorhanden ist.
POP3-Server:    raspberrypi.home.lan beziehungsweise die IP-Adresse Ihres Raspberry Pi's wenn kein DNS-Server vorhanden ist.
IMAP-Server:    raspberrypi.home.lan beziehungsweise die IP-Adresse Ihres Raspberry Pi's wenn kein DNS-Server vorhanden ist.
Benutzername:   Hier tragen Sie Ihren Benutzernamen auf dem Linux-Server ein.
Passwort:       Als Passwort müssen Sie das zu Ihrem Benutzer passende Kennwort angeben.

Wenn Ihr Mail-Client keine Mails versenden und/oder empfangen kann, sollten Sie einen Blick in die Logfiles auf Ihrem Server werfen.

pi@raspberrypi ~ $ tail -f /var/log/mail.log

Weiterführende Tutorials

Raspbian Wheezy: Funktion des Postfix SMTP-Servers mit Netcat testen
Raspbian Wheezy: Funktion des Cyrus POP3-Servers mit Netcat testen
Raspbian Wheezy: Funktion des Cyrus IMAP-Servers mit Netcat testen
Raspbian Wheezy: SMTP-Verbindungen zum Postfix-Daemon mit TLS absichern
Raspbian Wheezy: POP3- und IMAP-Verbindungen zum Cyrus-Daemon mit TLS absichern
Raspbian Wheezy: Fetchmail (als Daemon) einrichten
Raspbian Wheezy: Postfix soll E-Mails über SMTP-Relay-Server versenden
Raspbian Wheezy: RoundCube Webmail einrichten


Dieser Eintrag wurde am 10.08.2013 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2275.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer