[Notiz] cyrusv2 versucht, Mail an nicht-existente User auszuliefern

closeAchtung: 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 :-D

GD Star Rating
loading...


Diese Artikel könnten Dich ebenfalls interessieren:
Schlagwörter: , ,