open
https://gitlab.synchro.net/main/sbbs/-/issues/1222
## Summary
Three remaining conformance gaps in the Mail Server's SMTP handling, split
out of the message-submission work in #1221 (which covered the MUST in
RFC 6409 section 4.3 and the sender authorization in section 6.1). These are SHOULD-level, independent of each other, and none is a prerequisite for the others.
## 1. Add a `Message-ID` when the client omits one
The MSA SHOULD add or replace the 'Message-ID' field, if it lacks it, or it is not valid syntax (as defined by [MESSAGE-FORMAT]). Note that a number of clients still do not generate 'Message-ID' fields.
-- RFC 6409 section 8.3
Not implemented. A submission with no `Message-ID` is stored and relayed without one, which hurts threading, duplicate suppression and abuse tracing
at the receiving end.
Scope note: this is a submission-port behavior. Adding or replacing headers
on the transfer port would be wrong -- an MTA relays what it was given.
## 2. Advertise `PIPELINING`
RFC 6409 section 7 lists PIPELINING as SHOULD for the submission port; it is defined by RFC 2920. The `EHLO` response currently advertises `AUTH`,
`SEND`, `SOML`, `SAML`, `8BITMIME`, `STARTTLS` and `SIZE`.
Worth checking what the command loop already tolerates before advertising it: the requirement is that the server not send a response until it has read the whole pipelined group, and that it handle multiple commands arriving in one read.
## 3. Advertise `ENHANCEDSTATUSCODES`
Also SHOULD per RFC 6409 section 7, defined by RFC 2034 with the code
registry in RFC 3463.
This is the largest of the three: advertising the extension is a promise that **every** response carries an enhanced code, so it means auditing every reply in the SMTP path, not just the new ones. The submission work deliberately used plain reply codes to stay consistent with the surrounding file -- e.g. `530` rather than `530 5.7.0`, and `550` rather than `550 5.7.1` -- precisely
because a partial implementation would be worse than none.
## Not in scope
`ETRN` and `ATRN` are MUST NOT on the submission port (section 7) and are already absent, so there is nothing to do there.
-- *Authored by Claude (Claude Code), on behalf of @rswindell*
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)