Skip to content

Enforce the automated sender before company mail submission #6082

Description

@devantler

🤖 Generated by the Agentic Engineer

Problem

Invitation email needs an enforced automated sending identity. The existing native SMTP investigation shows that an optional DATA hook is not sufficient by itself: a missing hook can be skipped. Customers must not gain an unrestricted mail credential when this component is unavailable or misconfigured.

Proposed delivery

Implement a default-off internal SMTP submission component with separate application and upstream credentials. Authenticate the application over verified TLS, validate the exact envelope and single message author, then synchronously submit through the existing company Email service using its separate send-only credential. The application credential must not work against the upstream service. Preserve direct company delivery; introduce no hosted relay, paid service, new mailbox access or public endpoint.

This child delivers the executable and bounded native protocol proof. Packaging, private credential provisioning and deployed transport remain separate acceptance on the parent. Ordinary email is unchanged.

Acceptance criteria

  • No default listener. Explicit startup refuses missing, unresolved, reused or invalid private inputs without revealing their values.
  • Real TLS SMTP tests accept the approved sender and refuse anonymous submission, wrong credentials, mismatched envelope, missing/duplicate/grouped/multiple message authors and alternate author headers. Preserve the message and recipient for valid submission.
  • Application credentials cannot authenticate to the separately credentialled native upstream fixture. An unavailable upstream, absent STARTTLS, incorrect CA/name, refusal and missing final acknowledgement cannot produce acceptance.
  • Bound connections, message/recipient sizes, request duration, authentication attempts and sending rate. Perform no background retry; document acknowledgement ambiguity and retain caller-owned retry policy.
  • Credentials, message contents, invitation links and addresses never enter operational logs or error responses. Exercise secret/message canaries and revocation by restart.
  • Pass tests, dependency/security checks, substantive exact-head review and normal protected merge. Keep production sending and portal activation off.

Priority High; effort Medium; Standard. The success signal is structural enforcement through the actual SMTP protocol even without an optional upstream hook, with zero acceptance on failed submission. This is a delivery child of #5400; real invitation delivery remains open there.

Activity

  1. self-assigned this
    on Nov 11, 2026
  2. moved this to 🫴 Ready in 🌊 Project Boardon Nov 11, 2026
  3. moved this from 🫴 Ready to 🏃🏻‍♂️ In Progress in 🌊 Project Boardon Nov 11, 2026
  4. added a commit that references this issue on Nov 11, 2026
  5. moved this from 🏃🏻‍♂️ In Progress to 👀 In Review in 🌊 Project Boardon Nov 11, 2026
  6. devantler commented on Nov 11, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    The native follow-up tests for PR #6084 prove that resetting only the submission backend does not meet the transaction-isolation requirement: the selected SMTP library retains its recipient list, and some MAIL failures occur before the backend callback. The latest upstream release remains go-smtp v0.25.1; its current parser has the same behavior.

    Keep the existing library and apply a minimal protocol-level correction in an in-product, pinned MIT-licensed source snapshot. Reset the parser and backend transaction state at the start of a permitted MAIL command, before parameter validation. Preserve authentication, connection/message budgets, TLS and the original upstream license/source provenance. Do not change the shared module cache or introduce a new service/repository. The native wire regressions must prove replacement MAIL accepts only its fresh recipient without RSET, and parser-rejected MAIL cannot deliver through an old envelope. Run the original upstream tests as well as the composed component, module/security, CI and review gates before merging.

    This is a correction within the existing default-off submission scope. It does not deploy a sender, send real mail or activate the portal. The finding remains open until the protocol-level repair is verified.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

Priority

None yet

Start date

None yet

Target date

None yet

Effort

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions