postfix-config: no whitespace in the port-25 service's -o values
Seen in the System log of the test server (2026-10-10): on every
connection to port 25
postfix/smtpd: fatal: unexpected command-line argument:
texthash:/data/postfix/dmarc_recipients,reject_unauth_destination,...
postfix/master: warning: .../smtpd: bad command startup -- throttling
With DMARC_REPORTS_ENABLE=true the script wrote
-o smtpd_recipient_restrictions=check_recipient_access texthash:...,...
into master.cf. Master splits a service line on whitespace, so smtpd got
the option cut at the space plus a stray argument and died at start:
port 25 greeted nobody - no inbound relay, no DMARC reports. postconf -P
smtp/inet/smtpd_recipient_restrictions showed the cut value,
"check_recipient_access". The server's logs have it under the previous
image too (2026-10-09), so it is not from the redesign; postfix check
does not notice, and the e2e check compared the text of master.cf with
an expectation that had the space in it.
- The restriction list is written with commas only (Postfix splits it
on commas as well as whitespace).
- master_cf_set_smtp_inet_o stops the container on a value with
whitespace instead of writing it.
- e2e: for every option it checks, the port-25 case also asks
postconf -P and requires Postfix to read the same value.
Not fixed here: Postfix's start-time warnings "not owned by root" for
the queue directory and its pid/ - the entrypoint's recursive chown
again; harmless, logged at every start.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -216,6 +216,17 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
||||
showq service: Permission denied"), the Queue card said "Could not be read"
|
||||
and the queue page had no listing. Present since the persistent queue of
|
||||
1.3.0; mail flow was not affected. The e2e suite opens the queue page now.
|
||||
- **Port 25 answers again with DMARC report ingest on.** The generated
|
||||
`master.cf` gave the port-25 service `-o smtpd_recipient_restrictions=
|
||||
check_recipient_access texthash:…,…` with a space in the value; Postfix
|
||||
cuts a service line at whitespace, so `smtpd` was started with a stray
|
||||
argument and died with "fatal: unexpected command-line argument" on every
|
||||
connection - no inbound relay and no DMARC reports were accepted while
|
||||
`DMARC_REPORTS_ENABLE=true`, although `postfix check` and the suite were
|
||||
silent. The list is written with commas only, the generator refuses a
|
||||
value with whitespace, and the e2e check asks Postfix what it reads.
|
||||
Present since DMARC ingest was fitted into the 1.9.1 fix of the same
|
||||
stanza.
|
||||
- Overview's Processes card counts the programs that are meant to stay up
|
||||
("6 of 6 running"); the idle one-shot `postfix-reload` was counted as
|
||||
running. The Milter sockets card no longer clips its second line with three
|
||||
|
||||
Reference in New Issue
Block a user