postfix: long, non-repeating queue ids
The owner, 2026-10-16, of three ways to stop a reused queue id reaching an older row (found by the technical review of inbound-upstream-result, L6): "1" - enable_long_queue_ids=yes. A short id is the microsecond of arrival and the queue file's inode in hex (Postfix 3.10.13, src/global/mail_queue.h, MQID_SH_*) and repeats once the inode comes round; a later message with no send-log row of its own (port-25 mail, a bounce Postfix sends) could then rewrite an older Outbound log row of the same id and recipient, its page could show the later message's stored lines (security.md's known exposure, "enable_long_queue_ids ... ends it"), and the inbound journal's rows needed detaching. A long id adds the time in seconds and does not repeat (MQID_LG_*; proto/postconf.proto: existing queue files keep their names, postqueue -p gets a wider Queue ID column). Every pattern of the panel takes both shapes (queueLineRe's long branch, the [0-9A-Za-z]+ of the others, queueEntryRe) - checked one by one. Tests: e2e reads a long id on an outbound send-log row (testExpiredMessageIsClosed) and on an inbound journal row (testInboundUpstreamDown). go vet + go test (26 packages) and make e2e on the test server for this tree. Docs: security.md (the collision bullet closed for new mail, the upstream bullet), architecture § Log tailer, delivery-log-storage's note, the ForgetInboundQueueID comment; CHANGELOG [Unreleased] § Fixed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -440,6 +440,19 @@ postconf -e \
|
||||
# panel's, were exposed to it as well.
|
||||
postconf -e "disable_mime_output_conversion=yes"
|
||||
|
||||
# Long, non-repeating queue ids (owner, 2026-10-16). The panel finds a
|
||||
# message's rows, its stored lines and the inbound journal's upstream result
|
||||
# by the queue id of mail.log; a short id is the microsecond of arrival and
|
||||
# the queue file's inode in hex and repeats once the inode comes round, so a
|
||||
# later message could meet an earlier one's rows. A long id adds the time in
|
||||
# seconds and does not repeat. Postfix 3.10.13, src/global/mail_params.h:1010,
|
||||
# DEF_LONG_QUEUE_IDS 0; src/global/mail_queue.h, MQID_SH_* and MQID_LG_*;
|
||||
# proto/postconf.proto, enable_long_queue_ids: "Enable long, non-repeating,
|
||||
# queue IDs", existing queue files keep their names, postqueue -p gets a
|
||||
# wider Queue ID column. Every pattern of the panel takes both shapes
|
||||
# (internal/logtail, internal/postfix/queue.go).
|
||||
postconf -e "enable_long_queue_ids=yes"
|
||||
|
||||
# What Postfix tells a milter with MAIL FROM: its defaults plus the client's
|
||||
# address. The panel's milters judge every message by that address (an
|
||||
# application's client-address list) and record it (the inbound journal), and
|
||||
|
||||
Reference in New Issue
Block a user