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