Cyrus

Cyrus (https://cyrusimap.org/) ist ein Open Source Projekt der Carnegie Mellon University (CMU), für deren Campus Mail System der Server ursprünglich entwickelt wurde. Heute ist Cyrus ein hoch skalierbarer und sehr robuster Mailserver, der weltweit auch in großen Umgebungen eingesetzt wird. Der Client-Zugriff erfolgt über die Standard-Protokolle IMAP und POP3. Die Zustellung erfolgt via LMTP, wodurch Cyrus mit jedem gängigen MTA zusammenarbeiten kann.

Mit der Unterstützung von virtuellen Domains ist Cyrus mandantenfähig. Benutzernamen müssen dadurch nur innerhalb ihrer Domain eindeutig sein.

Jede Mail wird von Cyrus im Filesystem in einer eigenen Datei gespeichert. Hinzu kommen einige Index Files sowie die zentrale mailboxes.db, in der die komplette Mailbox-Struktur des Servers abgebildet ist. Der Server ist unempfindlich, denn selbst bei Verlust der zuletzt genannten Dateien lassen sich die Mailboxen mittels reconstruct wiederherstellen.

Cyrus SASL

Zur Authentifizierung der Benutzer benutzt Cyrus die "eigene" SASL-Bibliothek. SASL steht für Simple Authentication and Security Layer und ist ein Framework, das einige Internet-Protokolle (neben IMAP, POP3 und SMTP z. B. auch LDAP) für die Authentifizierung verwenden.

Administration

Für die Administration der Mailboxen sowie ihrer ACLs und Quotas bringt Cyrus das Command Line Tool cyradm mit. Für die Verwaltung größerer Umgebungen gibt es sowohl für Perl als auch für Python und PHP neben IMAP-Modulen auch welche für die Cyrus-Administration. 

ACLs und Shared Folders

Der Zugriff auf die Mailboxen wird über Access Control Lists (ACLs) geregelt. Für jeden Benutzer kann auf jede Mailbox in der Hierarchie eine eigene ACL festgelegt werden.

Gemeinsame Ordner (Shared Folders) werden in Cyrus genauso wie alle Mailboxen angelegt und verwaltet. Für welche Benutzer sie wie nutzbar sind, entscheidet sich über die vergebenen ACLs. Für öffentliche Ordner kann stellvertretend die ACL für alle Benutzer (anyone) konfiguriert werden.

Quota

Eine Quota (nur STORAGE, MESSAGE ist für Version 2.5 geplant) kann in Cyrus für jede Mailbox in der Hierarchie individuell gesetzt werden.

Die Zustellung einer Mail auf den Cyrus erfolgt niemals direkt aus dem Internet. Ohne entsprechende Vorkehrungen auf den Eingangsservern würde eine Ablehnung von Mails aufgrund von Over Quota beim Mailstore bei notorisch überfüllten Mailboxen dazu führen, dass sich die Queues der eigenen Ausgangsserver füllen. Mit Hilfe des Cyrus-Programms quota kann Sendmail die Quota-Situation des Cyrus für den Empfänger einer Mail bereits am Gateway abfragen und Mails ablehnen, die aufgrund von Over Quota nicht zugestellt würden.

Sieve

POP3-/IMAP-Zugriffe Mailsystem

Sieve (http://sieve.info) ist eine Sprache zur Mail-Filterung. Sie verdankt ihre Entstehung ebenfalls der CMU, wo ihre Entwicklung im Rahmen des Cyrus Projekts angestoßen wurde. Heute wird Sieve von vielen Mailservern unterstützt.

Die Erstellung von Sieve-Skripten wird in heterogenen Mailsystemen zumeist dem Webmail überlassen, das den Benutzern eine geeignete GUI bereitstellt (wie z. B. Squirrel, Roundcube oder Open-Xchange).

Gängige Aufgaben für Sieve-Skripte sind

  • Abwesenheitsnachrichten
  • Weiterleitungen
  • Sortieren von Mails in Subfolder gemäß geeigneter Filterregeln

Backup und Restore

Weil Cyrus mit jedem Maileingang und -zugriff auch Index Files beschreibt wird oft empfohlen, den Cyrus Server für das Backup (z.B. mittels Snapshot oder rsync) herunterzufahren, um die Konsistenz Backups zu gewährleisten.  In hochfrequentierten Umgebungen sind auch kurze Ausfallzeiten aber oft inakzeptabel. In solchen Fällen wird das Backup im laufenden Betrieb erzeugt. Sollte während des Restores festgestellt werden, dass ausgerechnet die zurückzusichernden Maildaten korrupt sind, kann genau diese Mailbox mittels reconstruct wiederhergestellt werden.

Perdition Proxy 

In größeren Mailsystemen werden oftmals Proxies vor die POP3-/IMAP-Server geschaltet. Das erhöht nicht nur die Sicherheit, weil es keinen direkten Zugriff mehr auf den Mailbox-Server gibt, sondern auch die Flexibilität und ermöglicht eine transparente Migration. Perdition (http://horms.net/projects/perdition/) ist ein IMAP und POP3 Proxy, der ab der Version 2 auch das ManageSieve Protokoll unterstützt.

Struktur

Das obige Schaubild zeigt die typische Struktur einer hochverfügbaren IMAP Server Farm. Die Mailboxen liegen verteilt auf mehreren Cluster Servern, HA kann entweder durch eine geeignete Cluster Software (wie Red Hat Cluster) oder durch manuelles Umschalten erzeugt werden. Die Daten werden jeweils doppelt vorgehalten, liegen entweder auf einem Cluster Filesystem oder werden in der schlichteren Variante mittels DRBD gespiegelt.