We gave each of our agents its own real email address. Here's everything that broke.

Reddit r/AI_Agents Tools

Summary

Truespar open-sourced sentio, a Rust-based tool for giving AI agents real email addresses, detailing challenges like deliverability, threading issues, and address reuse.

We build agent tooling at Truespar and this came out of our own product. We open sourced the whole thing today, so I'm obviously not neutral. Repo name at the bottom, no links in this post since the sub filters them, the rest is the problems. Deliverability was the expensive one. An agent that reads mail is easy, an agent that answers mail is a mail server problem, and mail servers punish you for things that have nothing to do with your code. Reverse DNS has to match and only your hosting provider can set the PTR record. Outbound port 25 is blocked by default at AWS, GCP, Azure and Hetzner. And the reply has to be DKIM signed by the domain it claims to be from, otherwise DMARC fails and a perfectly written reply lands in junk. The model never matters here. Your best answer goes to spam because a PTR record points at a hostname from 2019. Threading is one header and basically everyone gets it wrong. If you don't set In-Reply-To to the inbound Message-ID, Gmail opens a new conversation for every reply and the customer sees five separate emails from a robot instead of one thread. Two robots will absolutely talk to each other forever. An out of office autoresponder replies to your agent, your agent is helpful and replies back, and that runs until a human notices. The guards already sit in the headers, Auto-Submitted and List-Id and Precedence. Check them before you let an agent answer anything. The one that actually scared me was address reuse. We assumed a slug was free again once an agent was deleted. Then somebody replied to a four month old thread and that mail arrived at an address now belonging to a different customer. We caught it in staging and nobody was harmed, but addresses are append-only for us now. When an agent dies you retire its slug and leave it retired. The public release is day one but the server isn't, we replaced our own email infra with it last year and it's been running our mail in production since. It's 0.1.4, and most of what the four releases in two days fixed was our own install instructions failing on a clean box. It's on GitHub under truespar, the repo is called sentio, if you want to poke at it. Rust, dual MIT and Apache-2.0, self-hosted, wants Postgres 18, Redis, NATS and S3. Mostly I'm curious whether the address reuse thing has bitten anyone else or whether we were uniquely clever about it.
Original Article

Similar Articles