chore(security): redact SMTP credentials from compose.dev.yml.1 template (LC-211) #253
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/lc-211b-redact-smtp-creds-template"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
compose.dev.yml.1is the committed TEMPLATE that operators copy tocompose.dev.yml(kept out of git via skip-worktree). It was carrying live values verbatim: a real relay host (mail.a8n.run), a real account (nate@a8n.run), and a real password. Read access to the repo = ability to submit mail as that account.Replaced the six
LETS_CHAT_SMTP_*lines plusLETS_CHAT_BASE_URLwith the commented-out empty-string convention fromcompose.dev-web.yml:30-41. Expanded the leading comment to document the copy-and-fill workflow plus the valid TLS modes (tls/starttls/none; port 465 implicit TLS usestls).Supersedes #252 (LC-211 typo-only fix): the invalid
LETS_CHAT_SMTP_TLS: "implicit"value is gone (line is now a commented-out empty-string placeholder), so theparse_tls_modewarn-and-disable branch atserver/src/mail.rs:43no longer fires from this template. Close #252 in favor of this PR.Rotation status
nate@a8n.runpassword at Stalwart onhc-01(the leaked string"aksre znav bqmq siye ivr"becomes invalid the moment the rotation is saved).compose.dev.yml(skip-worktree'd) or a SOPS-encrypted secrets file.History posture
The leaked password remains in git history at commits
30efeb8,66801a8, and877cd3a. Exposure window ~1 day (LC-100 i18n merge 2026-05-27 to now). History rewrite (git filter-repo+ force-push to main) is deliberately NOT done here per the repo's "never force-push main" rule. Once the Stalwart rotation lands the historical string is a dead credential.Test plan
grep --recursive --extended-regexp 'aksre|znav|bqmq|siye|nate@a8n\.run' --exclude-dir=.git --exclude-dir=target .returns nothing.grep --recursive --line-number --extended-regexp 'LETS_CHAT_SMTP_TLS.*"(implicit|ssl|smtps)"' --exclude-dir=.git --exclude-dir=target .returns nothing (LC-211 AC).compose.dev.yml.1->compose.dev.yml, uncomments the SMTP block, fills the rotated password, redeploys, and the container log readsSMTP mailer configured.e1628dab7d875b743394