On Fri, Feb 22, 2002 at 11:40:04AM -0500, Ken Murchison wrote: > > > Christopher Wong wrote: > > > > On Fri, 22 Feb 2002, Christopher Wong wrote: > > > I am using Cyrus-IMAP 2.0.16 with Sieve enabled, and managing it with > > > websieve. For this mailing list, I set up the following rule using > > > websieve (as displayed by the "current rules" page): > > > > > > IF 'To' contains 'info-cyrus' OR field: 'CC' contains 'info-cyrus' THEN > > > File Into 'INBOX.Cyrus-IMAP' > > > > > > This rule works most of the time. What puzzles me is that some emails do > > > not get filtered. That is, instead of getting filed into the Cyrus-IMAP > > > mailbox, occasional emails get past Sieve and end up in my INBOX. Here is > > > one recent email that got past it: > > > > On second thought, I think I should include the full headers. One of the > > unfiltered emails' headers follow below. One thing different between the > > unfiltered emails and other emails on the list is the presence of a > > Received line prefixed by a ">" coming from the sauter-bc.com domain. > > Could this be messing up Sieve? > > Good catch (I've noticed the same problem, but never spent any time > tracking it down). I'm almost certain that this is what it is causing > the problem, ie, lmtpd/sieve choke on this header and never read the > rest. If I have the time, I'll double check the source. Since we had the same problems here I took a look at the source code. It is exactly what You guessed. It happens in the function fill_cache()/parseheader() in lmtpengine.c:
static int fill_cache(......) { /* let's fill that header cache */ for (;;) { char *name, *body; int cl, clinit; if (parseheader(fin, fout, &name, &body) < 0) { break; } [..] parseheader tries to split a mail header into its contents. It returns a values less than 0, in case the Header name doesn't start with an Letter (it checks with isalpha) > > Does that prefix belong in the headers? > > No. I'm pretty certain that if you check RFC[2]822 that this is an > illegal header. Just like "From" without a colon is illegal. Yes, that is what I thought, but then I took a look at the RFCs. RFC2822 says the following about header-names: [..] 2.2. Header Fields Header fields are lines composed of a field name, followed by a colon (":"), followed by a field body, and terminated by CRLF. A field name MUST be composed of printable US-ASCII characters (i.e., characters that have values between 33 and 126, inclusive), except ^^^^^^^^^^^^^^^^^^ colon. A field body may be composed of any US-ASCII characters, [..] It should be easy to fix lmtpengine.c to match this specification. I'll give it a try. -- Ralf Haferkamp SuSE GmbH - The Linux Experts - Deutschherrnstrasse 15-19 http://www.suse.com D-90429 Nuernberg, Germany Tel: +49-911-74053-0