Loss of mail with Murder+LMTP (imapd 2.3.7): incoming mail rejected
just after server restart
Farzad FARID
ffarid at pragmatic-source.com
Thu Sep 14 06:25:25 EDT 2006
Hi,
In my unified murder configuration (cyrus imapd 2.3.7) with 2 imap
servers and 1 mupdate server, I have a unwanted behaviour when LMTP
tries to deliver mail for a mailbox that is not available.
Lets says I have a user, "user2", whoses mailboxes are on "imap2".
Scenario 1 :
======
- mupdate UP
- imap1 UP
- imap2 UP
* When mupdate, imap1 and imap2 are running, everything goes well.
Even when I deliver mail via LMTP to "imap1", who doesn't own
"users2"'s mailboxes. "imap1" then connects to "imap2" and
correctly delivers the mail.
==> OK
Scenario 2 :
=======
- mupdate UP
- imap1 DOWN, then UP for less than 10 minutes
- imap2 DOWN
Now I shut down both "imap1""imap2", and restart ONLY imap1. The mupdate
server is always running and has never been shut down.
* Again, I send an email for "user2" via LMTP to "imap1", the
mailbox being hosted on "imap2".
* Instead of returning a soft error (4XX) as I would have expected,
imap1 returns a hard error (5XX) to the SMTP/LMTP server, and the
mail is lost!
==> Incoming Mail lost
Here are log transcripts:
- On the LMTP server (Postfix 2.0.x):
Sep 14 11:50:29 galia postfix/lmtp[24424]: 80E8473F35:
to=<user2 at xxxxx.com>, relay=imap1[10.12.17.44], delay=1154,
status=bounced (host imap1[10.12.17.44] said: 550-Mailbox unknown.
Either there is no mailbox associated with this 550-name or you do not
have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT
TO command))
- On "imap1":
Sep 14 11:50:28 imap1 cyrus/lmtp[26411]: connection from
galia.srv.in.karavel.com [10.12.17.31]
Sep 14 11:50:28 imap1 cyrus/master[26548]: about to exec
/usr/lib/cyrus/bin/lmtpd
Sep 14 11:50:28 imap1 cyrus/lmtp[26411]: login: galia.srv.in.karavel.com
[10.12.17.31] postman DIGEST-MD5 User logged in
Sep 14 11:50:28 imap1 cyrus/lmtp[26548]: executed
Sep 14 11:50:28 imap1 cyrus/lmtp[26411]: kick_mupdate: can't connect to
target: Connection refused
Sep 14 11:50:28 imap1 cyrus/lmtp[26411]: verify_user(user.user2) failed:
Mailbox does not exist
Sep 14 11:53:09 imap1 cyrus/master[26353]: process 26411 exited, status 0
Scenario 3 :
======
- mupdate UP
- imap1 UP for more than 10 minutes
- imap2 DOWN
This time, if I wait *a few minutes* before resending a mail to "user2"
via LMTP on "imap1". I do get a soft error, as expected.
==> Incoming Mail deferred.
Here are the new log transcripts:
- On the LMTP server:
Sep 14 11:59:54 galia postfix/lmtp[25497]: CDB3573D48:
to=<user2 at xxxx.com>, relay=imap1[10.12.17.44], delay=0, status=deferred
(host imap1[10.12.17.44] said: 451 4.4.3 Remote server unavailable (in
reply to end of DATA command))
- On the "imap1" server:
Sep 14 11:59:53 imap1 cyrus/master[26560]: about to exec
/usr/lib/cyrus/bin/lmtpd
Sep 14 11:59:53 imap1 cyrus/lmtp[26530]: connection from
galia.srv.in.karavel.com [10.12.17.31]
Sep 14 11:59:53 imap1 cyrus/lmtp[26560]: executed
Sep 14 11:59:53 imap1 cyrus/lmtp[26530]: login: galia.srv.in.karavel.com
[10.12.17.31] postman DIGEST-MD5 User logged in
Sep 14 11:59:53 imap1 cyrus/lmtp[26530]: connect(imap2) failed:
Connection refused
Question:
======
Can anybody tell me what went wrong and why "imap1" wasn't aware of the
existence of mailboxes on "imap2" just after startup?
I have another question, related to imapd startup :
- I have 13000 mailboxes on "imap1" and 14000 mailboxes on "imap2".
- When I start "imap1", it kicks "ctl_mboxlist -m" before spawning
other processes. This mailbox synchronisation process is very slow and
takes at least 4 minutes.
Why is this "ctl_mbox_list -m" so slow? Is this related to the fact that
even when "imap1" is up and running, it still isn't fully operational
before at least 10 minutes?
Here is some info on my configuration. I can provide more info if needed.
- All 3 servers running Debian stable+testing + home compiled Cyrus
Imapd 2.3.7
- They all have bi-XEON with at least 3 Gb of RAM
- Server load is very low, as this is a test environnment
- 13000 mailboxes on imap1, 14000 on imap2
- 1200 total users, stored in LDAP
- Database formats:
ANNOTATION skiplist
DUPLICATE berkeley-nosync
MBOX skiplist
PTS berkeley
QUOTA quotalegacy
SEEN skiplist
SUBS flat
TLS berkeley-nosync
Regards
--
Farzad FARID <ffarid at pragmatic-source.com>
Architecte Open Source / Pragmatic Source
http://www.pragmatic-source.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.andrew.cmu.edu/pipermail/info-cyrus/attachments/20060914/e534c575/attachment-0001.html
More information about the Info-cyrus
mailing list