On Sat, Apr 19, 2014 at 11:10:13PM +0200, Axel Luttgens wrote:

> >> Can it be avoided?
> > 
> > No.
> 
> Well... This is perhaps the opportunity for a feature request?

Unlikely to happen in this case.  Far more important than the user
understanding the message is that the postmaster understands the
context in which the message happens.

> Such messages are liable to be shown in a MUA user interface.

Some user interfaces attempt to base the user interface on the DSN
code, you should prepend the closest RFC 3463 DSN code to your
error message.

    http://tools.ietf.org/html/rfc3463#section-3.3

> But end-users often tend not to read such messages, especially
> when they are a bit complicated, too technical.
>
> Would there be an easy way, I mean without rewriting a bunch of
> code, to avoid such frightening tech pieces ("<END-OF-MESSAGE>",
> "End-of-data"...)?

As "frightening" as they may be, they concisely communicate the
SMTP context in which the message was rejected.  Which enables the
postmaster to respond to problem reports.

If you can suggest a concise less scary version of "END-OF-MESSAGE"
or "End-of-data" as cosmetic change that simply replaces existing
names of SMTP states with friendlier unambiguous names, please do.

src/smtpd/smtpd.h:

    #define SMTPD_AFTER_CONNECT     "CONNECT"
    #define SMTPD_AFTER_DATA        "DATA content"
    #define SMTPD_AFTER_DOT         "END-OF-MESSAGE"

    #define SMTPD_AFTER_CONNECT     "CONNECT"
    #define SMTPD_AFTER_DATA        "DATA content"
    #define SMTPD_AFTER_DOT         "END-OF-MESSAGE"

     /*
      * Other stages. These are sometimes used to change the way information is
      * logged or what information will be available for access control.
      */
    #define SMTPD_CMD_HELO          "HELO"
    #define SMTPD_CMD_EHLO          "EHLO"
    #define SMTPD_CMD_STARTTLS      "STARTTLS"
    #define SMTPD_CMD_AUTH          "AUTH"
    #define SMTPD_CMD_MAIL          "MAIL"
    #define SMTPD_CMD_RCPT          "RCPT"
    #define SMTPD_CMD_DATA          "DATA"
    #define SMTPD_CMD_EOD           SMTPD_AFTER_DOT /* XXX Was: END-OF-DATA */
    #define SMTPD_CMD_RSET          "RSET"
    #define SMTPD_CMD_NOOP          "NOOP"
    #define SMTPD_CMD_VRFY          "VRFY"
    #define SMTPD_CMD_ETRN          "ETRN"
    #define SMTPD_CMD_QUIT          "QUIT"
    #define SMTPD_CMD_XCLIENT       "XCLIENT"
    #define SMTPD_CMD_XFORWARD      "XFORWARD"
    #define SMTPD_CMD_UNKNOWN       "UNKNOWN"

src/smtpd/smtpd_dsn_fix.h:

     /*
      * Internal interface.
      */
    #define SMTPD_NAME_CLIENT       "Client host"
    #define SMTPD_NAME_REV_CLIENT   "Unverified Client host"
    #define SMTPD_NAME_CCERT        "Client certificate"
    #define SMTPD_NAME_SASL_USER    "SASL login name"
    #define SMTPD_NAME_HELO         "Helo command"
    #define SMTPD_NAME_SENDER       "Sender address"
    #define SMTPD_NAME_RECIPIENT    "Recipient address"
    #define SMTPD_NAME_ETRN         "Etrn command"
    #define SMTPD_NAME_DATA         "Data command"
    #define SMTPD_NAME_EOD          "End-of-data"

-- 
        Viktor.

Reply via email to