Cyrus IMAP Server
asg.web.cmu.edu/cyrus,
asg.web.cmu.edu/cyrus/imapd.
Software : Daemons
: Cyrus IMAP : Übersicht
15-Dec-2004/09-Jan-07
Übersicht
Der Cyrus IMAP Server ist eine gut skalierbare Implementation eines IMAP-Daemons
der Carnegie-Mellong-Universität, die seit Mitte der 1990er Jahre entwickelt
wird.
Cyrus ist dafür konzipiert, auf Servern zu laufen, die keine normalen
Benutzerlogins erlauben; er verwaltet die Postfächer der Benutzer in einer
eigenen Datenbank, unterstützt dabei jedoch leider keine Anbindung an
relationale Datenbankserver wie MySQL, dafür jedoch sowohl Disk-Quotas
als auch Access Control Lists (ACLs).
Cyrus IMAP arbeitet gut mit Postfix
zusammen, wobei beide Dienste entweder auf demselben Host (»single-system
store«), oder auf unterschiedlichen Rechnern (»remote mail store«)
laufen können. Es wird empfohlen, die Auslieferung von Postfix zu Cyrus via
LMTP durchzuführen.
Aus der Selbstdarstellung:
»The Cyrus IMAP server differs from other IMAP server
implementations in that it is generally intended to be run on sealed
servers, where normal users are not permitted to log in. The mailbox
database is stored in parts of the filesystem that are private to the
Cyrus IMAP system. All user access to mail is through the IMAP, POP3, or
KPOP protocols.
The private mailbox database design gives the server large
advantages in efficiency, scalability, and administratability. Multiple
concurrent read/write connections to the same mailbox are permitted. The
server supports access control lists on mailboxes and storage quotas on
mailbox hierarchies« (Quelle:
asg.web.cmu.edu/cyrus/imapd; Zugriff: 11-Jan-2005).
Lizenz:
asg.web.cmu.edu/cyrus/imapd/license.html.
Versionen und Meilensteine
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/CyrusHistory.
Dokumentation
FAQ:
asg.web.cmu.edu/cyrus/imapd/install-FAQ.html.
Wiki: cyruswiki.andrew.cmu.edu,
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/CyrusDocumentation.
Mailinglisten
Übersicht:
asg.web.cmu.edu/cyrus/mailing-list.html.
Archiv:
asg.web.cmu.edu/bb/archive.info-cyrus.
Weitere Mailinglisten:
- cyrus-announce: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/archive.cyrus-announce,
asg.web.cmu.edu/bb/archive.cyrus-announce.
- info-cyrus: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/archive.info-cyrus,
asg.web.cmu.edu/bb/archive.info-cyrus.
- cyrus-sasl: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/archive.cyrus-sasl,
asg.web.cmu.edu/bb/archive.cyrus-sasl.
- cyrus-devel: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/archive.cyrus-devel,
asg.web.cmu.edu/bb/archive.cyrus-devel.
- cyrus-cvs: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/org.acs.asg.project.mail.commits,
asg.web.cmu.edu/bb/org.acs.asg.project.mail.commits.
- sasl-cvs: Anonymous IMAP: Web/HTTP,
cyrus.andrew.cmu.edu/org.acs.asg.project.sasl.commits,
asg.web.cmu.edu/bb/org.acs.asg.project.sasl.commits.
Download
asg.web.cmu.edu/cyrus/download.
FTP:
ftp.andrew.cmu.edu/pub/cyrus.
Anonymous CVS:
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/AnonymousCVS.
Unter Debian GNU/Linux »Sarge« ist Cyrus "apt-gettable"; dabei stehen
zwei Versionsstände zur Verfügung.
Die aktuelle Version ist cyrus21-*:
- cyrus21-admin - Cyrus mail system (administration tool)
- cyrus21-clients - Cyrus mail system (test clients)
- cyrus21-common - Cyrus mail system (common files)
- cyrus21-dev - Cyrus mail system (developer files)
- cyrus21-doc - Cyrus mail system (documentation files)
- cyrus21-imapd - Cyrus mail system (IMAP support)
- cyrus21-murder - Cyrus mail system (proxies and aggregator)
- cyrus21-pop3d - Cyrus mail system (POP3 support)
Aus Kompatibilitätsgründen wird auch noch der cyrus*-Zweig
gepflegt:
- cyrus-admin - CMU Cyrus mail system (administration tool)
- cyrus-common - CMU Cyrus mail system (common files)
- cyrus-dev - CMU Cyrus mail system (developer files)
- cyrus-imapd - CMU Cyrus mail system (IMAP support)
- cyrus-news-spool - CMU Cyrus mail system (News spool support)
- cyrus-pop3d - CMU Cyrus mail system (POP3 support)
Es lassen sich auch einzelne Komponenten des Cyrus-Pakets separat
installieren; wer beispielsweise nur den IMAP-Daemon einsetzen möchte,
kann über apt-get einfach das Paket cyrus21-imapd
installieren; die Debian-Paketverwaltung löst dann die Abhängigkeiten
automatisch auf und entfernt auch konkurrierende Pakete wie
beispielsweise courier-imap.
Konfiguration
Die zentrale Konfigurationsdatei von Cyrus ist /etc/cyrus.conf.
Einrichtung von SASL
Ähnlich wie auch im Falle des Courier
Mail Servers dürfte die Haupthürde bei der Konfiguration des Cyrus
IMAP-Daemons in der Einrichtung der Authentifizierung liegen: »Cyrus
is easy, all the trouble is in SASL, and even that becomes easy after
you understand how SASL works« (Henrique de Moraes Holschuh).
Bevor man sich also an die Einrichtung von Cyrus oder Postfix mit LMTP
macht, muss die Konfiguration von SASL funktionieren.
Eine aktuelle Implementation des Simple Authentication and
Security Layers (SASL) wird bereitgestellt durch das Paket
cyrus-sasl2. Für die Authentifizierung zuständig ist der
saslauthd, der eine Reihe von Authentifizierungsmechanismen wie sasldb,
shadow, rimap, ldap und pam unterstützt.
Beim Installaieren von SASL-Paketen sollte man darauf achten, nicht
SASL1- und SASL2-Dateien durcheinanderzubringen; beide Versionen können
parallel installiert werden, Konfusion ist dann jedoch vorprogrammiert.
Der
saslauthd wird unter Debian GNU/Linux grundsätzlich in
/etc/default/saslauthd konfiguriert; bei SUSE Linux 8.1 ist dies
beispielsweise /etc/sysconfig/saslauthd; unterstützt werden – sofern man dies benötigt –
auch Installationen mit mehreren Authentifizierungsmethoden.
Einbindung von Postfix über LMTP
Soll Cyrus mit Postfix
zusammenarbeiten, muss die Kommunikation über LMTP erfolgen; dies kann
entweder über Unix- oder über TCP-Sockets durchgeführt werden. Für Cyrus
richtet man dafür den LMTP-Administrator postman in
/etc/imapd.conf ein:
lmtp_admins: postman
Im Abschnitt SERVICES der /etc/cyrus.conf muss anschließend die
folgende Direktive eingetragen werden:
lmtp cmd="lmtpd" listen="hostname:lmtp" prefork=0 maxchild=20
Damit diese Direktive funktioniert, muss in /etc/services ein Eintrag
für LMTP existieren; bei Debian GNU/Linux ist dies standardmäßig
nicht der Fall:
lmtp 24/tcp # Private mail system
Anschließend sollte Cyrus IMAP neu gestartet werden:
# /etc/init.d/cyrus21 restart
Stopping Cyrus IMAPd: cyrmaster.
Waiting for complete shutdown...
Starting Cyrus IMAPd: cyrmaster.
Im Syslog sollte sich ein entsprechender Eintrag finden wie
beispielsweise:
cyrus/master[7038]: process 7042 exited, status 0
Anpassung von Postfix für SASL und LMTP
Etwas aufwändiger ist dagegen die Konfiguration von
Postfix für SASL und LMTP; auf dem
Postfix-Rechner muss die Datei /etc/postfix/sasl_passwd angelegt werden,
dort werden die Host- und Benutzernamen sowie die Passwörter
eingetragen. Damit Postfix die Datei verarbeiten kann, muss sie noch
umgewandelt werden:
# postmap /etc/postfix/sasl_passwd
Anschließend wird in /etc/postfix/main.cf eine Dikretive für Cyrus
ergänzt:
# LMTP Delivery for Cyrus
# The following options set parameters needed by Postfix to enable
# delivery to Cyrus via LMTP over TCP.
lmtp_sasl_auth_enable = yes
lmtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
lmtp_sasl_security_options =
lmtp_destination_concurrency_limit = 100
lmtp_destination_recipient_limit = 0
Abschließend wird in der Transport-Map (/etc/postfix/transports) noch
der Transportweg nach folgendem Muster definiert:
domain lmtp:[hostname]
Auch diese Datei muss noch für Postfix "lesbar" gemacht werden:
# postmap /etc/postfix/transport
Abschließend wird Postfix neu gestartet und man kann sich ans Testen
machen:
# /etc/init.d/postfix restart
Bei Installationen, bei denen Accounts auch per POP3 abgeholt werden,
sollte man besonders darauf achten, dass der entsprechende Daemon
weiterhin arbeitet; setzt man beispielsweise
Qpopper ein, muss natürlich der
POP3-Server von Cyrus in der /etc/cyrus.conf deaktiviert
sein.
Troubleshooting
Sollte nicht alles auf Anhieb klappen, kann man den Log-Level von
Cyrus erhöhen; unter Debian GNU/Linux macht man das in
/etc/default/cyrus21:
CYRUS_VERBOSE=1
Zum ersthaften Debuggen kann das Loglevel bis auf den Wert 30
hochgesetzt werden; bei höheren Legleveln pausiert Cyrus für 15
Sekunden, so dann man dann strace und/oder ltrace einsetzen kann.
Im Gegensatz zum Courier Mail Server
schreibt Cyrus seine Fehlermeldungen nicht in /var/log/mail.err, sondern
ins Standard-Syslog /var/log/syslog sowie nach /var/log/auth.log. Dort finden sich beispielsweise bei
Fehlern der SASL-Authetifizierung Einträge wie:
cyrus/imapd[7085]: badlogin: <host.domain>[<ip-adresse>]
plaintext <user> SASL(-13): user not found: checkpass failed
Weitere Hinweise zum Troubleshooting von Cyrus finden sich im
Cyrus-Wiki:
Administration
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/CyrusAdministration.
Development
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/CyrusDevelopment.
Bugzilla:
acs-wiki.andrew.cmu.edu/twiki/bin/view/Cyrus/CyrusBugzilla.
Alternativen
Netmarks
Cyrus IMAP HOWTO,
en.tldp.org/HOWTO/Cyrus-IMAP.html.
Managing IMAP: Chapter 9: Cyrus System Administration (O'Reilly),
www.oreilly.com/catalog/mimap/chapter/ch09.html.
|