Deferred email with remote protocol error in reply
Wesley Craig
wes at umich.edu
Fri Oct 27 14:42:33 EDT 2006
On 27 Oct 2006, at 05:08, Libor Pechacek wrote:
>> MAIL FROM:<lpechacek at fm.clnet.cz <mailto:lpechacek at suse.de>>
>> SIZE=15311
>> RCPT TO:<test at fm.clnet.cz <mailto:flow at tormore.hwlab.suse.de>>
>> DATA
> < 250 2.1.0 ok
> < 250 2.1.5 ok
> < 354 go ahead
>> .
> < 7 lockers
>
> In this case the obvious reason for the error is the "7 lockers" line
> that leaked from BDB. It makes only small harm itself but causes the
> next message to be bounced due to protocol error in case the LMTP
> connection is reused. Workaround to the bounces is simple -
> "lmtp_cache_connection = no" in Postfix's main.cf.
Here's where this happens in BDB 4.3.29:
./lock/lock_deadlock.c-418- *nlockers = 0;
./lock/lock_deadlock.c-419- return (0);
./lock/lock_deadlock.c-420- }
./lock/lock_deadlock.c-421-
./lock/lock_deadlock.c-422- if (FLD_ISSET(dbenv->verbose,
DB_VERB_DEADLOCK))
./lock/lock_deadlock.c:423: __db_msg(dbenv, "%lu
lockers", (u_long)count);
./lock/lock_deadlock.c-424-
./lock/lock_deadlock.c-425- count += 20;
./lock/lock_deadlock.c-426- nentries = (u_int32_t)DB_ALIGN(count,
32) / 32;
./lock/lock_deadlock.c-427-
./lock/lock_deadlock.c-428- /*
So, first thing is that the message shouldn't be written if this
DB_VERB_DEADLOCK isn't set. Quickly skimming the BDB code, it
doesn't appear that this defaults on. I'm wondering if you have:
set_verbose db_verb_deadlock
in your DB_CONFIG file? Once it's on, I don't see a way to turn it
off, other than calling the set_verbose method from within Cyrus.
The larger problem is that daemons shouldn't be impacted by libraries
that inappropriately write to stdout or stderr. As such, lmtpd
should have closed stdin, stdout, stderr and reopening them with,
e.g., '/', O_RDONLY. Accepted connections should not use file
descriptors 0, 1, or 2, since those file descriptors are frequently
(mis)used by underlying libraries. This is the fatal error in inetd,
and apparently in cyrus master?
:wes
More information about the Info-cyrus
mailing list