This repository was archived by the owner on Jul 21, 2026. It is now read-only.
msmtpd: add forked SMTP delivery workflows - #42
Open
brandonpayton wants to merge 4 commits into
Open
Conversation
brandonpayton
force-pushed
the
migrate/dash-shell
branch
from
July 11, 2026 23:14
6ce40f9 to
3ed995e
Compare
brandonpayton
force-pushed
the
migrate/msmtpd-service
branch
from
July 11, 2026 23:42
2e9460c to
e4d73c4
Compare
brandonpayton
force-pushed
the
migrate/dash-shell
branch
2 times, most recently
from
July 12, 2026 01:08
b42c261 to
7a0f649
Compare
brandonpayton
force-pushed
the
migrate/msmtpd-service
branch
from
July 12, 2026 01:14
e4d73c4 to
9cc42e1
Compare
Both installed programs carry real fork paths: msmtpd uses fork and popen for delivery sessions, while msmtp links its popen-backed eval and passwordeval support. Replace the duplicated ABI, Asyncify, and fork checks with the tap-owned final-artifact validator and retain only the formula-specific env-import allowlist.
brandonpayton
force-pushed
the
migrate/msmtpd-service
branch
from
July 13, 2026 02:40
9cc42e1 to
50cf10f
Compare
Member
Author
|
Independent exact-head re-review completed for
No Formula blocker remains. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Kandelo applications need a normal way to accept and deliver email through the
Simple Mail Transfer Protocol (SMTP). The tap does not yet provide the server
and its matching delivery client together, so it cannot prove the service's
child-process and exit-status behavior through Homebrew. Adding msmtpd 1.8.32
and msmtp matters because mail-using applications must see real delivery
successes and failures instead of a wrapper that always appears to work.
What changed
20cd58b58dd007acf7b937fa1a1e21f3afb3e9ef5bbcfb8b4f5650deadc64db4with the registry's minimal non-TLS/non-SASL/non-NLS surface./usr/localcommand.fork: :requiredcontract; msmtpd directly forks/popends and msmtp's reachable password-evaluation path uses popen.envimport allowlist permitting__channel_baseandmemory./bin/shclosure.The inetd test proves:
Exact source head
Base:
c5705667a90b05754d2244a362f3f7fc95d2f9c3Head:
50cf10fe5fe47d4904ef702b0fd95f257046217eFormula SHA-256:
800c0bd8d877d1efe190e1fd927e80578ac18e20c9a385a11fe42fc6f925f05fThe first three restack commits preserve accepted functional recipe/tests. The fourth contract commit replaces obsolete duplicated ABI/Asyncify/fork guards with one shared validator call per output while retaining only the exact import allowlist. Ruby syntax, guard audit, ancestry, diff, scope, and clean-worktree checks pass.
A fresh exact-head source build/runtime test was not run for this restack.
Historical runtime evidence
The content-equivalent implementation previously established on ABI 18:
That is historical source/platform evidence, not current ABI 39 bottle or pour evidence.
Final platform gates
Locked PR #907 at exact
bcb02e93817ba757cac3bb4a1666aa46e195193f/ ABI 39 contains the equivalent finite readiness-deadline behavior plus the reviewed fork/network platform stack. The stale #862 cursor design is explicitly excluded and is not a gate.Separate build/rebuild gates remain #842, #873, #874, #883, #882, and deterministic #888-on-#889.
#903 is not presently demonstrated necessary because the historical artifacts passed ABI extraction; final ABI 39 bytes must be revalidated. #905 is not a separate gate because these are fork/popen paths and #905 is already included in #907.
Publication gates
Publication requires #881/#887/#890/#885/#895/#900 plus tap #22 and ABI-checked bootstrap #902. Publish/pour exact Dash first, rebuild both outputs at ABI 39, run literal Formula test, and then run stock Node/Chromium inetd and daemon accept/fork/delivery/termination/leak checks.
Dash is a test-only Formula closure, not an msmtpd runtime receipt edge.
Remaining platform gap
Shared
Errnoat #907 still omits Linux/POSIXEHOSTUNREACH=113even though host networking can return 113. This is a standalone main-repo errno fidelity gap, not a Formula defect or source-review blocker for the proven local SMTP paths. The Formula must not compensate for it; correct unreachable-host errno claims wait on the platform fix.No bottle block, binary artifact, platform change, or ABI change is included.