mail-address-semantics/workplans/MAS-WP-0003-provider-live-test.md
tegwick 88465e7eae MAS-WP-0003-T01: record DNS for mas.coulomb.social; port 25 pending go
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
2026-10-08 01:08:05 +02:00

106 lines
3.2 KiB
Markdown

---
id: MAS-WP-0003
type: workplan
title: "MAS live provider test on a real subdomain"
domain: communication
repo: mail-address-semantics
status: active
owner: claude
topic_slug: coulomb-social
created: "2026-10-08"
updated: "2026-10-08"
state_hub_workstream_id: "8e9069c6-5c32-5c56-aded-49c8fdc2b66b"
---
# MAS live provider test on a real subdomain
Follow-up to MAS-WP-0002. The MTA half of the review question *which
characters or address forms were rewritten or rejected?* was answered
against a real Postfix (`experiments/postfix-probe/`,
`docs/experiment-review.md`). This workplan answers the provider half. It
has to be done before the MAS-WP-0002 decision gate.
coulomb.social mail is hosted by IONOS, so the test needs its own
subdomain (for example `mas.coulomb.social`) with its own MX.
## Choose and provision the test subdomain
```task
id: MAS-WP-0003-T01
status: wait
priority: high
state_hub_task_id: "48926a68-e5bb-5d7c-910f-12b38560b48f"
```
Needs the operator. Pick the subdomain. Add an MX (and A) record at IONOS
pointing to railiance01 (92.205.62.239). Allow inbound TCP 25 on
railiance01. Record the choice as a decision.
- 2026-10-08: DNS done. `mas.coulomb.social` has MX 10 to itself and A
92.205.62.239. Inbound TCP 25 is still closed (connection timed out from
the workstation; nothing listens on 25 and ufw allows only SSH and 2224).
The port-25 exposure is a live production change and needs the founder's
go.
## Deploy Postfix + gateway + ticket service + statute
```task
id: MAS-WP-0003-T02
status: todo
priority: high
state_hub_task_id: "17e4ee15-faac-5103-b62a-65a890d2cd56"
```
Deploy the probe configuration on railiance01, using `local-domain-safe`
settings, TLS and the usual relay restrictions. Serve the statute (with
the namespace set to the subdomain) at `https://<sub>/.well-known/mas`
through Traefik. Verify the deployment with `mas discover <sub>`.
Outbound replies need a relay with SPF/DKIM for the subdomain; until that
exists, keep replies in the outbox only.
## Provider send matrix
```task
id: MAS-WP-0003-T03
status: todo
priority: high
state_hub_task_id: "b2af3eb2-0d4b-5cea-b033-99d47c938298"
```
Needs the operator to send from their accounts. Send from Gmail (web and
mobile), Outlook.com and one corporate gateway to:
- `ticket!callback@`
- `ticket=ID@`
- `ticket=ID+comments@`
- `ticket=RE=2026-4711@`
Then reply to a service message sent from `ticket=ID@`. For each
combination, record whether the provider's compose form accepts the
address and what envelope recipient arrives.
## Forwarding and list paths
```task
id: MAS-WP-0003-T04
status: todo
priority: medium
state_hub_task_id: "97c88b4f-14c3-5f6c-8f31-6b9fc3afd236"
```
Send via one forwarding service (SRS) and one mailing list (VERP). Check
whether `=` collides with SRS0/VERP encoding, and whether facets survive
or are stripped.
## Close the review
```task
id: MAS-WP-0003-T05
status: todo
priority: high
state_hub_task_id: "63e86851-9c7d-5ce8-977f-5d09268d9dcc"
```
Fold the results into `docs/experiment-review.md`. Turn the spec gaps
(quoted equivalence, resource-type case, type-intake semantics for
`ticket!MODE`) into spec change proposals. Then take the MAS-WP-0002
decision gate.