SMTP Reply Codes with s/qmail ============================= SMTP allows to reject Sessions based on some technical and/or political criteria, which are not well expressed in the RFCs (2821, 2554, 2505, 1122). As protocol mechanism between the client and the server are defined as Commands and Replies. SMTP uses a three-letter Reply Code. The first digit tells whether a command was accepted and completed (2), transaction begin (3), or whether there was as transient (4) or permanent failure (5). In addition, an explanatory description may be given. RFC 1893 introduces a concept of "Enhanced Mail System Status Codes" (EMSSC) which should provide easy parseable SMTP server conditions and transaction stati, usually at the end of the SMTP reply and included in paranthesis, eg. (#5.5.1). The STMP Reply Codes and the EMSSC are detailed in the corresponding RFCs, but don't fit well to each other, thus either providing redundant information or almost no additional information at all. In short, the EMSSC is nowadays almost meaningless. Here's a breakdown of s/qmail's SMTP Reply Codes, informational texts, and the used EMSSC. Reply Informational text (EMSSC) --------------------------------------------------- 400 proabably greylisted (#4.3.0) [REPLY_GREYLISTED] 421 unable to check recipients (#4.3.0) 421 greylisted (#4.3.0) [REPLY_GREYLISTED] 450 sorry, mailbox currently unavailable (#4.2.1) [1] 450 greylisted (#4.3.0) [REPLY_GREYLISTED] 451 DNS temporary failure (#4.3.0) 452 sorry, too many recipients (#4.5.3) 454 TLS not available due to temporary reason (#5.7.3) 501 auth exchange canceled (#5.0.0) 501 malformed auth input (#5.5.4) 503 you're already authenticated (#5.5.0) 503 no auth during mail transaction (#5.5.0) 503 sorry, SMTP Authentication not available (#5.7.3) 503 DATA command not accepted at this time (#5.5.1) 504 auth type unimplemented (#5.5.1) 535 authorization failed (#5.7.1) 535 STARTTLS required (#5.7.1) 550 sorry, invalid HELO/EHLO greeting [*] (#5.7.1) [REPLY_HELO] 550 sorry, your envelope recipient is in my badrcptto list [*] (#5.7.1) [REPLY_BADRCPTTO] 550 sorry, mailbox currently unavailable [*] (#4.2.1) [2] [REPLY_MAILBOX] 552 sorry, that message size exceeds my databytes limit [*] (#5.3.4) [REPLY_MAXSIZE] 553 sorry, your envelope sender is in my badmailfrom list [*] (#5.7.1) [REPLY_BADMAILFROM] 553 sorry, invalid sender address specified [*] (#5.7.1) [REPLY_SENDERINVALID] 553 sorry, that domain isn't in my list of allowed rcpthosts [*] (#5.7.1) [REPLY_NOGATEWAY] 553 sorry, your envelope sender domain must exist [*] (#5.7.1) [REPLY_SENDEREXIST] 554 too many hops, this message is looping (#5.4.6) 554 sorry, invalid message content [*] (#5.3.2) [REPLY_CONTENT] Note: [1] or [2] depends on setting of environment variable RECIPIENTS550; default [2]. [*] Additional text can be included here via environment variables provided in paranthesis, eg. REPLY_HELO='see RFC 2821 section 3.6'.