Test MAS addresses against real Postfix; close MAS-WP-0002, add MAS-WP-0003
- experiments/postfix-probe: Postfix 3.7 -> pipe -> mas-gateway -> ticket service in Docker; 14 address forms x 5 configurations. 13/14 arrive byte-identical everywhere; quoted "ticket=PR42" is unquoted in transit. Legacy bang/percent rewrites never fire for MAS addresses. - docs/experiment-review.md: Email infrastructure section with results - MAS-WP-0003: provider-side live test on a real subdomain (needs DNS/MX) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Assistant: claude-code Assistant-Model: opus Assistant-Process: 623586@bnt-lap001 Assistant-Session: 10b30928-5b3b-4c11-9934-5ecca07367d8
This commit is contained in:
parent
8d3878d9c8
commit
e19d557a4c
13 changed files with 1179 additions and 20 deletions
159
experiments/postfix-probe/results/defaults.json
Normal file
159
experiments/postfix-probe/results/defaults.json
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
{
|
||||
"profile": "defaults",
|
||||
"results": [
|
||||
{
|
||||
"label": "P2 intake",
|
||||
"sent": "ticket!callback@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket!callback@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "function",
|
||||
"app_status": 201,
|
||||
"app": "created"
|
||||
},
|
||||
{
|
||||
"label": "resource",
|
||||
"sent": "ticket=GS-2H6T5NBH6K@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=GS-2H6T5NBH6K@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 200,
|
||||
"app": "correlated"
|
||||
},
|
||||
{
|
||||
"label": "resource + facet",
|
||||
"sent": "ticket=GS-2H6T5NBH6K+comments@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=GS-2H6T5NBH6K+comments@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 200,
|
||||
"app": "correlated"
|
||||
},
|
||||
{
|
||||
"label": "extra '=' in id",
|
||||
"sent": "ticket==X1@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket==X1@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 202,
|
||||
"app": "unknown-resource"
|
||||
},
|
||||
{
|
||||
"label": "registry function",
|
||||
"sent": "support@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "support@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "function",
|
||||
"app_status": 404,
|
||||
"app": "not-handled"
|
||||
},
|
||||
{
|
||||
"label": "person-style",
|
||||
"sent": "bernd.worsch@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "bernd.worsch@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "opaque",
|
||||
"app_status": 404,
|
||||
"app": "not-handled"
|
||||
},
|
||||
{
|
||||
"label": "upper-case local-part",
|
||||
"sent": "Ticket=GS-2H6T5NBH6K@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "Ticket=GS-2H6T5NBH6K@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "opaque",
|
||||
"app_status": 404,
|
||||
"app": "not-handled"
|
||||
},
|
||||
{
|
||||
"label": "percent data",
|
||||
"sent": "ticket=PR%2B42@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=PR%2B42@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 202,
|
||||
"app": "unknown-resource"
|
||||
},
|
||||
{
|
||||
"label": "percent hack form",
|
||||
"sent": "ticket%other.example@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket%other.example@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "opaque",
|
||||
"app_status": 404,
|
||||
"app": "not-handled"
|
||||
},
|
||||
{
|
||||
"label": "bang in resource",
|
||||
"sent": "ticket=GS-2H6T5NBH6K!web@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=GS-2H6T5NBH6K!web@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 200,
|
||||
"app": "correlated"
|
||||
},
|
||||
{
|
||||
"label": "facet + interaction",
|
||||
"sent": "ticket=GS-2H6T5NBH6K+comments!callback@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=GS-2H6T5NBH6K+comments!callback@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 200,
|
||||
"app": "correlated"
|
||||
},
|
||||
{
|
||||
"label": "reserved $",
|
||||
"sent": "ticket=PR42$4.99@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=PR42$4.99@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": false,
|
||||
"kind": null,
|
||||
"app_status": 422,
|
||||
"app": "not-mas"
|
||||
},
|
||||
{
|
||||
"label": "quoted local-part",
|
||||
"sent": "\"ticket=PR42\"@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=PR42@great-service.example",
|
||||
"unchanged": false,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 202,
|
||||
"app": "unknown-resource"
|
||||
},
|
||||
{
|
||||
"label": "unknown resource",
|
||||
"sent": "ticket=DOES-NOT-EXIST@great-service.example",
|
||||
"smtp": "accepted",
|
||||
"arrived_as": "ticket=DOES-NOT-EXIST@great-service.example",
|
||||
"unchanged": true,
|
||||
"mas_valid": true,
|
||||
"kind": "resource",
|
||||
"app_status": 202,
|
||||
"app": "unknown-resource"
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue