[exim] Does cutthrough delivery detect invalid email address…

Top Page
Delete this message
Reply to this message
Author: Mike Brudenell
Date:  
To: Exim Users
Subject: [exim] Does cutthrough delivery detect invalid email addresses?
Dear all,

I'm going crackers here: I though I understood cutthrough_delivery but am
now baffled why it's not detecting an invalid recipient address.

Here are the relevant extracts from my Exim 4.82 configuration file:

hostlist mail_server_hosts = pippin.york.ac.uk


then within the acl_check_rcpt ACL I have:


  accept  hosts   = +relay_from_hosts
          hosts   = +mail_server_hosts
          control = cutthrough_delivery


  accept  hosts   = +relay_from_hosts
          control = submission/sender_retain
          control = dkim_disable_verify



Originally there was just the second *accept*, but I've added the earlier
*accept* to detect mail arriving from hosts listed in *mail_server_hosts*
which I know to be running MTAs and want to do *cutthrough_delivery* for.
(I won't go into why: there is reason for it.)

I test this by invoking Exim on my test gateway with

exim -v -d+all -bd


and then use Telnet to connect to port 25 on the server and hand-crank an
SMTP session. For example:

220 tmailgw.york.ac.uk ESMTP Exim 4.82 Ubuntu Mon, 29 Feb 2016 17:57:38
+0000
helo pippin.york.ac.uk
250 tmailgw.york.ac.uk Hello pippin.york.ac.uk [144.32.226.226]
mail from:<pmb1@???>
250 OK
rcpt to:<lkasjdklsajdklsjlksdjklsdjlkasjklsajdlsdjksjkdsjkdjjjjj@???>
250 Accepted


That's an *invalid* recipient address, yet I'm getting a *250 Accepted*
response back form Exim on my test gateway.

In the debugging output form the server I can see:

1. The first *accept* entry is reached and its two *hosts* conditions
satisfied;
2. Exim selects and sets up *cutthrough_delivery* and opens a connection
to Google Mail;
3. Exim conducts a verification of the address and gets a *550* response
back from Google saying its invalid, and closes down the connection;
4. But Exim then logs that it's sending back to me (the client) a *250
Accepted* with no further explanation in the debugging output why it's
done this.

The cutthrough is definitely operating… When I test against a recipient
address hosted on a mail server that's slower to accept/respond to the
address verification I can see my Telnet session pausing for the same
period as the Exim server's log are waiting. As soon as Exim gets a
response and leaps into action saying it has sent a response to my Telnet
session that does indeed receive and show it.

So the cutthrough is operating, but not passing the *550* response back
through: instead changing it to a *250*.

Yet the *Exim Specification* says (with underlining emphasis mine):

*control = cutthrough_delivery*

Should the ultimate destination system positively accept *or reject* the
mail, *a corresponding indication is given to the source system* and
nothing is queued. If there is a temporary error the item is queued for
later delivery in the usual fashion.


Have I found a bug?
Or have I misunderstood what's needed to set up and use cutthrough delivery?

Cheers,
Mike B-)

--
Systems Administrator & Change Manager
IT Services, University of York, Heslington, York YO10 5DD, UK
Tel: +44-(0)1904-323811

Web: www.york.ac.uk/it-services
Disclaimer: www.york.ac.uk/docs/disclaimer/email.htm