Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Die folgende Anleitung zeigt, wie man den Cyrus IMAP-Mail-Server installiert und einrichtet. Das IMAP-Protokoll ermöglicht es, Mailboxen inkl. Ordnerstruktur und Statusdaten auf dem Server vorzuhalten. So kann man sich von verschiedenen Rechnern einloggen und erhält immer ein konsistentes Bild. Außerdem beinhaltet der Cyrus-IMAP-Server mit sieve noch eine Technik, um automatische Filterung und Verteilung auf verschiedene Ordner gleich auf dem Server beim Eintreffen der elektronischen Post zu erledigen.
Folgende Pakete müssen installiert werden [1]:
cyrus-imapd-2.2 (universe, der IMAP-Teil des Mail-Servers Cyrus )
cyrus-admin-2.2 (universe, Administrations-Tools für cyrus )
sasl2-bin (benötigt cyrus zum Authentifizieren der Benutzer)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin
sudo aptitude install cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin
Außerdem benötigt man als Grundvoraussetzung auf jeden Fall einen funktionierenden "Mail Transfer Agent" (MTA), z.B. Postfix. Optional kann dann noch eine Weboberfläche wie Squirrelmail installiert werden, wenn man Zugriff auf die Mails über ein Webfrontend haben will.
Die Konfiguration des IMAP-Servers erfolgt über die Dateien /etc/imapd.conf und /etc/cyrus.conf. Die imapd.conf-Datei bedarf einiger Anpassungen, die man in einem Editor [2] mit Root-Rechten vornehmen muss:
Entfernen des Kommentar-Zeichens (#) vor "admins: cyrus"
Entfernen des Kommentar-Zeichens (#) vor "sasl_mech_list: PLAIN"
Ändern von "sasl_pwcheck_method" in "saslauthd"
auskommentieren von "sasl_auto_transition: no" (# davorsetzen)
Auszug aus der /etc/imapd.conf:
admins: cyrus sasl_mech_list: PLAIN sasl_pwcheck_method: saslauthd #sasl_auto_transition: no
IMAPs scheint standardmäßig nicht aktiviert zu sein. Wer sein Mails über eine verschlüsselte Verbindung abholen möchte, sollte in der Datei /etc/cyrus.conf an folgender Stelle das Kommentarzeichen #
entfernen:
imaps cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=10
Zusätzlich ist es notwendig, dass der Benutzer cyrus Zugriff auf die Standard-Zertifikate in /etc/ssl/private/ bekommt [3]:
sudo adduser cyrus ssl-cert
Danach noch prüfen, ob die Rechte passen:
ls -l /etc/ssl/private/
Ausgabe:
total 4 -rw-r----- 1 root ssl-cert 887 Jun 14 20:54 ssl-cert-snakeoil.key
Anschließend muss der Cyrus-Server komplett neu gestartet werden. Ein Reload der Konfiguration reicht nicht aus.
Die Authentifizierung, also das Überprüfen des Benutzerpassworts, wird bei Cyrus über das Simple Authentication and Security Layer (SASL) geregelt.
Nicht umsonst steht in dem von Ubuntu ausgelieferten /etc/imapd.conf folgender Kommentar über der Einstellung zu "sasl_pwcheck_method":
# Do note that, since sasl will be run as user cyrus, you may have a lot of # trouble to set this up right.
Was hier scheinbar unnötig kompliziert wirkt, ist aber im Grunde eine der Stärken von Cyrus. Mit Cyrus ist es möglich, auf verschiedene Weisen anzugeben, welche Benutzer mit welchen Passwörtern Zugriff auf Postfächer haben. So kann vielen Leuten ein Mail-Account eingerichtet werden, ohne dass sie im System als Benutzer eingerichtet sein müssen. Das ist vor allem für Firmen interessant.
Das System wird hier jedoch so eingerichtet, dass dieselben Benutzernamen und Passwörter wie für das restliche Ubuntu-System auch gelten.
Die Authentifizierung übernimmt Cyrus nicht selbst, sondern fragt dazu beim "saslauthd
"-Daemon nach, d.h. man muss "saslauthd
" so konfigurieren, dass er im System nachsieht, wenn er einen Benutzer überprüft, also direkt in der Shadow-Passwort-Datei.
Dazu einen Texteditor [2] mit Rootrechten öffnen und die Datei /etc/default/saslauthd wie folgt ändern:
das Kommentar-Zeichen (#) vor "START=yes" entfernen. (ggf. "START=no" in "START=yes" ändern)
MECHANISMS="pam" in MECHANISMS="shadow" ändern.
Die /etc/default/saslauthd sollte dann so aussehen:
START=yes MECHANISMS="shadow"
In einem Terminal [3] startet man nun "saslauthd
" und Cyrus neu:
sudo /etc/init.d/saslauthd restart sudo /etc/init.d/cyrus2.2 restart
Ein Neustart von saslauthd und cyrus reicht teilweise nicht. Besser ist es nach der Einrichtung und vor den nächsten Schritten das komplette System neu zu starten.
Wer Cyrus in Verbindung mit der Postfix-Authentifizierung über SASL und dem Socket in der Chroot-Umgebung (/var/spool/postfix/var/run/saslauthd) nutzen möchte, sollte unter /var/run einen symbolischen Link nach /var/spool/postfix/var/run/saslauthd anlegen. Ansonsten ist die Anmeldung bei Cyrus aufgrund des fehlenden Sockets nicht möglich.
sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run/saslauthd
Bei der Installation von Cyrus hat Ubuntu bereits den Benutzer cyrus angelegt. Dieser Benutzer fungiert als Cyrus-Administrator. Damit man Postfächer anlegen kann, muss dieser Benutzer daher zunächst einmal ein Passwort erhalten:
sudo passwd cyrus
Nun kann man in die Administationskonsole von Cyrus wechseln, welche zuerst nach dem eben gesetzten Passwort fragt und einen dann mit einem eigenen Prompt erwartet:
sudo cyradm --user cyrus --server localhost IMAP Password: localhost>
Sollte die Server-Anmeldung fehlschlagen, hilft folgendes:
adduser cyrus mail chown root:mail -R /var/lib/cyrus chown root:mail -R /var/spool/cyrus chmod 770 -R /var/lib/cyrus chmod 770 -R /var/spool/cyrus
Diese Lösung stammt aus dem Forum.
Mit dem Befehl help kann man ausgeben lassen, welche Befehle die Administationskonsole versteht. Mit quit verlässt man die Konsole.
Da Cyrus die Postfächer in einer eigenen Ordnerstruktur unabhängig von den normalen Unix-Mailboxen verwaltet, muss jedes Benutzerpostfach hier mit folgenden Befehlen eigens eingerichtet werden:
cm user.karl cm user.otto
Es ist wichtig, dass für jede Mailbox das Präfix "user." verwendet wird.
Falls man einmal eine Mailbox löschen möchte, dann muss man dem Administratorbenutzer "cyrus
" zunächst die Rechte dazu geben:
sam user.otto cyrus c dm user.otto
Nun sollte man sich mit dem Mail-Client beim IMAP-Server einloggen können. Das Postfach ist natürlich noch leer, aber man kann Ordner anlegen und Mails hineinkopieren.
Wie oben erwähnt, braucht man noch einen MTA, der so konfiguriert werden muss, dass er eingehende Mail beim Cyrus-Server einliefert. Hier wird das Prozedere für den MTA Postfix beschrieben. Eine funktionierende Postfix-Installation wird vorausgesetzt, im folgenden geht es nur noch um die cyrus-spezifischen Anpassungen.
Die praktischste Möglichkeit, Postfix zur Zusammenarbeit mit dem Cyrus-Imapd zu bewegen, bietet das sogenannte Local Mail Transfer Protocol (LMTP), eine abgespeckte Version des Mailprotokolls SMTP, das sowohl von Postfix als auch vom Cyrus-Imapd verstanden wird. Die Kommunikation läuft dabei über ein Unix-Socket namens /var/run/cyrus/socket/lmtp.
Dann muss noch in der Datei /etc/postfix/master.cf - durch Setzen eines "n" an der richtigen Stelle - für den lmtp-Service die chroot-Option deaktiviert werden [3]:
lmtp unix - - n - - lmtp
Außerdem muss in der Datei /etc/postfix/main.cf folgende Zeile hinzugefügt werden, damit eingehende Mail auch wirklich an lmtp weitergeleitet wird:
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
Damit das lmtp-Subsystem von Postfix auch auf den Socket des Cyrus-Daemons zugreifen darf, muss der Systembenutzer postfix noch der Gruppe mail hinzugefügt und Postfix natürlich wieder neu gestartet werden:
sudo adduser postfix mail sudo /etc/init.d/postfix restart
An dieser Stelle sollte der Server bereits funktionsfähig sein.
Folgende Schritte sind notwendig, um auf externen Sicherungsmedien gespeicherte Mailordner und Mails zurückzuspielen.
Nach Installation und Anlegen der Benutzer erstellt man mit einem Mail-Client seiner Wahl die Ordnerstruktur seiner Mails. Hierzu orientiert man sich ggf. an der Ordnerstruktur der gespeicherten Mails. Anschließend werden die gespeicherten Mails ohne die drei Cyrus-Dateien in die entsprechenden Verzeichnisse kopiert. Bei Ubuntu befinden sich diese im Verzeichnis /var/spool/cyrus/mail/.
Wichtig ist nun die Änderung der Benutzerrechte in einer Root-Shell (den Befehl für den jeweiligen Benutzer anpassen):
chown -R cyrus:mail /var/spool/cyrus/mail/ANFANGSBUCHSTABE-DES-BENUTZERNAMENS/user/BENUTZERNAME
Anschließend bedient man sich des Administrationstools von cyrus und stellt die Mailordnerstruktur, die vorher noch angelegt werden müssen (z.B. mit Mailclient), wieder her:
cyradm --user cyrus --server localhost reconstruct -r user.BENUTZERNAME.ordner.unterordner
Die Option -r
stellt rekursiv auch die Unterordner wieder her. Falls dies nicht funktionert (einfach im Mail-Client prüfen), muss der Befehl für jedes Unterverzeichnis separat aufgerufen werden. Die Befehlszeile mit reconstruct muss für die eigenen Bedürfnisse (Benutzername und Ordnerstrukturen) natürlich angepasst werden.
Falls die cyrus.header-Dateien in den Unterordnern vorhanden sind, kann die Ordner-Struktur auch wieder hergestellt werden, ohne sie vorher mit einem Mail-Client per Hand zu erstellen:
sudo -u cyrus /usr/sbin/cyrreconstruct -C /etc/imapd.conf -rf user.BENUTZERNAME
Der Befehl sollte als Benutzer cyrus ausgeführt werden, dafür ist das sudo -u cyrus
zuständig. cyrreconstruct
benötigt die IMAP-Konfigurationsdatei als Parameter. -r
veranlasst, dass alle Unterorder mit einbezogen werden und -f
veranlasst, das alle Ordner, in denen die Datei cyrus.header existiert, in die Subdatenbank aufgenommen werden.
Anschließend kann der Mail-Client auf alle Ordner und die wiederhergestellten Mails wieder zugreifen.
Leider bekommt man bei vielen Fehlern keine besonders schöne Fehlermeldung.
Wenn z.B. die Authentifizierung bei cyrus nicht klappt, dann spuckt cyrus lediglich "cyradm: cannot authenticate to server as user cyrus" aus. Was der eigentliche Grund ist, muss man sich aus den Log-Files rauslesen.
Bei der Fehlersuche sollte man folgende Dateien prüfen:
Cyrus schreibt Fehlermeldungen standardmäßig nach /var/log/mail.err oder /var/log/mail.info
Sasl2 nutzt dazu die Datei /var/log/auth.log
Diese Revision wurde am 2. August 2015 19:40 von aasche erstellt.