# Writing

Technical writing on email deliverability, transactional email architecture, and what changes when autonomous agents hold sending credentials.

## [What actually happens when you give an AI agent your email API key](https://sadasend.com/blog/giving-an-ai-agent-your-email-api-key.md)

An autonomous agent with a sending credential can email anyone, at any volume, forever. Here is the threat model, and the four key-level controls that contain it: scoped keys, recipient allowlists, approval mode and dry run.

_20 August 2026 · 8 min read · MCP, AI agents, Security_

## [SPF, DKIM and DMARC: what each one actually does](https://sadasend.com/blog/spf-dkim-dmarc-explained.md)

SPF authorises servers, DKIM signs messages, DMARC decides what happens when they disagree. A practical guide to configuring all three correctly, including the ten-lookup limit and why alignment is the part that breaks.

_20 August 2026 · 10 min read · Deliverability, DNS, Authentication_

## [Gmail, Yahoo and Microsoft now reject non-compliant mail. The 2026 checklist](https://sadasend.com/blog/gmail-yahoo-sender-requirements-2026.md)

Since November 2025 the major mailbox providers reject non-compliant bulk mail outright rather than filtering it to spam. The requirements, the 5,000/day threshold, the 0.30% complaint ceiling, and how to check whether you are already affected.

_20 August 2026 · 7 min read · Compliance, Deliverability_

## [Nodemailer in production: what breaks, and what to do about it](https://sadasend.com/blog/nodemailer-in-production.md)

Nodemailer is the right library and the wrong architecture for production sending. The failures that show up at scale — synchronous sends, no idempotency, lost retries, missing suppression — and how to fix each one.

_20 August 2026 · 9 min read · Node, Bun, Architecture_

## [Why your transactional email goes to spam](https://sadasend.com/blog/why-transactional-email-goes-to-spam.md)

Password resets and receipts land in spam for different reasons than marketing mail. Reputation is shared across your domain, warm-up cannot be skipped, and the fixes are mostly not about content.

_20 August 2026 · 8 min read · Deliverability, Reputation_

## [Building a transactional email queue on Bun and BullMQ without losing messages](https://sadasend.com/blog/transactional-email-queue-bun-bullmq-outbox.md)

BullMQ cannot enlist in a Postgres transaction, so "row written, job never enqueued" is a real failure mode — a silently dropped email. The outbox pattern, jobId deduplication, and the Redis setting that quietly deletes your jobs.

_20 August 2026 · 11 min read · Bun, BullMQ, Postgres, Architecture_
