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 [EMAIL PROTECTED]  Note: this address is only intended for
spam harvesters.  Writing to it will get you added to my black list.

-- 
## List details at http://www.exim.org/mailman/listinfo/exim-dev Exim details 
at http://www.exim.org/ ##

Reply via email to