James Feeney:
> For the milter to "reject a command" implies that the milter is
> rejecting a command from the MTA for some reason, which makes no
> sense, since such behavior would appear to contradict the milter
> protocol described in the milter protocol article.

Yet that is EXACTLY what happens.

Below is the list of the COMMANDs that the MTA can send to a Milter.

- Some MTA-to-Milter COMMANDS convey an SMTP protocol event such as SMFIC_HELO.
- Some MTA-to-Milter COMMANDS convey message content such as SMFIC_HEADER.
- Some MTA-to-Milter COMMANDS are concerned with the MTA-Milter protocol.

   /*
    * Commands from MTA to filter.
    */
  #define SMFIC_ABORT             'A'     /* Abort */
  #define SMFIC_BODY              'B'     /* Body chunk */
  #define SMFIC_CONNECT           'C'     /* Connection information */
  #define SMFIC_MACRO             'D'     /* Define macro */
  #define SMFIC_BODYEOB           'E'     /* final body chunk (End) */
  #define SMFIC_HELO              'H'     /* HELO/EHLO */
  #define SMFIC_HEADER            'L'     /* Header */
  #define SMFIC_MAIL              'M'     /* MAIL from */
  #define SMFIC_EOH               'N'     /* EOH */
  #define SMFIC_OPTNEG            'O'     /* Option negotiation */
  #define SMFIC_QUIT              'Q'     /* QUIT */
  #define SMFIC_RCPT              'R'     /* RCPT to */
  #define SMFIC_DATA              'T'     /* DATA */
  #define SMFIC_UNKNOWN           'U'     /* Any unknown command */
   /* Introduced with Sendmail 8.14. */
  #define SMFIC_QUIT_NC           'K'     /* Quit + new connection */

And below is the list of REPONSEs that the Milter can send to the MTA.

- Some Milter-to-MTA RESPONSEs specify a decision such as SMFIR_REJECT.
- Some Milter-to-MTA RESPONSEs specify a modification such as SMFIR_ADDHEADER.
- Some Milter-to-MTA RESPONSEs are concerned with the MTA-Milter protocol.

A decision is required, but modifications are optional.

   /*
    * Responses from filter to MTA.
    */
  #define SMFIR_ADDRCPT           '+'     /* add recipient */
  #define SMFIR_DELRCPT           '-'     /* remove recipient */
  #define SMFIR_ACCEPT            'a'     /* accept */
  #define SMFIR_REPLBODY          'b'     /* replace body (chunk) */
  #define SMFIR_CONTINUE          'c'     /* continue */
  #define SMFIR_DISCARD           'd'     /* discard */
  #define SMFIR_CONN_FAIL         'f'     /* cause a connection failure */
  #define SMFIR_CHGHEADER         'm'     /* change header */
  #define SMFIR_PROGRESS          'p'     /* progress */
  #define SMFIR_REJECT            'r'     /* reject */
  #define SMFIR_TEMPFAIL          't'     /* tempfail */
  #define SMFIR_SHUTDOWN          '4'     /* 421: shutdown (internal to MTA) */
  #define SMFIR_ADDHEADER         'h'     /* add header */
  #define SMFIR_INSHEADER         'i'     /* insert header */
  #define SMFIR_REPLYCODE         'y'     /* reply code etc */
  #define SMFIR_QUARANTINE        'q'     /* quarantine */
   /* Introduced with Sendmail 8.14. */
  #define SMFIR_SKIP              's'     /* skip further events of this type */
  #define SMFIR_CHGFROM           'e'     /* change sender (incl. ESMTP args) */
  #define SMFIR_ADDRCPT_PAR       '2'     /* add recipient (incl. ESMTP args) */
  #define SMFIR_SETSYMLIST        'l'     /* set list of symbols (macros) */

In summary, the MTA sends a command to a Milter, and the Milter
responds to the MTA with a decision or with a modification.

I expect that more information is not going to help you. I wrote
this message primarily for other people who find this discussion
through a search engine.

        Wietse

Reply via email to