Nodemailer: Error: Greeting never received (code: 'ETIMEDOUT', command: 'CONN')
The TCP connection was made but the server never sent its SMTP 220 banner — usually a TLS mode mismatch or a firewall/proxy swallowing the traffic.
Greeting never receivedError: Greeting never receivednodemailer Greeting never received ETIMEDOUTcode: 'ETIMEDOUT', command: 'CONN' greetingSMTP greeting timeout Meaning
The classic cause is secure: true on port 587, or secure: false on 465: the client waits for plain text while the server speaks TLS (or the reverse). Fix the pair: 465 with secure: true, 587 with secure: false (STARTTLS). Slow servers may need a larger greetingTimeout.
Common causes
secureflag does not match the port- Firewall or antivirus content-scanning SMTP
- Proxy/VPN interfering
- Very slow server or DNS
- Using port 25 with TLS on
⚡ Quick fix
- 465 →
secure: true; 587 →secure: falsewithrequireTLS: true - Increase
greetingTimeoutto 30000 - Try from another network to rule out a firewall
Detailed fix by platform
Linux
nc smtp.example.com 587should immediately print a line starting with220; silence means the mode is wrong or traffic is blocked
How to diagnose
- Pair — secure matches port?
- Banner — 220 shown by nc?
- Network — Proxy/AV?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- 421 4.7.0 Try again later (rate limited) SMTP: 421 4.7.0 Our system has detected an unusual rate of unsolicited mail originating from your IP address. Mail sent from your IP address has been temporarily rate limited
- 450 4.7.1 Greylisted, please try again later SMTP: 450 4.7.1 <user@example.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html
- 530 5.7.0 Authentication Required SMTP: 530 5.7.0 Must issue a STARTTLS command first / 530 5.7.1 Authentication required
Most viewed in Email / SMTP
Other ways to find it
Where this error sits
Origin: Network. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 4 Nov 2026