> There already exists the option for delivering in BSMTP format, which is
> effectively a copy of what you would send down an SMTP connection.
Just being able to store the files in a separate queue directory would
short-curcuit some hoops, but I guess that's a question of
convenience.
> Inspiration strikes!
>
> The existing -MC option, which is normally only used internally by
> Exim, does more or less this. However, it needs to be told exactly which
> message to deliver. But "deliver a message to stdout/stdin" is *exactly*
> what you want, isn't it?
I think it is, yes. However, after succesfully TURNing, the entire
SMTP session needs to be renegotiated from start, which I don't think
-MC will do. So this either has to happen in the script that launches
the Exim delivery processes, or (as I'd prefer) there needs to be some
way to trigger the relevant code in Exim when doing -MC (for the first
time). My patch already does this, but it calls queue_run directly,
so a command-line option would probably have to be added to invoke
this functionality externally.
> (1) Either leave the messages on Exim's normal queue (if there are not
> too many of them), or arrange for them to be sent to a different
> instance of Exim, with a different spool directory. (That achieves your
> first object without modifying the code.)
I'd like the second alternative, since the enqueued messages then
would be guaranteed to contain only recipient addresses in the TURN
domain. However, since I can envisage scenarios with arbitrary many
TURN domains, I'd like to keep things more dynamic than having to
maintain a separate Exim instance seems to imply. Perhaps applying
the pipe transport with the use_bsmtp option to pipe to "exim -bs"
with an appropriate -DMYQUEUE option and a configuration file that
would set the queue dir from that would give the desired dynamic
behaviour?
> (2) Write a script that is run by TURN. The script can use -bp to scan
> the waiting messages and find one that is waiting for the connected host
> or domain.
>
> (3) The script then runs 'exim -MC <options>' for one waiting message.
> Exim should automatically pass the stdin/stdout to further processes to
> deliver any other messages that are waiting for the same host.
With a seperate queue directory, you could skip step 2 and just set
the -DMYQUEUE-macro, could you not?
Arne.