summaryrefslogtreecommitdiff
path: root/doc/README.smtpreply
diff options
context:
space:
mode:
Diffstat (limited to 'doc/README.smtpreply')
-rw-r--r--doc/README.smtpreply72
1 files changed, 72 insertions, 0 deletions
diff --git a/doc/README.smtpreply b/doc/README.smtpreply
new file mode 100644
index 0000000..84ff016
--- /dev/null
+++ b/doc/README.smtpreply
@@ -0,0 +1,72 @@
+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'.
+