- SMTP, defined
- SMTP is the protocol mail servers use to hand messages to each other, a text conversation over a TCP connection where each command gets a three-digit reply.
The conversation is readable. A server announces itself, the sender says EHLO, declares who the mail is from, names each recipient, then sends the body after a DATA command. You can hold the whole exchange by hand over telnet.
Every reply is a code and a human-readable line. 2xx means fine, 4xx means try later, 5xx means stop. That three-digit vocabulary is what makes verification possible at all.
Verification uses the first half of the conversation and stops. Because a server commits to a recipient at RCPT TO, before any content is transferred, there is a clean point to ask and then leave.
Submission from your own mail client is a different port and a different posture: 587 with authentication and TLS. Server-to-server transfer on port 25 is the unauthenticated one.
How ZapBounce reports it
Our engine speaks SMTP directly to the recipient's MX host on port 25, rather than calling a third-party verification API. The reply code we receive is passed back in smtp_code, so the result can be traced to what the server said.
Taking one reply line apart
Every server reply follows the same grammar, and once you can read one you can read them all. Take this line from a Postfix server: 550 5.1.1 <jo@example.com>: Recipient address rejected: User unknown in local recipient table.
The first three digits are the basic reply code. Its leading digit gives the class, where 2 is success, 4 is a temporary failure and 5 is a permanent one. The second group, 5.1.1, is an enhanced status code added by a later standard, RFC 3463. Its middle number names the subject: 1 for addressing, 2 for the mailbox, 4 for network and routing, 7 for security and policy.
Everything after the codes is free text for humans, and no standard governs the wording. Software should act on the numbers and keep the text for people. When the two disagree, which happens on badly configured servers, the text is often the more honest half.
Four ports, and why your laptop can't use one of them
Port 25 carries mail between servers. Your mail app uses 587 to submit outgoing messages, with a login and STARTTLS. There's also 465, which is submission over TLS from the first byte and was formally brought back into the standards by RFC 8314. Some providers offer 2525 as an unofficial fallback for networks that block the others.
Most home internet providers block outbound connections on port 25, and several large cloud platforms restrict it by default as well. They do it because infected home computers sending spam straight to mail servers used to be a huge share of all junk mail.
That block is why you can't run a serious verifier from an office connection, and why the hand-typed telnet test fails from many networks with a timeout instead of a banner. SMTP also stops once the receiving server has the message. Reading mail from a mailbox is the job of IMAP or POP, which are separate protocols.
SMTP: common questions
Does SMTP encrypt mail?
Not by itself. STARTTLS upgrades a plain connection to TLS, and whether that happens depends on both servers offering and accepting it.
What is the difference between port 25 and port 587?
Port 25 carries server-to-server transfer. Port 587 is submission from a mail client and requires authentication.
Can I test SMTP by hand?
Yes. Telnet to port 25 and type the commands. That manual exchange is exactly what a verifier automates.