I expanded last week's pseudocode, and started implementation. The
code almost writes itself, which is a sign of a good program
structure.
> postdrop --> \ / --> postdrop
> postlog --> systemd socket --> postdmux --> postlog
> postqueue --> / \ --> postqueue
(A single systemd socket will handle all Postfix client program use
cases for multiple Postfix instances.)
Current statistics, comments not included:
~250 lines: postdmux server program. Launched by systemd; and
launches a right-hand-side postdrop, postlog, or
postqueue command in a controlled environment.
~110 lines: postdmux client library: Called by the left-hand side
postdrop, postlog, or postqueue, which are called by
an untrusted user.
And that is practically the entire new code footprint.
There will be only a few new lines of code in the postdrop, postlog,
and postqueue commands, and in the pickup daemon.
The plan is for the postdmux server program to retrieve the per-UID
request concurrency from the anvil(8) service, and to enforce a
per-UID request concurrency limit.
For technical correctness, I changed the name to 'postdmux', because
program is a demultiplexer. Also, 'postmux' was already used
elsewhere.
In media applications, the term 'postmux' (post multiplexer) is
used for the processing that happens immediately after merging
multiple media streams into one).
Wietse
_______________________________________________
Postfix-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]