Mail Gateway DirectDeliver
The SPG/VSP is capable of doing queue-less, inline delivery in order to achieve pure fault-tolerant SMTP transaction. This feature will allow the appliance to fail (eg. hardware failure) at any moment in time during operation without the risk of loosing any data. The implementation will not confirm message acceptance (220 OK) until the message is accepted by the receiving server on the backend (outgoing mail transport).
The DirectDeliver() function is one part of achieving a fault-tolerant, share-nothing cluster.
Before implementing this feature, take some time to evaluate the reason, pros/cons and requirements, such as "where is your single point of failure today?" or "do the VSP and mail server share the same hardware?".
- Pro: The SPG/VSP will not house any sensitive data in it's outgoing queue in case of a failure
- Con: You will not be able to queue messages while your groupware/mail server is restarting or being updated
The feature has a few defined limitations, in order to prevent odd behaviours such as message duplication and unknown message delivery statuses on multiple recipients. These limitations usually cause an runtime exception, and include:
- Delivered has to be made to a single backend server (it cannot operate in lookup-mx/outbound mode)
- Per-recipient modification to a single message cannot be done (eg. SetHeader("X-Recipient", $recipient)
- If one recipient fails during DirectDeliver (because of the backend server), the message will not be delivered (simply solved by using recipient lookup in the recipient flow)
In order to use DirectDeliver, simply replace the HSL function Deliver with DirectDeliver in the end (and other appropriate places) of the content flow.