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