I’m going to start off but saying I know that self-hosting email can be a bad idea. That being said, I’m trying to de-googlfy my life and would like to experiment.

I have a VPS and a domain that doesn’t get used for much at the moment. I’d like to try configuring a full mail suite on that domain and see if I can make it work. I’ve been looking into the various options on this list and was hoping for some feed back on options that people have used. If this works out it would be fairly low volume.

Ideally I’d like a full solution that includes web administration if at all possible. I think I’m leaning towards mailcow but it might be overkill.

I’d appreciate any input on what has or hasn’t worked for people. Thanks.

  • jemikwa
    link
    fedilink
    English
    arrow-up
    9
    ·
    edit-2
    11 months ago

    Definitely listen to this. IP Warming is a very real problem and you have to send thousands of messages at a very gradual rate for most email gateways to 1) mark you as a proper email sender, and 2) classify you as a reputable one that isn’t sending spam. Using a public/private cloud IP isn’t enough, it should be a service already used for mail sending.

    If you self host sending email and ignore using a service for outbound, make sure it isn’t at home. ISPs often block SMTP traffic to keep people from spamming others from their home. A lot of IP blocklists also auto block home IPs so you may not ever get your messages delivered.

    Make sure to set up SPF/DKIM/DMARC. At the very least SPF, DKIM if the platform supports it, and ideally all three or SPF+DMARC. It’s not that hard to configure if you do it as you go instead of years down the line after you have a dozen services sending mail as your domain.

    • lily33@lemm.ee
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      11 months ago

      What do you mean thousands at a very gradual rate? I don’t think I’ve sent 1000 emails offer the last year. And even if some people send more, I can’t imagine it would be at a pace where that becomes a problem (at least if it’s for personal use)…

      • jemikwa
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        11 months ago

        It’s about sample size. Mail gateways won’t designate an IP as a reputable sending IP until it assesses a large volume of mail sent over a long period of time. You can’t send the quantity it wants all at once or even in a short window because then you’ll be designated as a spammer. So you start small with a few a day and gradually ramp up sending over multiple weeks or months to eventually send several thousands of messages in that period.

        Spammers and malicious actors too often spin up new IPs for sending mail, so gateway patterns already implicitly mandate that email should come from IPs it’s already judged reputable.

        You as an individual can’t reasonably warm your own IP. This is why services like Amazon SES or Sendgrid exist because they have huge IP pools that are ready to go. Plus, those services are very concerned with reputation and have bounce/complaint metrics defined to warn customers that abuse or poorly configure their sending habits.

        This next example is what I’m most familiar with, but I’m sure there are other services like this. If you’re a big enterprise and want your own dedicated sending IP because you’re concerned about using a shared pool, you could use something like Amazon Pinpoint which allocate IPs for your org to use in SES, but they have to be warmed before you switch your production workloads over to it full-time. It automates some of the gradual-ness of warming so you use a mix of SES plus your Pinpoint IPs to keep mail flowing for your product.

        It looks like Sendgrid also does dedicated IP warming guard rails too. This article is pretty decent for understanding how it works - https://docs.sendgrid.com/ui/sending-email/warming-up-an-ip-address The per-day warming limits give you an idea of what scale this kind of process is used for.