From 59e8af7ebf2bf11f402bdb8a63da39a83eb804a9 Mon Sep 17 00:00:00 2001 From: Mario Fetka Date: Mon, 27 Jul 2026 19:33:10 +0200 Subject: [PATCH] docs: record Postfix-aligned DSN relay test --- docs/postfix-smtp-comparison.md | 2 +- docs/test-evidence/0.7-r1.md | 34 +++++++++++++++++++++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/docs/postfix-smtp-comparison.md b/docs/postfix-smtp-comparison.md index 7cfd493..00af00a 100644 --- a/docs/postfix-smtp-comparison.md +++ b/docs/postfix-smtp-comparison.md @@ -18,7 +18,7 @@ documentation and were not reviewed a second time: | --- | --- | | SMTP-07, SMTP-08, SMTP-27 | `tls.md` and the matching sections in `test-evidence/0.7-r1.md` | | SMTP-11, SMTP-12, SMTP-13 | Matching sections in `test-evidence/0.7-r1.md` | -| SMTP-14 | Postfix DSN command generation and recipient-state handling were used for the implementation review; the Bongo live test is still open | +| SMTP-14 | `src/smtp/smtp_proto.c`: DSN parameters are xtext-encoded and emitted only with `SMTP_FEATURE_DSN`; `src/bounce/bounce_notify_util.c`: canonical `Original-Recipient` field. Bongo now applies the same peer-capability gate to direct and relayhost delivery, preserves enhanced status codes, and has passed live tests against both DSN-capable and non-DSN peers. | | SMTP-32, SMTP-33 | `smtp.md` and the matching sections in `test-evidence/0.7-r1.md` | ## SMTP server and submission diff --git a/docs/test-evidence/0.7-r1.md b/docs/test-evidence/0.7-r1.md index 763fbff..3d19fa7 100644 --- a/docs/test-evidence/0.7-r1.md +++ b/docs/test-evidence/0.7-r1.md @@ -2665,15 +2665,18 @@ Bongo receive contract at the stronger byte-for-byte Store boundary. Result: **PASS** -Commits `418005d7`, `5d3d230a`, and `1cc477f6` made the native SMTP -transport and libcurl relayhost transport use the same RFC 3461 formatter. -They preserve explicit `RET`, `ENVID`, `ORCPT`, and `NOTIFY` values, reject -unsafe xtext metadata, retain an upstream Enhanced Status Code, and emit the -canonical `Original-Recipient` delivery-status field. Unit coverage includes -omitted values, `RET=HDRS`, `RET=FULL`, `NOTIFY=NEVER`, all three positive -notification flags, xtext validation, and permanent/transient reply mapping. +Commits `418005d7`, `5d3d230a`, `1cc477f6`, and `da691adc` made the native +SMTP transport and libcurl relayhost transport use the same RFC 3461 +formatter. They preserve explicit `RET`, `ENVID`, `ORCPT`, and `NOTIFY` +values, reject unsafe xtext metadata, retain an upstream Enhanced Status +Code, and emit the canonical `Original-Recipient` delivery-status field. +They also suppress all four DSN transport parameters when the next hop does +not advertise `DSN`, while retaining the metadata needed for Bongo's local +success or failure report. Unit coverage includes omitted values, +`RET=HDRS`, `RET=FULL`, `NOTIFY=NEVER`, all three positive notification +flags, xtext validation, and permanent/transient reply mapping. -The complete strict debug-build suite passed 99 of 99 tests in 13.18 seconds. +The complete strict debug-build suite passed 99 of 99 tests in 13.22 seconds. The commits were pushed to `master`, installed as `mail-mta/bongo-9999::bongo` with GCC 15.3.0, and exercised on 2026-07-27: @@ -2692,16 +2695,27 @@ were read from the real Bongo Store: omitted DSN options retained the standard failure/body behavior, `RET=HDRS` omitted the original body, `RET=FULL` retained it, xtext `+2B`/`+40` values decoded correctly, and `NOTIFY=NEVER` created no report. A relay `550 5.1.1` remained `5.1.1` -instead of degrading to generic `5.0.0`. +instead of degrading to generic `5.0.0`. A second relay deliberately omitted +the `DSN` EHLO capability: Bongo then omitted `RET`, `ENVID`, `ORCPT`, and +`NOTIFY` on the wire, but still generated the requested local success DSN. ```text -SMTP-14 PASS syntax=postfix-aligned ret=omitted-default-full/hdrs/full envid=relayed/xtext-decoded notify=omitted/success/failure/never orcpt=relayed/decoded dsn=2.0.0/5.1.1 queue-clean=yes store-clean=yes config-restored=yes +SMTP-14 PASS syntax=postfix-aligned ret=omitted-default-full/hdrs/full envid=relayed/xtext-decoded notify=omitted/success/failure/never orcpt=relayed/decoded dsn=2.0.0/5.1.1 peer-without-dsn=parameters-suppressed/local-dsn queue-clean=yes store-clean=yes config-restored=yes ``` The test deleted all marked Store objects and Queue entries, stopped its relay fixture, restored the exact SMTP Store document, and restarted Bongo. No message left the test host. +This behavior was compared directly with Postfix 3.11.1 +`src/smtp/smtp_proto.c`. Postfix adds `RET`, `ENVID`, `ORCPT`, and `NOTIFY` +only when the session has `SMTP_FEATURE_DSN`, xtext-encodes the parameters, +and keeps the downstream Enhanced Status Code for recipient accounting. +Bongo now applies the same capability boundary and status preservation to +both direct and relayhost delivery. Postfix +`src/bounce/bounce_notify_util.c` was also used to verify the canonical +`Original-Recipient` report field. + ## SMTP-20 Result: **PASS**