Daniel Hopkirk - RandomInsanity:
> Thanks Wietse,
> 
> I'm still a little confused here. Based on the logs (and what I expect) the
> server 202.137.240.16 which is the destination server for this mail has
> rejected the recipient with a permanent error.

The "user unknown" is logged AFTER the SMTP server has already
greylisted the remote SMTP client. Postfix may be smart, bit it
cannot predict the future. I am still working on that part.

This is the order in which events are logged to the maillog file:

First, the address verify daemon injects an address verification
probe message into the mail queue.

Feb 17 14:54:24 scanner-nz-01 postfix/cleanup[58630]: 13761BC51:
    message-id=<20150217015424.13761b...@scanner-nz-01.nownz.co.nz>

Feb 17 14:54:24 scanner-nz-01 postfix/qmgr[55254]: 13761BC51: from=<
    double-bou...@scanner-nz-01.nownz.co.nz>, size=264, nrcpt=1
    (queue active)

The Postfix SMTP server is supposed to wait up to 9 seconds for the
address verification probe to complete. In the absence of a result
(more on that later), the Postfix SMTP server continues with other
restrictions and greylists the recipient.

Feb 17 14:54:24 scanner-nz-01 postfix/smtpd[58620]: NOQUEUE: reject:
    RCPT from unknown[65.55.34.24]: 450 4.7.1
    <nosuchem...@randominsanity.net.nz>: Recipient address rejected:
    Greylisted for 5 minutes; from=<hopper...@hotmail.com>
    to=<nosuchem...@randominsanity.net.nz> proto=ESMTP
    helo=<COL004-OMC1S14.hotmail.com>

Then, the Postfix SMTP CLIENT reports that the downstream server
rejects the recipient. But this news comes too late. The SMTP
server has already greylisted the remote SMTP client.

Feb 17 14:54:24 scanner-nz-01 postfix/smtp[58631]: 13761BC51:
    to=<nosuchem...@randominsanity.net.nz>,
    relay=202.137.240.16[202.137.240.16]:25, delay=0.06,
    delays=0/0/0.01/0.05, dsn=5.1.1, status=undeliverable (host
    202.137.240.16[202.137.240.16] said: 550 5.1.1
    <nosuchem...@randominsanity.net.nz>: Recipient address rejected:
    User unknown in local recipient table (in reply to RCPT TO
    command))

Now, all this happens within the same second, and that suggests
that there is a problem.  This a piece of code from the SMTP server
that collects the address verify result:

    for (count = 0; /* see below */ ; /* see below */ ) {
        verify_status = verify_clnt_query(addr, &rcpt_status, why);
        if (verify_status != VRFY_STAT_OK || rcpt_status != DEL_RCPT_STAT_TODO)
            break;
        if (++count >= var_verify_poll_count)
            break;
        sleep(var_verify_poll_delay);
    }

I see no address_verify_poll_count or address_verify_poll_delay
settings in your "postconf -n" output.  Any chance you have
these settings in master.cf?

The verify_clnt_query() function does not return until it has a
received  a reply from the verify daemon. This would mean that the
verify daemon immediately replied with VRFY_STAT_BAD, but then both
the smtpd(8) and verify(8) daemons should have logged a warning.

The only way that I can explain the above logging is that something
is causing the sleep() call to return immediately. As if the wakeup 
time is translated into absolute time, and the hardware clock is
several seconds ahead of the OS's idea of time.

Does this Postfix instance run inside a VM? They do weird things 
with clocks.

        Wietse

Reply via email to