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,.
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:localhostin
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/tcphinzugefügt. Als nächstes wird das System so konfiguriert, daß bei einem Connect auf Port 24 das Programm cyrdeliver gestartet wird.
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.
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 -lhinzugefü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 : DENYfreigeschaltet werden. Sicherer ist es, den Dienst nur an localhost zu binden, was allerdings nur möglich ist, wenn inetd durch xinetd ersetzt wird.
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 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=0eingefügt.