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

Reply via email to