coilysiren.me DNS: add second Google verification token, and add SPF and DMARC to an unauthenticated mail domain #911
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/devrel
role/eval
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/sysadmin
role/tpm
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#911
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Work order for the Systems Administrator seat. Self-contained, final state only. Strategy context is
coilysiren/inbox#404(private) and is not needed to do this.All work is in
terraform/aws-inventory/main.tf, resourceaws_route53_record.txtat line 167, plus one new resource. Verified against8.8.8.8on 2026-08-25.1. Add a second Google verification token. Add-only
Google issued a new site-verification token for
coilysiren.me:Do not replace the existing token.
MXreturns1 smtp.google.com., so Google Workspace actively routes mail for this domain, and that file's own comment records it as "Google Workspace mail for kai@coilysiren.me" percoilyco-bridge/agentic-os-kai#528. Workspace proves domain ownership with agoogle-site-verification=TXT identical in format to Search Console's, and there is exactly one such token on the apex today. It cannot be determined from DNS which product issued it. Removing it risks Google un-verifying the domain, which can suspend Workspace services including mail. Carrying both is cheap and safe.aws_route53_record.txtis afor_eachover a map of name to a single string, withrecords = [each.value]. A second"@"key is invalid, so the map values need to become lists:Confirm the plan shows an in-place update on the apex TXT and no change to
_atprotoor_discord. Those two are load-bearing for Bluesky handle resolution and Discord domain ownership.2. The mail domain has no authentication
coilysiren.meroutes mail through Google Workspace with no SPF, no DKIM, and no DMARC. Confirmed absent: apex TXT carries only the verification token,google._domainkeyis empty,_dmarcis empty.Consequences: the domain is trivially spoofable, and mail sent from it is likely to be filtered as spam.
SPF - add to the apex list from item 1:
Softfail
~allrather than-all. Harden only after DMARC reporting shows no legitimate senders being missed.DMARC - new record at
_dmarc.coilysiren.me, TTL 300:Start at
p=none. It is monitor-only and cannot break delivery. Moving toquarantineorrejectbefore reports confirm SPF and DKIM pass on real mail will silently drop legitimate mail. Theruaaddress is on the same domain, so no external authorization record is needed.Blocked on Kai, do not guess
google._domainkey.coilysiren.me.MS=record exists and Bing Webmaster Tools is worth adding, but the token has to be generated from that account first.Land items 1 and 2 without waiting on either.
Done means
Both Google tokens resolve on the apex, SPF and DMARC resolve,
_atprotoand_discordare byte-identical to before, and Workspace mail still delivers. Verify withdigagainst a public resolver rather than trusting the apply output.Items 1 and 2 are written and reviewed in #913. The live apply is the one wall left.
Before-state, confirmed against
8.8.8.8google-site-verificationtoken only_atproto-did=did:plc:xvgmere7jp42xfc5xn47lvyi_discord-dh=caaf268c3e61b84d806cf8c4e3d502be5f7be768_dmarc- emptygoogle._domainkey- emptyMX-1 smtp.google.com.Matches the work order exactly.
Change
aws_route53_record.txtfor_eachvalues became lists, the apex carries both tokens plusv=spf1 include:_spf.google.com ~all, andaws_route53_record.dmarcis new at TTL 300 withv=DMARC1; p=none; rua=mailto:kai@coilysiren.me._atprotoand_discordshow no change in the plan.terraform validatepasses,fmt -checkis clean,pre-commit run --all-filesis green.Blocker: the apply is not authorized in this session
The targeted plan is clean:
The apply call was refused by this session's permission layer, so live DNS is unchanged. Nothing about the change is unsafe, the authority is simply absent here.
A second reason the apply must stay targeted
An untargeted apply on this module plans
2 to add, 1 to change, 3 to destroy. The three destroys arehome_a["eco-jobs-tracker"],home_a["eco-mcp"], andhome_a["grafana"], all of which resolve live to the home IP today. That is pre-existing drift from the ExternalDNS migration, unrelated to this work, filed as #914.Exact operator action
Expected evidence, against a public resolver rather than the apply output:
Apex should return three values (both tokens plus SPF),
_dmarcthep=nonepolicy, and_atprotoand_discordbyte-identical to the before-state above.Still blocked on Kai, unchanged
DKIM and the Bing
MS=token, both for the reasons in the work order. Neither blocks this branch.Applied. Items 1 and 2 are live. Merged as #913, squashed to
b1908b0onmain.After-state
Authoritative (
ns-1394.awsdns-46.org) and public (8.8.8.8) agree:_atprotoand_discordare byte-identical to the before-state.MXis untouched.The targeted plan now reports
No changes. Your infrastructure matches the configuration.How it was applied
With
-targeton the two changed addresses only, because an untargeted apply on this module would have destroyed three live A records. That drift is unrelated to this issue and is filed as #914.One claim held back
MXis unchanged and SPF softfails on an include of Google's own sender, so the delivery path is the same one that was working before. That is a strong signal, not an observed delivery. No test message was sent, so end-to-end Workspace delivery is inferred rather than measured. A single mail fromkai@coilysiren.meto an outside address would settle it, and its headers would also give the firstspf=passreading.Carried forward
DKIM, Bing verification, and the eventual SPF and DMARC hardening are in #915. All three need a value that only exists in a vendor console.
Closing this one.