I cant get my email sending to work on my instance. After trying for hours, i wanted to ask for some support here since im quite stuck and dont understand.
I installed Lemmy using ansible so everything is set up in a very standard way - except email.
I want my instance to send email to an external smtp server (Fastmail) whenever there is a need to send an email (user registration, password reset, etc).
Currently the email settings in lemmy.hjson looks like this:
  email: {
    smtp_server: "postfix:25"
    smtp_login: "[email protected]"
    smtp_password: "fastmail_user_password_here"
    smtp_from_address: "[email protected]"
    tls_type: "tls"
  }
It seems like i need to have postfix:25 as the smtp server. What i really want is to put smtp.fastmail.com:465 here since thats what i want to use to send email. But that doesnt seem to work.
So I understand I need to send email through postfix, but then I wonder, how should the config look like to send emails to smtp.fastmail.com on port 465 (which is what they have on fastmail), with a specific username and password used on the fastmail server?
I think a lot of people are having issues with the email part of the setup, judging from the many reports of spinning buttons on user signup… this is a very likely reason, specially since there is no error message to the user.
Please help me sort this out, how should i configure this?
EDIT:
Ok after a lot of experiments and help from people below, this was the solution.
  email: {
    smtp_server: "smtp.fastmail.com:587"
    smtp_login: "[email protected]"
    smtp_password: "password"
    smtp_from_address: "[email protected]"
    tls_type: "starttls"
  }
Using this, email sending finally works. I couldnt use something else in the smtp_from_address. Which means my real email gets shown to users, so I will probably create another email address for this purpose completely.
Also specific to Hetzner instances, they dont block port 587 so you can use that with starttls.
- My instance had the same problem, the problem was that Hetzner (where I host my server) by default is not permitting outbound smtp ports. For me the solution was to use alternative port and even that a starttls alternative port which AWS SES luckily supports (that is what I am using for smtp server). Alternative would be also to just ask Hetzner to unblock the port (people have reported success with this method). - Actually it seems that port 587 is open (starttls) while port 465 (tls) is closed. I can connect to port 587 on my email server from my Hetzner instance (im also using them). - But how should the config look like to forward emails? How does your config look like? - I was able to get Brevo working on Hetzner with the following block: - email: { smtp_server: "smtp-relay.sendinblue.com:587" smtp_login: "your_email" smtp_password: "smtp_key" smtp_from_address: "your_email" tls_type: "starttls" }- Interestingly, it wasn’t working when I gave up and went to bed. I happened to do something on the instance today and much to my surprise, an email came through. Maybe Brevo holds the emails/doesn’t immediately allow SMTP? - if that hadn’t worked, my next step was going to test sending email through the console as described in another comment. 
- if you use starttls, just use - tls_type: "starttls"in your config
 
 

