#[SOLVED] SMTP Error: Could not connect to SMTP host

15 messages · Page 1 of 1 (latest)

wild briar
#

My Appwrite is not sending emails. The following tests were performed to validate the environment variables:

Log:

appwrite-worker-mails  | [Worker] Worker 0 is ready!
appwrite-worker-mails  | Worker mails  started
appwrite-worker-mails  | [Job] Received Job (6807cd8c4a0ba8.90969113).
appwrite-worker-mails  | [Job] (6807cd8c4a0ba8.90969113) failed to run.
appwrite-worker-mails  | [Job] (6807cd8c4a0ba8.90969113) Error sending mail: SMTP Error: Could not connect to SMTP host.
appwrite-worker-mails  | Using deprecated logging configuration. Please update your configuration to use DSN format.Unable to parse DSN: scheme is required
appwrite-worker-mails  | [Error] Type: Exception
appwrite-worker-mails  | [Error] Message: Error sending mail: SMTP Error: Could not connect to SMTP host.
appwrite-worker-mails  | [Error] File: /usr/src/code/src/Appwrite/Platform/Workers/Mails.php
appwrite-worker-mails  | [Error] Line: 145

Variables:

docker compose exec appwrite-worker-mails vars | grep SMTP
- _APP_SMTP_HOST=mail.***
- _APP_SMTP_PORT=465
- _APP_SMTP_SECURE=tls
- _APP_SMTP_USERNAME=infra@***
- _APP_SMTP_PASSWORD=***

openssl test:

docker compose exec appwrite-worker-mails sh -c "openssl s_client -connect \$_APP_SMTP_HOST:\$_APP_SMTP_PORT"
Connecting to 192.*.*.*
CONNECTED(00000003)
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=R11
verify return:1
depth=0 CN=mail.***
verify return:1

...

220-*** ESMTP Exim 4.98.1 #2 Tue, 22 Apr 2025 15:05:35 -0300
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.
#

I found this command to test.

#!/bin/sh
[email protected]
if [ ! -z "$1" ]; then
    TO=$1
fi
COMMAND='echo -e "From: <$_APP_SYSTEM_EMAIL_ADDRESS>\nSubject: Test SMTP Connection" | sendmail -H "openssl s_client -quiet -tls1 -connect $_APP_SMTP_HOST:$_APP_SMTP_PORT" -au$_APP_SMTP_USERNAME -ap$_APP_SMTP_PASSWORD -f $_APP_SYSTEM_EMAIL_ADDRESS -v'
COMMAND="${COMMAND} ${TO}"
docker compose exec appwrite-worker-mails sh -c "$COMMAND"

Output:

sendmail: send:'NOOP'
Connecting to 192.*.*.*
288B5D80E17F0000:error:0A0000BF:SSL routines:tls_setup_handshake:no protocols available:ssl/statem/statem_lib.c:153:
sendmail: NOOP failed
sendmail: helper exited (1)

When I change the tls to 1.2 in openssl command (-tls1_2) it works fine.

tls1_2:

sendmail: send:'NOOP'
Connecting to 192.185.131.88
depth=2 C=US, O=Internet Security Research Group, CN=ISRG Root X1
verify return:1
depth=1 C=US, O=Let's Encrypt, CN=R11
verify return:1
depth=0 CN=mail.***
verify return:1
sendmail: recv:'220-***.com ESMTP Exim 4.98.1  

... 

sendmail: recv:'235 Authentication succeeded'
sendmail: send:'MAIL FROM:<noreply@***>'
sendmail: recv:'250 OK'
sendmail: send:'RCPT TO:<infra@***>'
sendmail: recv:'250 Accepted'
sendmail: send:'DATA'
sendmail: recv:'354 Enter message, ending with "." on a line by itself'
sendmail: send:'From: <noreply@***>'
sendmail: send:'Subject: Test SMTP Connection'
sendmail: send:'To: infra@***'
sendmail: send:''
sendmail: send:'.'
sendmail: recv:'250 OK id=1u7I5T-00000001X5Q-2clT'
sendmail: send:'QUIT'
sendmail: recv:'221 ***.com closing connection'
clear badger
wild briar
#

Did it, but same error.

clear badger
#

Er nvm

clear badger
wild briar
#

The SMTP is set in .env file.

clear badger
clear badger
wild briar
wild briar
wild briar
#

Found an other documentation that uses port 587. Changed port and secure.

  • _APP_SMTP_PORT=587
  • _APP_SMTP_SECURE=ssl

https://suporte.hostgator.com.br/hc/pt-br/articles/30812710494739-Quais-portas-são-liberadas-por-padrão-nos-servidores-na-HostGator-Brasil

Worked! Please Close it.

clear badger