MAS-WP-0004: Postfix integration profile, corpus probe in pytest, Exim notes

Profile in integrations/postfix (install.sh + README), now used by the
live deployment. Probe runs every conformance-corpus local-part and the
relay negatives against it; tests/test_postfix_profile.py runs it where
Docker is available.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 5787@bnt-lap001
Assistant-Session: 5db26b82-138b-40cc-9856-4d5eb0f752fd
This commit is contained in:
tegwick 2026-10-19 09:25:03 +02:00
parent 082d4c39eb
commit d766d61e7f
12 changed files with 1029 additions and 98 deletions

View file

@ -4,11 +4,11 @@ type: workplan
title: "MAS Postfix integration profile"
domain: communication
repo: mail-address-semantics
status: proposed
status: finished
owner: claude
topic_slug: coulomb-social
created: "2026-10-18"
updated: "2026-10-18"
updated: "2026-10-19"
origin: residual
origin_ref: MAS-WP-0003
state_hub_workstream_id: "bf5eebc0-3b97-5c78-9c3a-58834258744e"
@ -27,7 +27,7 @@ integration profile.
```task
id: MAS-WP-0004-T01
status: todo
status: done
priority: high
state_hub_task_id: "e1d1c1fb-b34e-5ea3-98e5-10556b80a83b"
```
@ -50,7 +50,7 @@ Explain each setting and say why the stock config fails.
```task
id: MAS-WP-0004-T02
status: todo
status: done
priority: high
state_hub_task_id: "dcdf491a-3be8-566e-8111-c496a7970b4b"
```
@ -64,7 +64,7 @@ suite where Docker is available.
```task
id: MAS-WP-0004-T03
status: todo
status: done
priority: low
state_hub_task_id: "a3ddf4f1-6b21-5ee7-8dae-4926fcf4181e"
```
@ -72,3 +72,15 @@ 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.
## Outcome
- Profile: `integrations/postfix/install.sh` and `README.md`. The live
deployment (`deploy/railiance/entrypoint.sh`) now uses it.
- Probe: `probe.py --profile mas-profile --corpus`, run in pytest as
`tests/test_postfix_profile.py` where Docker is available. Every corpus
address arrives unchanged up to RFC 5321 quoting: Postfix adds quotes
around non-dot-atoms (`.bernd` becomes `".bernd"`), and those are still
invalid MAS. All relay negatives get 554.
- Exim: `integrations/exim/NOTES.md`. The stock ACL rejects `!`/`%` for
local domains. No profile is built, because there is no demand yet.