Concepts & troubleshooting

What is an SMTP test? How online SMTP testing works

What an SMTP test does: connect, EHLO, STARTTLS/TLS, AUTH, MAIL FROM, RCPT TO, DATA. Annotated transcript, what each step proves, why 250 ≠ inbox placement.

11 min read Credentials redacted No signup

An SMTP test opens a TCP connection to a mail server and walks through the Simple Mail Transfer Protocol conversation the same way a real mail client would. It reads the server greeting, sends EHLO to discover capabilities, optionally secures the session with STARTTLS or implicit TLS, authenticates if credentials are supplied, and can submit a real message with MAIL FROM, RCPT TO, and DATA.

Each step proves something specific, and the test isolates exactly where a problem occurs, rather than showing a generic "could not send" error that tells you nothing.

A realistic SMTP conversation, annotated

Here is a complete submission session against a typical submission server, with commentary on every exchange. When you run a test, the transcript you see follows this exact shape.

S: 220 mail.example.com ESMTP Postfix
C: EHLO tester.smtptester.org
S: 250-mail.example.com
S: 250-PIPELINING
S: 250-SIZE 35882577
S: 250-STARTTLS
S: 250-AUTH PLAIN LOGIN
S: 250 SMTPUTF8

The 220 greeting confirms DNS resolves, the port is open, and an SMTP service is alive. EHLO is where the server advertises its extensions. Read this list carefully: SIZE 35882577 says the server accepts messages up to roughly 34 MB, so a 50 MB attachment will be rejected later with 552. AUTH PLAIN LOGIN lists exactly which mechanisms you may use; if CRAM-MD5 is absent, requesting it will fail.

C: STARTTLS
S: 220 2.0.0 Ready to start TLS
... TLS handshake ...

The client sends STARTTLS and the server agrees with 220. Both sides then perform a TLS handshake. If it succeeds, everything after this point (including credentials) travels encrypted. If the server's certificate is expired, self-signed, or does not match the hostname, the handshake fails here, before any authentication is attempted.

C: AUTH PLAIN [redacted base64]
S: 235 2.7.0 Authentication successful

AUTH PLAIN sends the username and password together in one base64-encoded string; AUTH LOGIN exchanges them line by line. A 235 response proves the credentials are valid on this server. A 535 means they are not, and the transcript makes it clear the failure was authentication, not connection or TLS.

C: MAIL FROM:<sender@example.com>
S: 250 2.1.0 Ok
C: RCPT TO:<recipient@example.com>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>

MAIL FROM and RCPT TO each get their own reply. A 250 here means the server accepts the sender and will relay to that recipient. If it refuses to relay to an outside domain, RCPT TO returns 554 Relay access denied right at this step, a policy problem rather than a credentials problem. The 354 response to DATA is easy to misread: it is not an error. It is the server saying "go ahead, send the message, end with a dot on its own line."

C: From: Sender <sender@example.com>
C: To: Recipient <recipient@example.com>
C: Subject: SMTP test
C: Date: Thu, 30 Aug 2026 12:00:00 +0000
C: Message-ID: <20260830120000@test>
C:
C: This is a test message.
C: .
S: 250 2.0.0 Ok: queued as 4B2F1A9C3D
C: QUIT
S: 221 2.0.0 Bye

The message headers and body are sent as raw text, terminated by a lone dot. The final 250 ... queued as <ID> is the acceptance receipt: the server has taken the message into its queue. 221 closes the session cleanly.

What each step proves

1. Connect and greeting

The client opens a TCP socket to the server's host and port. A 220 greeting (for example 220 smtp.gmail.com ESMTP) tells you the hostname resolves in DNS, the port is reachable and not blocked by a firewall, and the SMTP service is running. If this step fails (timeout or connection refused), the issue is network-level: wrong host, wrong port, blocked port, or the server is down.

2. EHLO (capabilities)

The client sends EHLO client-hostname and the server responds with a list of extensions it supports:

This tells you what the server can do before you attempt anything further. If a specific AUTH mechanism is missing, you know not to try it.

3. STARTTLS or implicit TLS

With STARTTLS (port 587), the client sends STARTTLS, the server answers 220 Ready to start TLS, and both sides negotiate a TLS handshake before any credentials are sent. With implicit TLS (port 465), the handshake happens immediately on connect, before any SMTP commands. A successful negotiation proves encryption works, and SMTP Tester reports the protocol version (TLS 1.2/1.3), cipher suite, certificate subject, issuer, and expiry (or the exact validation error if the certificate is bad).

4. Authentication (AUTH)

The client sends credentials using the negotiated method (PLAIN, LOGIN, or CRAM-MD5). A 235 response means the server accepted the credentials.

This proves your username, password, and auth method are correct for this server. If you get 535 instead, the credentials are wrong, and the transcript shows you that it is specifically auth that failed, not connection or TLS.

5. Message submission (optional)

If handshake-only mode is off, the client sends MAIL FROM, RCPT TO, and DATA with headers and body. A 250 Ok (often with a queue ID) after the final . means the server accepted the message for delivery processing.

Where each stage breaks

Most "SMTP not working" tickets collapse into one of these rows:

Stage Success response Common failure Typical code What it means
TCP connect 220 greeting Timeout, refused (none) Wrong host/port, firewall, server down
EHLO 250-… list Protocol mismatch 500–502 Talking plain SMTP to an implicit-TLS port
STARTTLS 220 Ready Handshake fails (TLS alert) Bad certificate, hostname mismatch, old TLS only
AUTH 235 Bad credentials 535 Wrong password, disabled account, wrong mechanism
MAIL FROM 250 Ok Sender rejected 551/553 Address not allowed by policy
RCPT TO 250 Ok Relay denied 554 Not permitted to send to outside domains
DATA 354 then 250 Message rejected 552/554 Too large, spam-like, policy violation

Reading the transcript against this table turns an opaque failure into a specific fix. For the most common row, see fixing SMTP authentication error 535.

Four different things called "SMTP testing"

People use "SMTP test" to mean several distinct checks. Knowing which one you need prevents wasted debugging:

  1. Connectivity testing. Can a TCP connection reach the host and port, and does a 220 greeting come back? This validates DNS, firewalls, and service health. It proves nothing about credentials.
  2. Authentication testing. Do the username, password, and AUTH mechanism work? A 235 answers this. Credential rotation failures show up here, and nowhere else.
  3. Relay permission testing. Will the server actually accept mail from you for an external recipient? This only surfaces when RCPT TO names a domain the server does not host. Servers commonly accept your login but restrict relaying, so a handshake alone cannot answer it.
  4. Deliverability testing. Does the message land in the inbox, the spam folder, or a rejection? No SMTP response can tell you this.

The ordering matters because each level depends on the ones before it. There is no point debugging spam placement while authentication still returns 535, or tuning credentials while the port is firewalled.

Submission success is not inbox delivery

This is the most important distinction in SMTP testing:

Submission success (250 after DATA) means the server accepted the message into its queue. It agreed to process it.

Inbox delivery is what happens next. The server attempts to deliver the message to the recipient's mailbox, and that attempt can still fail or land in spam because of:

To verify end-to-end delivery, send a test to a mailbox you control and check whether it arrives, and where (inbox, spam, or rejected). SMTP Tester confirms submission works; deliverability testing is a separate concern that depends on your DNS records, sending IP reputation, and message content.

Who needs to run these tests, and when

Handshake-only mode

Handshake-only runs connect, EHLO, STARTTLS, AUTH, and then closes the session without sending MAIL FROM, RCPT TO, or DATA. This is useful for:

A successful handshake-only test proves the session path works up through authentication. It does not prove the server will relay to external recipients, that requires a full send with a real RCPT TO.

Manual tools vs a browser-based tester

Traditionally, admins debug SMTP with telnet host 25, openssl s_client -starttls smtp, or swaks. Each has a place, and each has gaps:

telnet openssl s_client swaks SMTP Tester
TLS support No Yes Yes Yes
Certificate details No Yes (verbose) No Yes (parsed)
AUTH Manual typing Manual Yes Yes
Credential redaction No No No Yes
Install required Usually pre-installed Yes Yes (Perl) No (browser)
Works behind port 25 blocks No (25 only) Only if you specify another port Yes Yes

The last row matters more than it looks: many corporate and cloud networks block outbound port 25 by default, so telnet tests fail for network reasons that have nothing to do with your server. A browser tester reaches submission ports (587, 465) from the same machine.

A practical habit: use the browser tester for interactive debugging and credential checks, and swaks or openssl when you need to repeat the same session from a script or from the server itself.

Where to go next

Frequently asked questions

Does an SMTP test send an actual email?

Only if handshake-only mode is off. With handshake-only on, the test stops after authentication and closes the session, so no message is queued or delivered.

What does a 220 response mean?

It is the server's greeting after a successful TCP connection. It confirms DNS, firewall, and service availability, but says nothing about authentication or delivery.

What is the difference between 250 and 235?

235 means the server accepted your credentials. 250 is a general success used for EHLO, MAIL FROM, RCPT TO, and message acceptance. If you see 235 but no final 250 after DATA, your login works but the message submission failed.

Why did my test pass but the email went to spam?

The 250 queued response only proves the sending server accepted the message. Spam placement depends on SPF, DKIM, DMARC, IP reputation, and content, all evaluated downstream. Send a test to a mailbox you control to see actual placement.

Can I test SMTP without installing anything?

Yes. A browser-based tester performs the full session (connect, EHLO, TLS, AUTH, optional message) and streams the transcript back with credentials redacted.

Is it safe to enter real credentials in an SMTP test?

With SMTP Tester, credentials exist only in memory for the duration of the request, are never logged, and are redacted from the transcript before it reaches your browser. Over the wire they are protected by the TLS session you see in the transcript.

Try it on your own server

Run these settings against your SMTP server and watch the live, credential-redacted protocol transcript.

Open SMTP Tester