On the surface, setting up an external mail server is actually super easy. Pretty much every service supports SMTP, so all you need is to find your credentials (an endpoint, a username, and a password) and input that in your lemmy.hjson file, along with a sender address. There is a verification process with every email provider, you will usually have to set some DNS records to prove you own the domain you're trying to send from, but once you do these two things, emails will just start flying out.
The actual process tends to be a little more tedious though. Pretty much every mail provider wants to sell you on their specific super awesome API and only mentions SMTP as a footnote, for reasons that I can only parse as an attempted vendor lock-in. They also sometimes make the verification process difficult. SendGrid, for example, immediately redirects you to their "sender identities" which are more useful for their marketing automation tooling than they are for automated emails from a website, and you also have to dig a fair bit to find the SMTP credentials. (The endpoint is smtp.sendgrid.net
, apikey
on the username, and whatever your API key is for the password, you'll need to set one of those up.) They also have a number of different tracking things that you'll have to find and turn off in the UI (luckily all of them can be toggled in the same place), which would normally actually help you by providing you statistics about how many emails were opened and how many people clicked on links, but for the emails Lemmy sends, it's useless and I didn't want SendGrid to collect that data on my instance users, so I shut that off.
Initially, I wanted to use Amazon SES, but they have an even more tedious setup: you have to talk to an actual human to have them turn it on for you, otherwise you're stuck in sandbox mode and can only send email to verified receiver addresses. Their service works well though, I used it a lot in my freelancer days, and they do make it fairly straightforward to find the SMTP credentials, but the verification process can be slow.
I also remember using Mailgun for some project ages ago, it was pretty much the same deal as all the others: you have to pry the SMTP details out of their docs, but once you do and you verify your stuff, it works well.
Ultimately, I think the best you could do to help out users here is to provide them with documentation for a few of these services: exactly where to go, which buttons to click and whatnot. Or just stick to the embedded service for a bit, but the real issue there is the bounce rates from spammers. They made my instance send out like 60-70 verification emails for bogus addresses on gmail, yahoo, hotmail, and live.com on the first day I got federation working, and if you don't already have a good reputation -- which is what these third parties help you with -- then you can easily get yourself blacklisted, either internally or externally.