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: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.
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 -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.
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=0
eingefügt.