Skip to content

SMTP Connection Test

An SMTP connection test opens a TCP socket from our server to your mail host on a chosen port and reads the greeting it sends back. It proves reachability and identifies the software answering. It does not send mail, authenticate, or issue EHLO — this is a reachability and banner test.

This opens a TCP connection from our server and reads the greeting the far end sends. It does not send mail, issue EHLO, or authenticate.

What this test does, precisely

Three things happen when you press the button. We resolve the hostname to an address and reject it if it lands on a private, loopback, or link-local range. We open a TCP connection to that address on the port you chose, with a six-second timeout. On the cleartext ports we then wait for the server to speak first, because SMTP, POP3, and IMAP are all server-greets-first protocols, and we show you the greeting verbatim.

That is the whole test. No EHLO is issued, no AUTH is attempted, no MAIL FROM is sent, and no message is delivered. Anything that claims to test "delivery" without credentials and a recipient is testing something else. What you get here is the answer to one narrow question — is the TCP path from a public network to this port clear, and what does the far end announce itself as — which happens to be the first question worth asking in almost every mail outage.

The test runs from our server on a commercial network. A port that is open for us may still be blocked for you, and vice versa — home ISPs and cloud providers routinely filter outbound port 25 while leaving 587 alone.

Which port to test, and why

PortPurposeEncryptionWho connects
25MTA-to-MTA relay (RFC 5321)Opportunistic STARTTLSOther mail servers delivering to you
587Message submission (RFC 6409)STARTTLS, AUTH requiredYour users and applications
465Submission over implicit TLS (RFC 8314)TLS from the first byteYour users and applications
2525Unofficial alternate submissionProvider-dependentClients on networks that filter 587
110 / 995POP3 / POP3 over implicit TLSSTARTTLS / implicitMail clients retrieving mail
143 / 993IMAP / IMAP over implicit TLSSTARTTLS / implicitMail clients retrieving mail
Read the full explanation of smtp connection test results ↓

Test 25 when inbound mail is bouncing — that is the port other servers use to reach you. Test 587 or 465 when your own users or an application cannot send. Testing the wrong one produces a confusing result: plenty of correctly configured servers answer on 587 while deliberately refusing 25 from anywhere but their own network.

Ports 465, 993, and 995 wrap the session in TLS before a single byte of protocol is exchanged, so there is no cleartext greeting to read. For those we report reachability only, and the banner field stays empty. That is expected, not a fault.

Reading the greeting banner

A healthy SMTP greeting looks like 220 mx.example.com ESMTP Postfix (Ubuntu). Break it into three parts. The 220 is the service-ready reply code. The hostname that follows is what the server calls itself — this should match its PTR record, because receivers that run forward-confirmed reverse DNS checks compare them. The trailing text names the software, which is useful for knowing what you are dealing with and, if you would rather not advertise it, is trivially suppressed in your MTA config.

  • `220 …` — the server is ready. Normal.
  • `421 …` — service unavailable, try later. The host is up but shedding load, in a maintenance window, or applying a connection-rate limit to our address.
  • `554 …` — transaction failed at the greeting. Almost always means the connecting IP is blocked outright by that server's policy or a blocklist it consults.
  • A banner naming a different host than you expected — you are hitting a spam-filtering gateway or a load balancer, not your mail server. Follow the MX records to see who is really in front.
  • Connected but no greeting inside six seconds — usually a firewall that completes the TCP handshake and then drops the session, or a tarpit deliberately slowing suspicious connections.

What each failure mode actually means

Connection refused means a TCP RST came back: the host is reachable and something actively said no. Nothing is listening on that port, or a local firewall rejected rather than dropped the packet. Check that the service is running and bound to the public interface, not to 127.0.0.1.

Connection timed out means the packets vanished. A firewall is dropping them silently — the default behaviour of most cloud security groups and of ISP filtering. This is the signature of a blocked port 25: your provider has not refused you, they have quietly discarded the traffic. See the port 25 guide for how to confirm it and what your options are.

Host does not resolve means the DNS problem comes before any of this. Check the name with the A record lookup; if you typed an MX hostname, confirm it exists — MX records pointing at hostnames that do not resolve are a surprisingly common cause of total inbound mail failure.

Host resolves to a private address is rejected before we connect. That is deliberate: a public checker that will connect to 10.0.0.5 on request is an SSRF tool aimed at its own operator's network. Test internal hosts from inside your own network with telnet or openssl s_client.

Doing this by hand

The same test from your own machine, which is worth running because it tests your network path rather than ours:

# Cleartext ports (25, 587, 2525) — the server greets you first.
# openssl's -starttls flag also proves STARTTLS works, which telnet cannot.
openssl s_client -connect mail.example.com:587 -starttls smtp -crlf

# Implicit-TLS ports (465, 993, 995) — TLS begins immediately, no STARTTLS.
openssl s_client -connect mail.example.com:465 -crlf

# Bare reachability, no protocol:
nc -vz mail.example.com 25

# Full manual conversation once connected — type these lines:
#   EHLO test.example.org
#   QUIT
openssl s_client is the right tool: it reads the banner and verifies TLS in one step

If openssl s_client -starttls smtp succeeds it also prints the certificate chain, so you can confirm the name on the certificate matches the hostname — a mismatch is why some senders refuse to negotiate TLS with you and fall back to cleartext or defer. The SSL certificate checker covers the same ground for HTTPS.

What an open port does not tell you

This is the important limitation. A green result means the door opens. It says nothing about whether your mail will be accepted, because everything that determines acceptance happens after the greeting: the receiver evaluates your PTR record, your HELO name, your SPF and DKIM results, your DMARC alignment, your IP reputation, and finally the content. A server with a perfect banner on port 25 can still reject every message you send.

So use this test to eliminate the network layer, then move up the stack. Confirm reverse DNS with the PTR lookup, check whether your address carries a listing with the blacklist checker, and get the whole authentication picture in one pass with the deliverability snapshot.

Frequently asked questions

Does this actually send an email?
No. We open a TCP connection, read whatever greeting the server sends, and disconnect. No EHLO, no AUTH, no MAIL FROM, no message data. Nothing appears in anyone's inbox, and nothing is queued. The only trace is a connection entry in your server log showing our IP connecting and dropping.
Port 25 times out for me but the test says it is open. Which is right?
Both. We test from a commercial network where outbound 25 is permitted; you are almost certainly on a residential ISP or a cloud provider that filters it. That filtering is deliberate and near-universal — it is the main anti-botnet measure on consumer networks. Send through port 587 with authentication instead, or ask your cloud provider to lift the block, which most will do for an established account.
Why is the banner empty for port 465?
Port 465 uses implicit TLS: the TLS handshake starts on the first byte, so there is no plaintext greeting to read. The same is true of 993 (IMAPS) and 995 (POP3S). We report the port as reachable and leave the banner blank. To see the greeting inside the TLS session, run openssl s_client -connect host:465 locally.
The banner shows a hostname that is not my server. Is that a problem?
Not necessarily — it usually means a filtering service or load balancer sits in front of you, which is exactly what you would see with Proofpoint, Mimecast, Barracuda, or Microsoft 365. It only matters if you did not expect it. Compare the banner hostname against your MX records; if they disagree in a way you cannot explain, something is intercepting mail for your domain.
Should the banner hostname match my PTR record?
Yes, and it should also match the name you use in EHLO. Receivers doing forward-confirmed reverse DNS compare the connecting IP's PTR against the HELO/EHLO name and against the forward resolution of that name. Mismatches are a well-established spam signal and are the cause of a large share of Microsoft and Yahoo rejections.
Which port should I test if mail to my domain is bouncing?
Port 25, against the hostnames in your MX records. That is the only port other mail servers use to deliver to you. If port 25 on your primary MX host is filtered or refused, inbound mail fails regardless of how well 587 works for your own users.
Can I test a server on my local network?
Not through this tool — private, loopback, and link-local addresses are rejected with a 400 before any connection is attempted, because a public checker that connects to arbitrary internal addresses on request is a server-side request forgery vector. Test internal hosts from inside the network with nc -vz or openssl s_client.
What does a 6-second timeout mean about my server?
Six seconds is generous for a TCP handshake; a healthy server anywhere in the world answers in well under one. A timeout means packets are being dropped rather than refused, which points at a firewall, a security group rule, or ISP-level filtering. Note the distinction from "connection refused" — a refusal proves the host is reachable and something answered, which is a different problem entirely.