Vortrag CYRUS IMAP-Server Generell: POP3/IMAP
Total Page:16
File Type:pdf, Size:1020Kb
Vortrag CYRUS IMAP-Server Peer Hartleben 05/2005 Generell: Wenn Sie sich das erste Mal mit dem Cyrus POP/IMAP-Server beschäftigen und Recherchen im Internet anstellen werden Sie bemerken, dass Cyrus nicht gleich Cyrus ist. Unter diesem Namen gibt es eine ganze Reihe von Projekten die an der Carnegie Mellon Universität entwickelt werden. Dazu gehören unter Anderem Cyrus-SASL, Cyrus IMAP Aggregator – eine Art Loadbalancer für Mailserver und der Cyrus IMAPd - das Thema dieses Vortrags. POP3/IMAP – was ist was? POP3: Dient zur Übertragung der e-Mails vom Mailserver auf den lokalen Client. Dabei werden i.d.R. die e-Mails vom Server gelöscht. IMAP (Internet Message Access Protocol): Hierbei arbeitet der Nutzer direkt auf dem Mailserver. Nach beendeter Netzwerkverbindung sind die Mails nur auf dem Server, nicht auf dem Client vorhanden. Heute bieten moderne Mailclients immer mehr Mischformen an. Beim POP3-Abruf, kann man bestimmen, dass die Mails zusätzlich auf dem Server gespeichert bleiben sollen, und/oder erst nach einem bestimmten Zeitraum gelöscht werden. Ebenso gibt es seit einiger Zeit die Option „cached IMAP“. Hierbei funktioniert das ganze genau anders herum, die Mails werden auf dem Server bearbeitet, aber zusätzlich auf dem Client als lokale Kopie vorgehalten. Letzteres ist in fast allen Szenarien die Ideallösung. Alle diese Möglichkeiten werden von modernen Mailservern unterstützt. Dazu gehört der Cyrus. Quellen und Links: - http://asg.web.cmu.edu/cyrus - http://www.web-cyradm.org/ - http://sourceforge.net/projects/cyrus-utils Konzept: Die Funktionsweise, in Zusammenarbeit mit einem MTA (in diesem Beispiel Postfix) folgt einer einfachen Struktur: Postfix nimmt e-Mails an. Je nach Einstellung findet Postfix entsprechende Weiterleitungsregeln. Eine solche Regel besagt z.B., dass ankommende e-Mails direkt an Cyrus weitergereicht werden sollen. Cyrus nimmt diese Mails in Empfang und verteilt sie in seine entsprechenden Mailverzeichnisse, die sogenannten Userpostfächer. Die User können sich via POP§ oder IMAP am Cyrus anmelden und die e-Mails aus ihren Postfächern abholen. Die Userverwaltung und die Mailverzeichnisse sind hierarchisch aufgebaut. Das betrifft auch die Zugriffsregelungen über Access-Control-Lists (ACL)und die Speicherplatzbeschränkungen über Quotas. Alles was an höherliegenden Verzeichnis-/Userebenen geändert wird, hat automatisch Auswirkungen auf darunterliegende Ebenen. Als Beispiel nehmen wir den User geeko. Wird er eingerichtet, bekommt er automatisch das Verzeichnis „inbox“. Der User legt sich selbst noch die Unterverzeichnisse „gesendet“, „vorlagen“ und „papierkorb“ an. Das würde sich in der Cyrus-Folder-Struktur unter /var/spool/imap/ so wiederfinden: user.geeko (inbox) user.geeko.gesendet (gesendet) user.geeko.vorlagen (vorlagen) user.geeko.papierkorb (papierkorb) Bekommt das Verzeichnis „user.geeko“ eine Quota-Beschränkung von 50 MB, würden davon auch die Verzeichnisse „gesendet“, „vorlagen“ und „papierkorb“ betroffen sein. Cyrus speichert die e-Mails unterhalb der Nutzerverzeichnisse in einem eigenen Datenbankformat. Ist eine Mailbox angelegt, finden sich auf Dateiebene in deren Verzeichnis verschiedene zusätzliche Dateien. Diese enthalten u.A. die Mailboxdatenbank, Statusinformationen und einen Index zur performanteren Verwaltung der e-Mails auch bei großen Nachrichten und vielen Nutzern. Jede e-Mail wird in einer eigenen Datei gespeichert. Das hat den Vorteil, dass bei Problemen, z.B. durch einen Fehler im Dateisystem, nicht die komplette Mailbox zerstört wird, sondern im Ernstfall nur eine einzige Nachricht. Mit dem Tool „cyrdump“ können diese Mailboxdatenbanken über stdout in eine Textdatei exportiert werden. Funktionen und Fähigkeiten des Cyrus Mailserver: -Shared Folder / Shared Mailbox Über ACLs können einzelne Postfach-Ordner oder auch ganze Mailboxen für mehrere Benutzer oder die gesamte Öffentlichkeit freigegeben werden. Diese Ordner/Mailboxen lassen sich dann bequem per Mailclient abonnieren. Über diese ACLs können Sie auch explizite Rechte für einzelne Verzeichnisse oder ganze Mailboxen vergeben. -Quotas Speicherplatzbeschränkungen können generell für alle neu anzulegenden Mailboxen oder für jede Mailbox und sogar für jedes Unterverzeichnis individuell angegeben werden. Dabei ist auch hier die Hierachie der Verzeichnisse zu beachten. Sie können also einem Unterverzeichnis nicht mehr Speicherplatz als dem darüberliegenden Verzeichnis zuordnen. Übrigens können User ab einem bestimmten Prozentsatz eine Quota-Warnung angezeigt bekommen. Dies geschieht allerdings über ein spezielles IMAP-Kommando und muss vom Mail-Client unterstützt werden. -individuelle Partitionen für jede Mailbox Neu anzulegende Mailboxen können sowohl eine Standardpartition/Verzeichnis zugewiesen bekommen oder auch einen ganz individuellen Speicherort. Beim Cyrus ist dabei immer die Rede von einer „Mail-Partition“, egal ob es sich tatsächlich um eine Partition oder um ein Verzeichnis handelt. -Authentifizierung Mailboxbenutzer werden über cyrus-sasl (simple authentication & security layer) authentifiziert. Die meisten Distributionen bringen diese Bibliothek mit und verwenden sie auch für andere Dienste. Die SASL-Bibliothek ist sehr vielseitig und beinhaltet zahlreiche Authentifizierungsmechanismen. Diese werden in der Config-Datei mit dem Wert „pwcheck_method“ angegeben. Die passenden Werte finden Sie in den Klammern hinter der jeweiligen Methode: - passwd (passwd) - shadow (shadow) - sasl2db (auxprop) (- sasldb (sasldb)<- veraltete SASL-Version 1, nur Klartext-Passwörter!) - kerberos (kerberos_v4) - PAM (pam) Über ein entsprechend angepasstes PAM (pluggable authentication module) können weitere Mechanismen eingebunden werden. Die meisten davon liegen aktuellen Distributionen bei. - pam_mysql (Authentifizierung über MySQL-Server) - pam_pgsql (Authentifizierung über Postgres SQL-Server) - pam_krb5 (Authentifizierung über Kerberos-Server) - pam-ldap (Authentifizierung über LDAP-Server) - pam_radius (Authentifizierung über Radius-Server) - pam_smb (Authentifizierung über SAMBA-Server) - poldi (Authentifizierung über OpenPGP-Smartcards) - pam_blue (Authentifizierung über Bluetooth-Geräte) Weiter Module bis hin zur Spracherkennung finden Sie unter Anderem hier: http://www.kernel.org/pub/linux/libs/pam/modules.html Standardmäßig werden die Passwörter zwar im Klartext gespeichert, Cyrus erlaubt aber selbstverständlich auch die Verschlüsselung der Zugangsdaten. Folgende Mechanismen stehen zur Verfügung: - DIGEST-MD5 - CRAM-MD5 -Sieve Mailfilter Über dieses Filtersystem können User ihre eigene Mailbox sehr detailliert konfigurieren. Sieve (als Online- Interface „websieve“) erlaubt u.A. folgende Einstellungen: - Mailfilter zum Verschieben in andere Verzeichnisse oder zum Löschen von SPAM - Einrichten von Shared-Foldern - Einrichten einer Urlaubsbenachrichtigung/Autoresponder Der Sieve Mailfilter wirkt sich direkt auf alle ankommenden Mails aus. Bekommt Cyrus eine Mail geliefert, „schaut“ er in die Sieve-Definitionen und sortiert die Mail entsprechend ein, antwortet darauf, oder löscht sie. -Virtuelle Domains Cyrus ist von Haus aus in der Lage Mailboxen für virtuelle Domains zu verwalten. Die Funktionsweise ist relativ einfach. Die Postfächer der User werden einfach inklusive des Domainnamens angelegt. Jeder User existiert dabei unterhalb einer (seiner) Domain mit einem voll qualifizierten Domainnamen. Zusätzlich können Domain-Administratoren eingerichtet werden, die wiederum nur Zugriff auf Mailboxen unterhalb ihrer Domain haben. Aktiviert wird diese Funktion in /etc/imapd.conf: admins: admin [email protected] [email protected] virtualdomains: yes defaultdomain: meinedomain.org Im Klartext: Der Benutzer „admin“ hat vollen Zugriff auf alle Postfächer. Die Benutzer „horst“ und „paul“ nur auf ihre eigenen Domainpostfächer. Somit können ganz einfach beliebig viele Administratoren eingesetzt werden. Konfiguration: Um einen Cyrus-Mailserver betreiben zu können, sollten folgende Anwendungen installiert sein: - Cyrus SASL Darüber authentifizieren sich die Nutzer an unserem Mailserver. - OpenSSL Zur verschlüsselten Übertragung der Benutzerdaten und e-Mails per TLS/SSL. - MySQL / LDAP / BerkleyDB Je nach Bedarf die entsprechende Datenbank für die Nutzerverwaltung. Alternativ genügt auch die Verwaltung über die Unix-Systemaccounts. - Postfix Mail Transfer Agent (MTA), für den Empfang/Versand der e-Mails. Alternativ lassen sich auch anderen MTAs anbinden. - Cyrus IMAPd Der IMAP/POP3 Mailserver. Aktuelle Version ist 2.2. Die wichtigsten Config-Dateien: - /etc/cyrus.conf - /etc/imapd.conf - /etc/postfix/main.cf (oder die entsprechende Config-Datei des jeweiligen MTA) Die wichtigsten Ports: - 993 IMAP-TLS - 143 IMAP - 995 POP3-TLS - 110 POP3 - 443 HTTPS - 80 HTTP - 25 SMTP - 2000 SIEVE - 3306 MySQL Im ersten Schritt muss Sie die Zusammenarbeit zwischen Postfix und dem IMAPd sichergestellt werden. Schließlich wissen nach der Installation Postfix und Cyrus noch nichts von einander. Letztendlich soll aber Postfix seine e-Mails an den Cyrus zustellen. Der einfachste und zuverlässigste Weg führt über einen LMTP-Socket, den beide Programme zur Kommunikation benutzen. Ein Socket ist eine nur zur Laufzeit der Programme existente Datei, über die in diesem Fall Postfix seine angenommenen Mails an den Cyrus weiterreicht. Werden die Dienste beendet, verschwindet auch der Socket. Hinweis: Um die Zusammenarbeit mit älteren MTAs, die noch kein LMTP können, zu gewährleisten, hält Cyrus zusätzlich noch das Modul “delivery“ vor. Dieses Modul „unterhält“