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:
@@ -5,6 +5,17 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Queue ids no longer repeat**: Postfix makes long, non-repeating queue ids
|
||||
(`enable_long_queue_ids=yes`). A short id - the microsecond of arrival and
|
||||
the queue file's inode - came round once the inode did, and a later message
|
||||
could then rewrite an older row of the Outbound log with the same id and
|
||||
recipient, put its lines on that row's page, or reach the Inbound log's
|
||||
row of an earlier message. New ids read like `3Pt2mN2VXxznjll`; mail
|
||||
already in the queue keeps its short id; Outbound › Queue's Queue ID
|
||||
column is wider.
|
||||
|
||||
## [2.10.0] - 2026-10-16
|
||||
|
||||
Inbound › Log says what became of accepted mail: the upstream's answer,
|
||||
|
||||
Reference in New Issue
Block a user