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

@ -7,6 +7,24 @@ exec env PYTHONPATH=/mas python3 -m mas_gateway.main "$@"
SH
chmod +x /usr/local/bin/mas-gateway
# mas-profile: the shipped integration profile (integrations/postfix), as
# deployed live. Relaying is loopback-only, so the probe client is an ordinary
# outside sender. The other profiles below are the MAS-WP-0002 experiments.
if [ "$PROFILE" = "mas-profile" ]; then
postconf -e "maillog_file=/dev/stdout" "compatibility_level=3.6"
sh /mas/integrations/postfix/install.sh --domain great-service.example \
--statute /mas/examples/statute/great-service.example/.well-known/mas \
--app-url http://127.0.0.1:8024/mas-events --auth
opendkim -f -x /etc/opendkim.conf &
opendmarc -f -c /etc/opendmarc.conf &
mkdir -p /var/lib/tickets && chown mas /var/lib/tickets
su -s /bin/sh mas -c "PYTHONPATH=/mas python3 /mas/examples/ticket_service/ticket_service.py \
--db /var/lib/tickets/t.sqlite3 --listen 0.0.0.0:8025" &
python3 /mas/experiments/postfix-probe/capture.py http://127.0.0.1:8025/mas-events &
echo "PROFILE=mas-profile"
exec postfix start-fg
fi
postconf -e "maillog_file=/dev/stdout" "myhostname=mx.probe.test" "mydestination=" \
"relay_domains=great-service.example" "transport_maps=inline:{great-service.example=mas:}" \
"mynetworks=0.0.0.0/0" "smtpd_relay_restrictions=permit_mynetworks,reject" \