From: Wietse Venema on
adrian ilarion ciobanu:
> >
> > Should ODMR support be in the primary MTA queue? Or should mail
> > for ODMR destinations be batched up onto disk out of the MTA's
> > queue, and served by dedicated servers as in:
> >
> > http://www.plonk.de/sw/odmr/
> odmr is mail relaying. if one chooses this solution then one probably
> wants to do the same thing for any type of relaying.

Nope, ETRN/ATRN mail stays queued on the server until the end-site
retrieves it. By definition, the mail queue contains significant
amounts of mail on a routine basis. This drags down the over-all
MTA performance.

This is unlike the front-end/back-end MTA setup where mail flows
immediately, or the primaryMX/secondaryMX setup that is meant for
the rare case that the primaryMX is unavailable. Here, the mail
queue does not contain significant amounts of mail on a routine
basis.

> When i was thinking "exporting more functionality via a library" - `that can be made in a very spartan way, e.g.
>
> smtpd.c:
> EXT_SMTPD_LIB int etrn_cmd(...)
>
> user_compiletime_config.h:
> #define EXPORT_SMTPD_LIB 1
>
> build_exports.h
> #ifndef EXPORT_SMTPD_LIB
> #define EXT_SMTPD_LIB static
> #endif

Sorry, when a piece of code can be called from multiple programs,
that requires a precise library API definition (a contract) that
specifies the interfaces of all the exposed functions including
their data structures, and relevant pre and post conditions. Such
a document does not exist, therefore this approach is off the table.

Instead, smtpd(8) should be changed such that it calls into a
library module that handles all the communication with atrnd(8)
where the bulk of the new code will be implemented.

This approach has proven itself over 10 years of Postfix development.
Many features (flush, scache, anvil, verify, etc.) are implemented
not by modifying existing code. Instead, they are implemented by
implementing a new server (here, atrnd(8)) and an client library
(here, atrn_client) with a well-defined interface. Via this client
library, existing Postfix code (here smtpd(8)) talks to the new
service.

I have already mentioned these ground rules before.

I am not opposed to implementing ATRN, but there has been zero
evidence that doing so would actually be worth the maintenance cost
(let alone the diminshingly small subset of sites that would require
multiple domains on a single SASL account).

Wietse