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]

Reply via email to