$ writing
How email delivery actually works.
Technical writing about authentication, sender reputation and why messages end up in the wrong folder. No announcements, no roadmap posts. For the ordered path through it rather than the latest post first, start with how email authentication works.
Publishing a BIMI record, and the certificate most senders do not need yet
A BIMI record is three lines of DNS and one very expensive prerequisite. What the record contains, why the SVG you already have will not work, the difference between a VMC and a CMC, and the reason most transactional senders should publish nothing at all for now. 6 min read
IP warmup explained: who needs it, who does not, and what a schedule actually looks like
Receivers trust a sending IP in proportion to what they have seen from it, and a new IP has no history. Warmup is the process of building that history without triggering the defences built for sudden senders. Most application senders should never do it, because it is a job for the infrastructure they send through. 5 min read
Magic link and OTP emails: what makes them arrive in seconds, and what makes them late
A login code that arrives in ninety seconds has failed, even though it was delivered. Latency in transactional email comes from a handful of specific places, most of them in your own stack, and each one is measurable. Where the seconds go, how to design the message so security scanners do not consume the link, and what to measure. 5 min read
Do transactional emails need an unsubscribe link? The Gmail and Yahoo rules, applied to application mail
The 2024 Gmail and Yahoo sender requirements made one-click unsubscribe mandatory for bulk senders, and left developers unsure whether a password reset now needs an opt-out. It does not, but the reasoning matters, and the other requirements apply to every message you send. 4 min read
Hard bounce vs soft bounce: what the SMTP reply codes mean, and what to do with each
A bounce is a receiving server's answer, and the answer has a structure. The first digit says whether to retry, the enhanced status code says why, and the text is for humans. Here is how to read the common ones, which addresses to suppress, and which rejections are about you rather than the recipient. 5 min read
SMTP port 25 vs 465 vs 587: which one to use, and why the answer is almost always 587
Three ports, three different jobs, and one that most applications should never touch. What each port was designed for, what the standards say now, why hosting providers block 25, and how to configure a mailer so it fails safely rather than falling back to plaintext. 4 min read
How to set up SPF, DKIM and DMARC for a sending domain, step by step
Four DNS records, published in a specific order, turn a domain from "anyone can send as this" into one that receivers can verify. Here is what each record contains, where it goes, and how to confirm it worked before you send anything real. 5 min read
Reading DMARC aggregate reports, and getting from p=none to p=reject
A DMARC policy at p=none protects nothing, but it is the only way to get the reports that tell you what is being sent as your domain. What is inside an aggregate report, how to read it, and the sequence that gets a domain to enforcement without losing legitimate mail. 4 min read
The SPF 10-lookup limit, and why your record silently fails when you cross it
SPF allows ten DNS lookups per evaluation. Every include, a, mx and redirect spends one, nested includes spend their own, and going over produces a permanent error that receivers count as a failure. How to count, what to cut, and why flattening is a maintenance debt rather than a fix. 5 min read
What to monitor on a transactional email sender, and what to actually alert on
Email fails quietly. Bounces go to a mailbox nobody reads, complaint rates climb without a pager going off, and DNS records rot with no error anywhere. Nine signals worth watching, the thresholds that matter, and the four that deserve an alert rather than a dashboard. 5 min read
Sending email from an n8n workflow without wrecking your domain
Automation platforms make it trivial to send mail and equally trivial to send it from an unauthenticated host at three in the morning. What to configure, and what to check afterwards. 3 min readKnow when the rules change.
Gmail, Yahoo and Microsoft change what they require from senders. Pharos changes too — a capability, a limit, a price, something retired. Both change what you have to do to keep sending, so this list sends one email when either happens.
check your email
Confirm from the email we just sent, and you're on the list.