A user, ZenOokami, encountered issues sending test emails via Zoho Mail after setting up Discourse on DigitalOcean. Despite correct SMTP settings (smtp.zoho.com, port 587, TLS enabled) and proper DKIM/SPF records, they received a Net::SMTPAuthenticationError: 535 Authentication Failed. After confirming the Zoho SMTP docs ZenOokami and checking account setup watchmanmonitor, the root cause was discovered: Zoho enforces 2FA for all users if even one user has it enabled. ZenOokami resolved the issue by generating an application-specific password for the noreply@essenceofzen.org account via Zoho’s account settings > Two Factor Authentication > Manage Application Specific Passwords ZenOokami. Another user, n1bff, added that setting SiteSetting.notification_email in app.yml is also essential for Zoho to accept outgoing mail. The solution helped others, including SuperMegabyte.
My dev partner reminded me: “Aren’t we using 2FA with zoho?”
Yes, yes we were, but I only had it on for specific users - what I did NOT know was that if eve one user has it activated, the umbrella system won’t let any other user log in without turning on 2FA as well – so going into noreply’s account and creating a specific application password for discourse solved that issue.
Sorry for wasted topic, but hopefully this will help any other user who may have a similar system.
Sorry for the late reply Bruno - for you (or any passer by readers):
Log into the zoho account, head to the account settings menu (not the mail settings, but the actual account) - at the time of posting - by clicking your account picture at the top right of the zoho site, and click “my account”. From here, you simply click “Two Factor Authentication”, and then click “Manage Application Specific Passwords”, and generate a new one with the title you give it.
This thread came up when I was having no luck earlier this month using Zoho for our mail in a Discourse installation.
There was another MUST for us: Before going through the web-based installation steps you must set the SiteSetting.notification_email at the bottom of the app.yml. Otherwise Zoho won’t accept your mail and you would never get the activation mail or anything else.