fetchmail-friends
[Top] [All Lists]

Re: [fetchmail]Help with warning: Illegal address syntax

2004-07-23 09:41:36
Rob,

Thanks for your help so far. I can confirm that I am running a vanilla 
fetchmail v6.2.5 which I built from source. I have included a config dump at 
the end of the message.

Clearly the return-path is broken, it looks like the Received: header has been 
pasted on the end. I would guess a memory corruption somewhere as the closing 
">" is missing which would imply something is being overwritten by something 
else.

That's very broken.  Something strange is going on at your ISP.  Either
they're accepting malformed email or they're generating it.  No sane mail
server will accept that header.
I agree, the question now remains, is it my ISP's mail server which is broken 
or is it fetchmail in its fetching of the mail by POP3.

One thought is that both emails which I have a problem with contain long 
return addresses.

fetchmail: SMTP> RCPT
TO:<c615952fff0eb8febd27fbc7b1dd4792bdeb77a3023419e0f4063f69cReceived:
(qmail
22262 invoked from network); 23 Jul 2004 04:01:03 -0000>

<---SNIP--->

That however I would expect to be from your .fetchmailrc, which from what
you posted should be <gary(_at_)localhost>

Well normally yes it would be, but remember here that the first MAIL FROM 
failed and then fetchmail starts a new submission. From the log file we read:

fetchmail: forwarding to localhost
fetchmail: SMTP> MAIL 
FROM:<c615952fff0eb8febd27fbc7b1dd4792bdeb77a3023419e0f4063f69cReceived: 
(qmail 22262 invoked from network); 23 Jul 2004 04:01:03 
-0000(_at_)mail(_dot_)rdslink(_dot_)ro> BODY=8BITMIME SIZE=8568
fetchmail: SMTP< 501 Bad address syntax
fetchmail: SMTP error: 501 Bad address syntax
fetchmail: SMTP< 220 exodus.aca-vulcan.ro ESMTP Postfix

This is where the MAIL FROM fails as the return address is broken... But then 
look what happens:


fetchmail: SMTP> HELO localhost
fetchmail: SMTP< 250 exodus.aca-vulcan.ro
fetchmail: SMTP> MAIL FROM:<FETCHMAIL-DAEMON(_at_)exodus>
fetchmail: SMTP< 250 Ok

Fetchmail attempts to start a new message this time from the FETCHMAIL-DAEMON. 
Here the MAIL FROM is OK, but the RCPT TO is bad as it uses the same broken 
return path:

fetchmail: SMTP> RCPT 
TO:<c615952fff0eb8febd27fbc7b1dd4792bdeb77a3023419e0f4063f69cReceived: (qmail 
22262 invoked from network); 23 Jul 2004 04:01:03 -0000>
fetchmail: SMTP< 501 Bad address syntax


So the RCPT TO which fails is not the normal one which we would expect to be 
<gary(_at_)localhost>, but a second one on a new message.

I haven't studied the internals of fetchmail but it looks like it is trying to 
create a non delivery report for the sender from the FETCHMAIL-DAEMON.

However the email is still being deleted even though it was not delivered
or non-delivered. Is that behaviour correct?

The email failed at the address syntax - it'll never be accepted so there's
no reason to keep it.
IMHO, I don't actually agree. The mail message was on a POP3 server somewhere 
which means it has gone through some sort of processing and has arrived. The 
local delivery failed and the NDN failed. In my opinion this message should 
be saved to disk and a notification sent to the postmaster. A few years back 
I worked on several email gateways including X.400 to SMTP and our golden 
rule was that no message should ever be lost. Worse case it should be written 
to disk for later examination. Just my opinion.

I will email my ISP and see if they have upgraded their mail server recently 
and see if this is the problem.

I will also add the KEEP option to my fetchmailrc so that I can catch these 
emails on the POP3 server.

Thanks for you help so far...

Gary
-- 
Gary Sims (gary(_at_)garysims(_dot_)co(_dot_)uk)
Vulcan, Brasov, Romania

TRUE=1; FALSE=0

os_type = 'linux'
feature_options = ('pop3','imap','etrn','odmr',)
# Start of configuration initializer
fetchmailrc = {
    'poll_interval':0,
    "logfile":None,
    "idfile":"/root/.fetchids",
    "postmaster":"postmaster",
    'bouncemail':TRUE,
    'spambounce':FALSE,
    "properties":"",
    'invisible':FALSE,
    'showdots':TRUE,
    'syslog':FALSE,
    # List of server entries begins here
    'servers': [
        # Entry for site `mail.rdslink.ro' begins:
        {
            "pollname":"mail.rdslink.ro",
            'active':TRUE,
            "via":None,
            "protocol":"POP3",
            'port':0,
            'timeout':300,
            'interval':0,
            "envelope":"Received",
            'envskip':0,
            "qvirtual":None,
            "auth":"any",
            'dns':TRUE,
            'uidl':FALSE,
            "aka":[],
            "localdomains":[],
            "interface":None,
            "monitor":None,
            "plugin":None,
            "plugout":None,
            "principal":None,
            'tracepolls':FALSE,
            'users': [
                {
                    "remote":"gary.sims",
                    "password":"xxxx",
                    'localnames':["gary"],
                    'fetchall':FALSE,
                    'keep':FALSE,
                    'flush':FALSE,
                    'rewrite':TRUE,
                    'stripcr':FALSE,
                    'forcecr':FALSE,
                    'pass8bits':FALSE,
                    'dropstatus':FALSE,
                    'dropdelivered':FALSE,
                    'mimedecode':FALSE,
                    'idle':FALSE,
                    "mda":None,
                    "bsmtp":None,
                    'lmtp':FALSE,
                    "preconnect":None,
                    "postconnect":None,
                    'limit':0,
                    'warnings':3600,
                    'fetchlimit':0,
                    'fetchsizelimit':100,
                    'fastuidl':10,
                    'batchlimit':0,
                    'expunge':0,
                    "properties":None,
                    "smtphunt":["localhost"],
                    "fetchdomains":[],
                    "smtpaddress":None,
                    "smtpname":None,
                    'antispam':'',
                    "mailboxes":[],
                }
                ,           ]
        }
                ,           ]
        }
    ]
}
# End of initializer