The per-listing relay is the smart part, since it stops one leaked address from linking all of a seller's ads. Adding a short expiry or a simple reply cap would also help keep the relay from being reused for spam.
Expiry-with-extend makes sense, especially if an extension follows a real reply rather than just resetting the timer. That way slow listings stay live while they are still being negotiated, without reopening a dead relay for good.
That's the refinement I hadn't articulated — renewal tied to a real inbound reply, not just a timer reset. It solves the gaming problem for free: nobody can extend a dead relay by sending an empty email, because the trigger is the conversation itself.
Implementation-wise it's cheap too — the forwarding pipeline already touches every inbound mail, so "did a real reply arrive in the current window" is one flag away. The residual question is spam-triggered renewals, but between the spam report button and capping renewals per buyer address, that's manageable.
Adding it to the post-launch list next to expiry-with-extend. This thread genuinely shaped the roadmap — thanks.
That cap per buyer address should handle most of it, especially if only replies that pass the spam filter count toward renewal. A flagged message then cannot keep a dead relay alive on its own.
Rishabh Mishra
Cloud FullStack Developer & Design Engineer.
The per-listing relay is the smart part, since it stops one leaked address from linking all of a seller's ads. Adding a short expiry or a simple reply cap would also help keep the relay from being reused for spam.