This is a transaction issue. But there is no mechanism within SMTP for a
two-phase commit. There is always some chance that between storing the
message and advising the client that the system could crash. For that
matter, after sending an acknowledgment to the client, there is some chance
that the packet could be lost. This effects receipt and relaying by James.
Internally, mail is queued between the handler and the spool manager, and
then within the spool manager for each transition between processors. Not
for each mailet.
What you want is a transaction, so that the process of your storing the
mailet in the database, and the message being removed from the spool appears
to be atomic. But there is no two-phase commit within the spooling
mechanism. If your mailet puts the message in a database, as LocalDelivery
can, then your mailet should set the state to GHOST, and the message will be
removed from the spool, so that the only copy will be the one you saved. As
I said, there is a small window between storing the message in the database,
and when it is cancelled from the spool. Very unlikely, but possible.
--- Noel
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>