[exim-dev] RFC: implementing 551-redirection (client side)

Top Page
Delete this message
Reply to this message
Author: Robert Millan
Date:  
To: exim-dev
Subject: [exim-dev] RFC: implementing 551-redirection (client side)

Hi!

I've been looking at how could 551 redirection be implemented in the client side.
I.e.: when server responds with 551, exim would parse the error string, obtain
an address, and then recurse/iterate to send the message to final recipient.

Basicaly I can think of two ways to implement it. I'm not sure which one is
best (please enlighten me):

- In src/transports/smtp.c, hook a check for "551" before the ones for "5xx"
and "4xx" in the loop inside sync_responses().

Problem: Addresses are processed in batch, and at this point we only have a
buffer with SMTP responses (correct me if I'm wrong). Therefore we can't get
back to the sending routine without calling the smtp sender outselves.
Perhaps we should hook our check at a lower level, closer to the smtp routine
instead?

- In src/transports/smtp.c, process "551" much as if it were a "4xx".

Problem: We don't really want to delay the sending, but this will postpone it
untill the next queue run. Also, we would have to modify the spool file in
order to replace the recipient, which I suppose is a really ugly thing.

Please excuse me if I said something silly. I have no expertise with Exim
internals (what I said above is just my attempt at guessing at how it works).

--
Robert Millan

My spam trap is honeypot@???. Note: this address is only intended for
spam harvesters. Writing to it will get you added to my black list.