Achtung: dieser Blogeintrag wurde vor 4 Jahren, 1 Monat und 26 Tagen veröffentlicht!
Beachtet das bitte dringend, vor allem im Falle konkreter Anleitungen.
Für etwaige Schäden kann keine Haftung übernommen werden!
Eine Sache, die verdammt nervig ist: sendmail nimmt Mail entgegen, und als confLOCAL_MAILER ist cyrusv2 definiert; sendmail übergibt diese Mails, jedoch prüfen weder er noch der cyrus, ob diese Adresse tatsächlich existiert. Existiert sie nicht, wird postmaster benachrichtigt — was im Ernstfall für einen Overhead von mehreren 100 Mails pro Tag führen kann.
Schauen wir uns das einmal genauer an; ich habe einen User mary, der eine lokale cyrus-Mailbox hat; den User blafasel gibt es nicht.
# /usr/sbin/sendmail -bv mary
mary... deliverable: mailer cyrusv2, user mary
# /usr/sbin/sendmail -bv blafasel
mary... deliverable: mailer cyrusv2, user blafasel
Sprich: dem sendmail ist es völlig egal, der schiebt alles an cyrus weiter. Um das zu verhindern, sind einige Änderungen an der Konfiguration nötig — in erster Linie benötigen wir ein zusätzliches FEATURE-File für den sendmail:
# cd /usr/share/sendmail-cf/feature/
# wget http://www.bsdbox.de/downloads/emailserver/ckuser_cyrus.m4
In meinem Fall mußte dieses File ein wenig modifiziert werden; mein cyrus (unter Fedora) legt all seine sockets nach /var/lib/imap/socket/, das File gbt einen anderen default-Wert aus:
14c14
< ifelse(len(X`'_ARG_), `1', `local:/var/lib/imap/socket/smmapd', _ARG_))
---
> ifelse(len(X`'_ARG_), `1', `local:/var/imapd/socket/smmapd', _ARG_))
Also den Pfad zum Socket entsprechend anpassen und sich merken (!).
Als nächstes muß die Konfiguration des sendmail angepaßt werden; hierzu wird die sendmail.mc editiert und ziemlich am Ende (nach define(`confLOCAL_MAILER',`cyrusv2')dnl) folgendes hinzugefügt:
FEATURE(`ckuser_cyrus')dnl
Anschließend die sendmail.cf neu generieren:
# m4 sendmail.mc > sendmail.cf
Zuletzt muß auch dem cyrus gesagt werden, daß er etwas mit diesem Socket zu tun hat; anzupassen ist /etc/cyrus.conf, meine sieht beispielsweise nun so aus:
START {
recover cmd="ctl_cyrusdb -r"
idled cmd="idled"
}
SERVICES {
##imap cmd="imapd" listen="imap" prefork=5
imaps cmd="imapd -s" listen="imaps" prefork=1
##pop3 cmd="pop3d" listen="pop3" prefork=3
pop3s cmd="pop3d -s" listen="pop3s" prefork=1
##sieve cmd="timsieved" listen="sieve" prefork=0
##nntp cmd="nntpd" listen="nntp" prefork=3
##nntps cmd="nntpd -s" listen="nntps" prefork=1
##lmtp cmd="lmtpd" listen="lmtp" prefork=0
lmtpunix cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
smmapd cmd="smmapd" listen="/var/lib/imap/socket/smmapd" prefork=1
##notify cmd="notifyd" listen="/var/lib/imap/socket/notify" proto="udp" prefork=1
}
EVENTS {
checkpoint cmd="ctl_cyrusdb -c" period=30
delprune cmd="cyr_expire -E 3" at=0400
tlsprune cmd="tls_prune" at=0400
squatter cmd="/usr/lib/cyrus-imapd/squatter -r *" period=120
}
Nun den cyrus neu starten — aufmerksam das Logfile beobachten! Kommen keine Fehlermeldung bzgl. nach Behebung eventueller Fehler kann nun auch der sendmail durchgestartet werden. Auch hier alles okay? Nun denn — ein Testlauf:
# /usr/sbin/sendmail -bv mary
mary... deliverable: mailer cyrusv2, user mary
# /usr/sbin/sendmail -bv blafasel
blafasel... Mailbox is not available.
That’s great
loading...
Diese Artikel könnten Dich ebenfalls interessieren:
Facebook
Twitter
Google
Email
RSS