ubuntuusers.de

Cyrus IMAPD

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

./cyrus_logo.png 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.

Installation der benötigten Pakete

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)

Paketliste zum Kopieren:

sudo apt-get install cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin 

Oder mit apturl installieren, Link: apt://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 Archiv/Squirrelmail installiert werden, wenn man Zugriff auf die Mails über ein Webfrontend haben will.

Konfiguration von Cyrus

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:

  1. Entfernen des Kommentar-Zeichens (#) vor "admins: cyrus"

  2. Entfernen des Kommentar-Zeichens (#) vor "sasl_mech_list: PLAIN"

  3. Ändern von "sasl_pwcheck_method" in "saslauthd"

  4. 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.

Einrichten der Authentifizierung (saslauthd)

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:

  1. das Kommentar-Zeichen (#) vor "START=yes" entfernen. (ggf. "START=no" in "START=yes" ändern)

  2. 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 

Hinweis:

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 

Einrichten der Postfächer

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> 

Hinweis:

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 

Hinweis:

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.

Einrichten von Postfix

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 

Hinweis:

An dieser Stelle sollte der Server bereits funktionsfähig sein.

Mails importieren

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.

Mails wiederherstellen

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.

Fehlersuche

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 10. August 2018 16:54 von BillMaier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: IMAP, Netzwerk, Email, Server, Installation