Local Mail Transport Protocol is substantially similar to SMTP and often implemented on SMTP servers. Kol_Panic has a preliminary LMTP implementation for psyced that runs but should be hardened somewhat before release. While the primary advantage of LMTP is that the server does not have to implement a queue, supporting LMTP on psyced is differently motivated.
One of the faults of SMTP concerns its handling of multiple recipients. Once recipients are tentatively accepted, an SMTP server must either accept the message for all of the recipients or none of them. Since verifying all criteria for delivery is impossible before the DATA is received, this leads to backscatter. Since too much backscatter can adversely affect deliverability for our own mail, some may prefer to let the front-end mail server handle a global policy for messages to psyc recipients coming from the public network. This is on the LMTP ToDo (below).
Alternatively, separate LMTP and SMTP implementations provide an intuitive way for administrators to differentiate messages with internal and external origins for the purpose of providing policy administration that is appropriate by source. Perversely enough, a psyced deployment behind a full mail server is more likely to use LMTP for messages entering the network though the Internet facing mail server and use SMTP to speak with those local applications that do not yet offer psyc support.
Deployment
The basics for deploying psyced LMTP behind Postix can be found in the Non-Postfix mailbox store: separate domains, non-UNIX accounts section of the Postfix Virtual README[1].
The psyced on asciiking.com has local accounts that will be sharing address space with chat users. In this case, local users are aliased from usak@asciiking.com, for one example, to usak@localhost. Mail for the localhost is delivered to system accounts while addresses that are not aliased are delivered by the virtual transport specified in the postfix configuration, LMTP.
ToDo
- [_] Provide MIME handling.
- [_] Implement per recipient status after DATA.
- [_] Have messages with multiple recipients implement a multicast context for delivery.
- [_] Find out if psyced really has a queue for SMTP.