Hello Twistors,

As many of you know, Twisted's email infrastructure for the past few years has 
been generously provided by Mailgun.  This was a huge upgrade to our sender 
reputation over running our own Exim instance at the time, and I'm tremendously 
grateful for all the effort it's saved the project.

However, Mailgun has never been a super close fit for what we actually want as 
a project (see for example https://github.com/glyph/mg2dsn 
<https://github.com/glyph/mg2dsn> which papers over some of the differences 
between what they provide and what we actually want), and over the years there 
have been several hiccups in service as Mailgun tweaks its pricing and their 
plan-upgrade machinery doesn't know what to do with our discounted account.

Right now, I'm dealing with a minor issue where our "plan" (which, again, 
Mailgun has generously given us for free) no longer includes the ability to 
process incoming email... so, for example, this email is only reaching you 
because the pre-existing inbound routes are grandfathered in, and continue to 
work (whew!); however, I can no longer add new @twistedmatrix.com email 
addresses nor change the configuration of existing ones.

Now, for this particular issue I've opened a ticket with Mailgun and hopefully 
they'll be kind enough to extend their support to us yet again, but in the 
longer term, it feels like we might want to go back to hosting our own thing; 
ideally a thing that allows us to dogfood Twisted and maybe learn interesting 
things about our SMTP support.

What we need is not trivial, but it's also not too complicated.  Critically we 
do not need to host a full-featured mail storage service, as we only do 
forwarding to and from other services.  So what we need is a thing that can:

listen on TLS ports with a certificate
generate an RSA key for DKIM
spit out something we can plug into our twisted.names configuration instead of 
this - 
https://github.com/twisted-infra/braid/blob/1df63c5d8b44e079487be2f0bf099108a77872e5/services/t-names/zones/twistedmatrix.com#L58-L63
 
<https://github.com/twisted-infra/braid/blob/1df63c5d8b44e079487be2f0bf099108a77872e5/services/t-names/zones/twistedmatrix.com#L58-L63>
distinguish between inbound-forwarded and outbound-sent email
authenticate users to send for particular addresses (i.e. set "From" and 
"Sender" headers, and confirm consistency with MAIL FROM & auth, reject if 
anything doesn't match; with a caveat for messages forwarded via mailman); sign 
these outbound messages with https://pypi.org/project/dkimpy/ 
<https://pypi.org/project/dkimpy/>
forward inbound messages which have DMARC alignment
maybe run spambayes and junk stuff that's obviously spammy before forwarding if 
we want to get fancy
DKIM sign messages on their way through
take over port 25, somehow talk to mailman (either via talking to Debian's Exim 
on some alternate port or by running mailman's receipt scripts itself).

Basically, a signing / authenticating MX relay.

Anyone interested in attempting to write such a thing with Twisted? :)

-glyph
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to