SMTP code 503 means the client issued a valid command at the wrong point in the SMTP conversation. SMTP is a stateful protocol with a strict command sequence: the client must send EHLO/HELO first, then MAIL FROM, then at least one RCPT TO, then DATA. Sending commands out of this order (e.g., RCPT TO before MAIL FROM, DATA before RCPT TO, or a second MAIL FROM without RSET) triggers 503. This error also occurs when AUTH is attempted after MAIL FROM, or when STARTTLS is issued after the session has already begun processing mail.
The client attempted to specify a recipient before establishing the sender. The correct sequence is MAIL FROM first, then RCPT TO. This can happen in applications that construct the SMTP conversation incorrectly.
The client issued DATA before any RCPT TO was accepted (returned 250). Even if RCPT TO was sent, if all recipients were rejected (550), there are no valid recipients and DATA will return 503.
The client sent a second MAIL FROM after the first was accepted, without first sending RSET to reset the transaction. Each SMTP session can only have one active MAIL FROM at a time.
The client tried to authenticate after already starting a mail transaction (after MAIL FROM). AUTH must be sent before MAIL FROM. Reset with RSET first, then AUTH, then start the mail transaction.
The required order is: EHLO -> (STARTTLS ->) (AUTH ->) MAIL FROM -> RCPT TO -> DATA -> message -> QUIT. Each step must succeed (2xx/3xx) before proceeding to the next.
If you need to start over mid-session (e.g., to change the sender), send RSET first. This clears the current MAIL FROM and RCPT TO state without disconnecting.
RSET
Connect and walk through each step to verify the sequence. Watch for 503 at each step to identify where the ordering breaks down.
telnet mail.example.com 25
If using a programming library, enable debug logging to see the exact command sequence. Some libraries batch or reorder commands incorrectly, especially when using SMTP pipelining.
The server did not recognize the SMTP command. The command may be misspelled, malformed, or unsupported.
The SMTP command was recognized but the parameters or arguments are malformed or invalid.
The recipient's mailbox does not exist, or the server has permanently rejected the message due to policy.