Help using Zoho as an email provider

Hi all. trying to use Zoho to send mail via smtp on my blog. signed up for the zoho free tier but getting errors in ghost when trying to make this work.

i am using the following docker compose:

services:
  ghost:
    image: ghost:5-alpine
    container_name: blog
    restart: unless-stopped
    ports:
      - 8081:2368
    environment:
      database__client: mysql
      database__connection__host: db
      database__connection__user: root
      database__connection__password: [redacted]
      database__connection__database: ghost
      url: https://blog.serversatho.me
      TZ: America/New_York
      security__staffDeviceVerification: false
      privacy_useTinfoil: true
      mail__options__auth__pass=: [redacted]
      mail__options__auth__user: evan@serversatho.me
      mail__options__host: smtp.zoho.com
      mail__options__port: 587
      mail__options__secure: false
      mail__options__service: zoho
      mail__transport: SMTP
    volumes:
      - ./ghost:/var/lib/ghost/content
  db:
    image: mysql:8.0
    container_name: blog-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: [redacted]
    volumes:
      - ./db:/var/lib/mysql

i have tried with port 465 as well as 587, with secure as both true and false. this is the error the logs output:

[2025-06-01 07:00:27] ERROR Failed to send email. Reason: Invalid login: 535 Authentication Failed.
Failed to send email. Reason: Invalid login: 535 Authentication Failed.
"Please see https://ghost.org/docs/config/#mail for instructions on configuring email."
Error ID:
    a0281ec0-3ed7-11f0-9c45-fd9d608232ca
Error Code: 
    EAUTH
----------------------------------------
Error: Invalid login: 535 Authentication Failed
    at createMailError (/var/lib/ghost/versions/5.121.0/core/server/services/mail/GhostMailer.js:81:12)
    at SMTPConnection._formatError (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:809:19)
    at SMTPConnection._actionAUTHComplete (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34)
    at SMTPConnection.<anonymous> (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:1542:18)
    at SMTPConnection._processResponse (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)
    at SMTPConnection._onData (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)
    at SMTPConnection._onSocketData (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
    at TLSSocket.emit (node:events:524:28)
    at addChunk (node:internal/streams/readable:561:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
    at Readable.push (node:internal/streams/readable:392:5)
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)
[2025-06-01 07:00:27] ERROR "POST /members/api/send-magic-link/" 500 950ms
Failed to send email. Reason: Invalid login: 535 Authentication Failed.
"Please see https://ghost.org/docs/config/#mail for instructions on configuring email."
Error ID:
    a0281ec0-3ed7-11f0-9c45-fd9d608232ca
Error Code: 
    EAUTH
----------------------------------------
Error: Invalid login: 535 Authentication Failed
    at createMailError (/var/lib/ghost/versions/5.121.0/core/server/services/mail/GhostMailer.js:81:12)
    at SMTPConnection._formatError (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:809:19)
    at SMTPConnection._actionAUTHComplete (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:1588:34)
    at SMTPConnection.<anonymous> (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:1542:18)
    at SMTPConnection._processResponse (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:993:20)
    at SMTPConnection._onData (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:774:14)
    at SMTPConnection._onSocketData (/var/lib/ghost/versions/5.121.0/node_modules/nodemailer/lib/smtp-connection/index.js:195:44)
    at TLSSocket.emit (node:events:524:28)
    at addChunk (node:internal/streams/readable:561:12)
    at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
    at Readable.push (node:internal/streams/readable:392:5)
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:191:23)

i know the password is correct so im not sure what is happening here.

i emailed zoho tech support and this is what they said:

 Hello,

Greetings from Zoho Mail,

We recommend that you use your regular Zoho account password, which is used to log in to your Zoho Mail web browser account evan@serversatho.me

We understand that you wish to send emails from an external email application using the SMTP server details. Upon analyzing your account, we see that there are no blocks or restrictions imposed, so you should be able to send emails without any issues.

 

To resolve the issue, we recommend trying the following steps:

 

1. Please attempt to connect to our server using an alternate network or ISP.

2. Check if there are any external firewalls or antivirus programs in your system blocking access to the SMTP server.

3. Try connecting to our server after disabling any antivirus software that you are using.

 
Ensure that you configure your Zoho Mail account details correctly as SMTP in the external client to send emails.

Outgoing Mail server (SMTP):

 

- Username: evan@serversatho.me

- Password: Zoho Account password

- Hostname: smtp.zoho.com
- Port number: 465 with SSL or 587 with TLS (please try both ports)

Please check these settings

thanks for the help.