Home       Servicebereich  Projekte  Kontakt  


Anbindung von Cyrus an Postfix

In der Standardkonfiguration liefert Postfix Mails an lokale Empfänger im MBox Format nach /var/mail/<username> aus. Die Benutzer können direkt oder über einen POP3 bzw. IMAP Server auf die Mailboxen zugreifen. Der IMAP Server Cyrus verwaltet die Emails in eigenen Mailboxen im DBM-Datenbankformat und greift nicht auf die System-Mailboxen der Benutzer zu.

Die Auslieferung der lokalen Email an Cyrus erfolgt mit Hilfe des Programms cyrdeliver. Das Binary ist bei Debian Woody als /usr/sbin/cyrdeliver installiert. Bei anderen Systemen kann es auch unter /usr/local/cyrus/bin/deliver oder anderen Pfaden und Namen installiert sein.
Dieses Programm wird entweder direkt von der ausliefernden Postfix-Komponente aufgerufen oder kann auch per (x)inetd gestartet werden. Im letzteren Fall wird die Mail wird per Local Mail Transfer Protocol (RFC 2033) an cyrdeliver übergeben.

Beim direkten Aufruf von cyrdeliver wird es u.U. Probleme mit den Berechtigungen geben, da der Aufruf von Postfix mit der ID des lokalen Benutzers der auszuliefernden Email und der Gruppe "mail" erfolgt. Aus diesem Grund sollte der Transport wie in der Postfix-Dokumentation beschrieben per LMTP erfolgen,.

Auslieferung per LMTP

Zur Emailauslieferung per LMTP wird Postfix so konfiguriert, daß lokale Mail per LMPT weitergeleitet wird. Dieses erfolgt durch die Zeile

    # main.cf
    mailbox_transport = lmtp:localhost
in main.cf. Mit dieser Anweisung wird Postfix dazu veranlaßt, lokale Mail mit dem LMTP Protokoll an den Port "lmtp" per tcp auszuliefern. Dieser Port ist in der Regel noch nicht vergeben und noch nicht an einen Service-Namen gebunden. Um dem Port einen Servicenamen zuzweisen wird der Datei /etc/services die Zeile
    # /etc/services
    lmtp            24/tcp
hinzugefügt. Als nächstes wird das System so konfiguriert, daß bei einem Connect auf Port 24 das Programm cyrdeliver gestartet wird.

Cyrus 1.x

Alle Cyrus Daemons werden bei Cyrus 1.x per (x)inetd gestartet. Die Anbindung per LMTP erfolgt daher auch auf diese Weise und wird in den jeweiligen Konfigurationsdateien /etc/inetd.conf bzw. /etc/xinetd.conf eingestellt.

inetd

Wenn auf dem System ein inetd läuft, wird der Datei /etc/inetd.conf die Zeile

    lmtp stream tcp nowait cyrus /usr/sbin/tcpd /usr/sbin/cyrdeliver -e -l
hinzugefügt und dem Dienst ein SIGHUP geschickt. Wenn wie in diesem Fall der tcpwrapper eingefügt ist, muß der Zugriff noch durch einen Eintrag in /etc/hosts.allow mit den Zeilen
    cyrdeliver : localhost : ALLOW
    cyrdeliver : ALL@ALL : DENY
freigeschaltet werden. Sicherer ist es, den Dienst nur an localhost zu binden, was allerdings nur möglich ist, wenn inetd durch xinetd ersetzt wird.

xinetd

Im Falle von xinetd wird in der Konfigurationsdatei /etc/xinetd.conf (oder in einer von xinetd.conf einzulesenden Datei) einfach der Block

    service lmtp
    {
          socket_type     = stream
          protocol        = tcp
          wait            = no
          user            = cyrus
          server          = /usr/sbin/cyrdeliver
          server_args     = -e -l
          bind            = 127.0.0.1
    }
eingefügt und dem Dienst ein SIGHUP geschickt.

Cyrus 2.x

Cyrus 2 bringt einen eigenen Superserver mit, der sich an die einzelnen Ports bindet und die jeweiligen Dienstprogramme startet. Hier wird in der Cyrus Konfigurationsdatei im Block SERVICES die Zeile

    lmtp cmd="lmtpd" listen="127.0.0.1:lmtp" prefork=0 
eingefügt.

< zurück