Hi,
I would like to host my own email server.
I know the pros and cons of doing so, please do not post about the advantage or disadvantage, there is others open topics for it.
I would like my setup fit those “requirements”
- FLOSS
- Be able to create complex rules for incoming/outgoing email ( with 🐍 Python language preferably ).
- based on any properties (subject, ip, header, size, attachment, signed, encrypted, etc… )
- able to modify, delete, fw, etc… the email
- Manage the limit of sending by size and number of outgoing over time (min, hours, week, etc…)
If you know a matrix comparison between email servers I’m all ears.
If you have any feedback with a solution this is most welcome too.
I plan to update this post to create a matrix/spreadsheet of all the solutions that I’ll gather.
Thanks.
deleted by creator
Postfix and write a milter (mail filter), you can get them to interact a various points in the mail delivery.
I think most things can be accomplished within postfix
See my personal notes. I do selfhost mail server, but on a vps to have a good IP
Being doing so for 20+ years and recently rebuilt the entire stack.
See https://wiki.gardiol.org/doku.php?id=email%3Astart
In short, I use postfix+dovecot, with opendmark and opendkim. Setup proper DNS email specific records and a few more steps.
Overall it runs fast and perfect on 4gb ram very old dual core atom CPU.
Too lazy to read wiki link, but I too postfix/dovecot
I have heard people have successfully utilised Mailcow without any issues for many years.
Personally gave it a try once but setting up ports, firewalls, virus scans, anti spams, dns felt too much effort for what I was going to use it for
Using Mailcow for years now, love it, but I don’t think it checks the custom scripts box of OP. Since it’s all containers, you’d have to do some custom bind mounts to hook the underlying containers and keep the scripts, which might have some unintentional consequences depending on the upgrade.
I second Mailcow. I use it on a residential IP and have a smarthost for relaying in/out since my isp blocks port 25.
For relay, I use mxroute.com, I have a lifetime account and Mailcow has a fetchmail option.
All your requirements are a given, except for wanting to do things in Python.
Use Stalwart as mailserver. Besides coming with sane defaults, it allows to put hooks into almost every mail stage. Those hooks can be sieve scripts, local binaries or http calls.
From its web page it sounds like it is both a MTA and MDA, has a built-in spam filter, plus has calendar, contacts and file storage. Do you know how it compares to my current setup of Postfix, Dovecot, and rspamd (and Nextcloud for the others)?
Well exactly as you say: it’s a single service instead of having to combine multiple. In my case dovecot was a lot faster for my mailboxes, but postfix was a piece of shit and I was happy to get rid of it and the many components (rspamd, dkimproxy, etc.) it required. It has far too many footguns, and I shot myself multiple times with them over the years. So the most important part (SMTP) is significantly simpler and IMO better with stalwart. And the mailbox part hopefully evolves as well (it already has JMAP, so that is already an advantage over dovecot as well).
Tbh I haven’t had too many problems with Postfix – however it is certainly a footgun and it would be nice to have fewer parts to connect together, and better defaults. I might try it out, it looks interesting.