email-capture-and-deliverylisted
Install: claude install-skill hellokianben-collab/vishal-agarwal-context
# Email capture and delivery that works
Two independent problems that get conflated: **is this address real** and **did the mail arrive**.
---
## Part 1 — verification ladder, cheapest first
Run in this order, stop at the first failure, and always return **why**:
1. **Syntax** — real parsing, not a regex found on the internet.
2. **Disposable / throwaway domain blocklist.**
3. **Typo catch** — `gmial.com`, `gmail.co`, `yaho.com`. Suggest the fix rather than rejecting
silently; a suggestion converts, a rejection bounces the user.
4. **Live DNS: MX, then A/AAAA fallback.** A domain with no mail route cannot receive mail. Cache
results — do not query per keystroke.
5. **Provider-specific rules** (see Gmail below).
**Never do an SMTP-callback probe.** It is slow, unreliable, and gets you blocklisted.
## Part 2 — canonicalization, and the bug it caused
Gmail treats `first.last@gmail.com`, `firstlast@gmail.com` and `firstlast+anything@gmail.com` as the
**same mailbox**. So must you, or your "500 subscribers" is 300 people.
```
canonicalize(addr):
lower-case
if gmail/googlemail: strip dots from local part
strip +tag from local part (all providers that support it)
→ email_key
```
**The real bug this caused:** a Gmail validator checked the **raw** local part — including the
`+tag` — against `/^[a-z0-9.]+$/`. `+` fails that class, so **every genuine Gmail `+tag` signup was
rejected** with "Gmail addresses only contain letters, numbers and dots" — in a file who