mail-address-semantics/workplans/MAS-WP-0004-postfix-integration-profile.md
tegwick ab3346d187 MAS-WP-0005-T11: OpenDKIM+OpenDMARC milters; forged A-R stripped by header_checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 252470@bnt-lap001
Assistant-Session: ad628c8f-4be2-4979-94c9-76c7ed6f8241
2026-10-18 22:38:43 +02:00

2.2 KiB

id type title domain repo status owner topic_slug created updated origin origin_ref state_hub_workstream_id
MAS-WP-0004 workplan MAS Postfix integration profile communication mail-address-semantics proposed claude coulomb-social 2026-10-18 2026-10-18 residual MAS-WP-0003 bf5eebc0-3b97-5c78-9c3a-58834258744e

MAS Postfix integration profile

Decision-gate outcome of MAS-WP-0002 (founder, 2026-10-18). MAS-WP-0003 showed that a default Postfix silently drops every P2 (!) address, and that the correct relay configuration is not obvious (docs/experiment-review.md, operational findings). Turn the working setup in deploy/railiance/entrypoint.sh into a documented, tested integration profile.

Extract the profile

id: MAS-WP-0004-T01
status: todo
priority: high
state_hub_task_id: "e1d1c1fb-b34e-5ea3-98e5-10556b80a83b"

Write a standalone Postfix profile (main.cf/master.cf fragments plus the relay regexp) for a MAS receiving domain:

  • explicit @DOMAIN relay regexp, ending the restriction list in reject;
  • allow_untrusted_routing=yes, swap_bangpath=no and allow_percent_hack=no;
  • pipe to mas-gateway;
  • optional authenticated relay with a send cap;
  • null-sender discard;
  • sender authentication: OpenDKIM (verify) + OpenDMARC milters, annotate-only. Forged A-R headers for the host's authserv-id are stripped with a Postfix header_checks IGNORE rule, because OpenDKIM's RemoveARFrom did not work in testing. The milters run in the foreground (MAS-WP-0005 T11; spec §14 item 10). Explain each setting and say why the stock config fails.

Probe the profile

id: MAS-WP-0004-T02
status: todo
priority: high
state_hub_task_id: "dcdf491a-3be8-566e-8111-c496a7970b4b"

Extend experiments/postfix-probe/ to run the profile against the full address corpus. Include the relay negatives (x@other, x!y@other, a@other@DOMAIN, a@DOMAIN@other) and P2 forms. Make it part of the test suite where Docker is available.

Exim notes

id: MAS-WP-0004-T03
status: todo
priority: low
state_hub_task_id: "a3ddf4f1-6b21-5ee7-8dae-4926fcf4181e"

Check whether Exim has equivalent pitfalls for !/% local-parts and record the needed settings. Build an Exim profile only if there is demand.