diff dccm.0 @ 0:c7f6b056b673

First import of vendor version
author Peter Gervai <grin@grin.hu>
date Tue, 10 Mar 2009 13:49:58 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dccm.0	Tue Mar 10 13:49:58 2009 +0100
@@ -0,0 +1,636 @@
+dccm(8)               Distributed Checksum Clearinghouse               dccm(8)
+
+NNAAMMEE
+     ddccccmm -- Distributed Checksum Clearinghouse Milter Interface
+
+SSYYNNOOPPSSIISS
+     ddccccmm [--VVddbbxxAANNQQ] [--GG _o_n | _o_f_f | _n_o_I_P | _I_P_m_a_s_k_/_x_x] [--hh _h_o_m_e_d_i_r] [--II _u_s_e_r]
+          [--pp _p_r_o_t_o_c_o_l_:_f_i_l_e_n_a_m_e | _p_r_o_t_o_c_o_l_:_p_o_r_t_@_h_o_s_t] [--mm _m_a_p]
+          [--ww _w_h_i_t_e_c_l_n_t] [--UU _u_s_e_r_d_i_r_s] [--aa _I_G_N_O_R_E | _R_E_J_E_C_T | _D_I_S_C_A_R_D]
+          [--tt _t_y_p_e_,[_l_o_g_-_t_h_o_l_d_,]_r_e_j_-_t_h_o_l_d] [--gg [_n_o_t_-]_t_y_p_e] [--SS _h_e_a_d_e_r]
+          [--ll _l_o_g_d_i_r] [--RR _r_u_n_d_i_r] [--rr _r_e_j_e_c_t_i_o_n_-_m_s_g] [--jj _m_a_x_j_o_b_s]
+          [--BB _d_n_s_b_l_-_o_p_t_i_o_n] [--LL _l_t_y_p_e_,_f_a_c_i_l_i_t_y_._l_e_v_e_l]
+
+DDEESSCCRRIIPPTTIIOONN
+     ddccccmm is a daemon built with the sendmail milter interface intended to
+     connect sendmail(8) to DCC servers.  When built with the milter filter
+     machinery and configured to talk to ddccccmm in the _s_e_n_d_m_a_i_l_._c_f file, send-
+     mail passes all email to ddccccmm which in turn reports related checksums to
+     the nearest DCC server.  ddccccmm then adds an _X_-_D_C_C SMTP header line to the
+     message.  Sendmail is told to reject the message if it is unsolicited
+     bulk mail.
+
+     DDccccmm sends reports of checksums related to mail received by DCC clients
+     and queries about the total number of reports of particular checksums.  A
+     DCC server receives _n_o mail, address, headers, or other information, but
+     only cryptographically secure checksums of such information.  A DCC
+     server cannot determine the text or other information that corresponds to
+     the checksums it receives.  Its only acts as a clearinghouse of counts
+     for checksums computed by clients.  For complete privacy as far as the
+     DCC is concerned, the checksums of purely internal mail or other mail
+     that is known to not be unsolicited bulk can be listed in a whitelist to
+     not be reported to the DCC server.
+
+     Since the checksums of messages that are whitelisted locally by the --ww
+     _w_h_i_t_e_c_l_n_t file are not reported to the DCC server, ddccccmm knows nothing
+     about the total recipient counts for their checksums and so cannot add
+     _X_-_D_C_C header lines to such messages.  Sendmail does not tell ddccccmm about
+     messages that are not received by sendmail via SMTP, including messages
+     submitted locally and received via UUCP, and so they also do not receive
+     _X_-_D_C_C header lines.
+
+     Enable the daemon and put its parameters in the _d_c_c___c_o_n_f file and start
+     the daemon with the _/_v_a_r_/_d_c_c_/_l_i_b_e_x_e_c_/_s_t_a_r_t_-_d_c_c_m or _v_a_r_/_d_c_c_/_l_i_b_e_x_e_c_/_r_c_D_C_C
+     script.
+
+     The list of servers that ddccccmm contacts is in the memory mapped file _m_a_p
+     shared by local DCC clients.  The file is  maintained with cdcc(8).
+
+   OOPPTTIIOONNSS
+     The following options are available:
+
+     --VV   displays the version of ddccccmm.
+
+     --dd   enables debugging output from the DCC client software.  Additional
+          --dd options increase the number of messages.  A single --dd
+           aborted SMTP transactions including those from some "dictionary
+          attacks."
+
+     --bb   causes the daemon to not detach itself from the controlling tty and
+          put itself into the background.
+
+     --xx   causes the daemon to try "extra hard" to contact a DCC server.
+          Since it is usually more important to deliver mail than to report
+          its checksums, ddccccmm normally does not delay too long while trying to
+          contact a DCC server.  It will not try again for several seconds
+          after a failure.  With --xx, it will always try to contact the DCC
+          server and it will tell the MTA to answer the DATA command with a
+          4yz temporary failure.
+
+     --AA   adds to existing X-DCC headers in the message instead of replacing
+          existing headers of the brand of the current server.
+
+     --NN   neither adds, deletes, nor replaces existing X-DCC headers in the
+          message.  Each message is logged, rejected, and otherwise handled
+          the same.
+
+     --QQ   only queries the DCC server about the checksums of messages instead
+          of reporting and querying.  This is useful when ddccccmm is used to fil-
+          ter mail that has already been reported to a DCC server by another
+          DCC client.  No single mail message should be reported to a DCC
+          server more than once per recipient, because each report will
+          increase the apparent "bulkness" of the message.
+
+          It is better to use _M_X_D_C_C lines in the global _w_h_i_t_e_c_l_n_t file for
+          your MX mail servers that use DCC than --QQ.
+
+     --GG _o_n | _o_f_f | _n_o_I_P | _I_P_m_a_s_k_/_x_x
+          controls _g_r_e_y_l_i_s_t_i_n_g.  At least one working greylist server must be
+          listed in the _m_a_p file in the DCC home directory.  If more than one
+          is named, they must "flood" or change checksums and they must use
+          the same --GG parameters.  See dccd(8).  Usually all dccm or dccifd
+          DCC client processes use the same --GG parameters.
+
+          _I_P_m_a_s_k_/_x_x and _n_o_I_P remove part or all of the IP address from the
+          greylist triple.  The CIDR block size, _x_x, must be between 1 and
+          128.  96 is added to block sizes smaller than 33 to make them appro-
+          priate for the IPv6 addresses used by the DCC.  _I_P_m_a_s_k_/_9_6 differs
+          from _n_o_I_P for IPv4 addresses, because the former retains the IPv4 to
+          IPv6 mapping prefix.
+
+     --hh _h_o_m_e_d_i_r
+          overrides the default DCC home directory, _/_v_a_r_/_d_c_c.
+
+     --II _u_s_e_r
+          specifies the UID and GID of the process.
+
+     --pp _p_r_o_t_o_c_o_l_:_f_i_l_e_n_a_m_e | _p_r_o_t_o_c_o_l_:_p_o_r_t_@_h_o_s_t
+          specifies the protocol and address by which sendmail will contact
+          ddccccmm.  The default is a UNIX domain socket in the "run" directory,
+          _/_v_a_r_/_r_u_n_/_d_c_c_/_d_c_c_m.  (See also --RR)) This protocol and address must
+          match the value in _s_e_n_d_m_a_i_l_._c_f.  This mechanism can be used to con-
+          nect ddccccmm on one computer to sendmail on another computer when a
+          port and host name or IP address are used.
+
+     --mm _m_a_p
+          specifies a name or path of the memory mapped parameter file instead
+          of the default _m_a_p file in the DCC home directory.  It should be
+          created with the cdcc(8) command.
+
+     --ww _w_h_i_t_e_c_l_n_t
+          specifies an optional file containing filtering parameters as well
+          as SMTP client IP addresses, SMTP envelope values, and header values
+          of mail that is spam or is not spam and does not need a _X_-_D_C_C
+          header, and whose checksums should not be reported to the DCC
+          server.
+
+          If the pathname _w_h_i_t_e_c_l_n_t is not absolute, it is relative to the DCC
+          home directory.
+
+          The format of the ddccccmm whiteclnt file is the same as the _w_h_i_t_e_l_i_s_t
+          files used by dbclean(8) and the _w_h_i_t_e_c_l_n_t file used by dccproc(8).
+          See dcc(8) for a description of DCC white and blacklists.  Because
+          the contents of the _w_h_i_t_e_c_l_n_t file are used frequently, a companion
+          file is automatically created and maintained.  It has the same path-
+          name but with an added suffix of _._d_c_c_w and contains a memory mapped
+          hash table of the main file.
+
+          A whitelist entry ("OK") or two or more semi-whitelistings ("OK2")
+          for one of the message's checksums prevents all of the message's
+          checksums from being reported to the DCC server and the addition of
+          a _X_-_D_C_C header line by ddccccmm A whitelist entry for a checksum also
+          prevents rejecting or discarding the message based on DCC recipient
+          counts as specified by --aa and --tt.  Otherwise, one or more checksums
+          with blacklisting entries ("MANY") cause all of the message's check-
+          sums to be reported to the server with an addressee count of "MANY".
+
+          If the message has a single recipient, an _e_n_v___T_o _w_h_i_t_e_c_l_n_t entry of
+          "OK" for the checksum of its recipient address acts like any other
+          _w_h_i_t_e_c_l_n_t entry of "OK."  When the SMTP message has more than one
+          recipient, the effects can be complicated.  When a message has sev-
+          eral recipients with some but not all listed in the _w_h_i_t_e_c_l_n_t file,
+          ddccccmm tries comply with the wishes of the users who want filtering as
+          well as those who don't by silently not delivering the message to
+          those who want filtering (i.e. are not whitelisted) and delivering
+          the message to don't want filtering.
+
+     --UU _u_s_e_r_d_i_r_s
+          enables per-user _w_h_i_t_e_c_l_n_t files and log directories.  Each target
+          of a message can have a directory of log files named
+          _u_s_e_d_i_r_s_/_$_{_d_c_c___u_s_e_r_d_i_r_}_/_l_o_g where _$_{_d_c_c___u_s_e_r_d_i_r_} is the _s_e_n_d_m_a_i_l_._c_f
+          macro described below.  If _$_{_d_c_c___u_s_e_r_d_i_r_} is not set,
+          _u_s_e_r_d_i_r_s_/_$_{_r_c_p_t___m_a_i_l_e_r_}_/_$_{_r_c_p_t___a_d_d_r_}_/_l_o_g is used.  The most likely
+          value of _m_a_i_l_e_r is _l_o_c_a_l.  Appropriate values for both
+          _$_{_r_c_p_t___m_a_i_l_e_r_} and _$_{_r_c_p_t___a_d_d_r_} can be seen by examining _e_n_v___T_o
+          lines in --ll _l_o_g_d_i_r files.  If it is not absolute, _u_s_e_r_d_i_r_s is rela-
+          tive to the DCC home directory.  The directory containing the log
+          files must be named _l_o_g and it must be writable by the ddccccmm process.
+          Each log directory must exist or logging for the corresponding is
+          silently disabled.  The files created in the log directory are owned
+          by the UID of the ddccccmm process, but they have _g_r_o_u_p and _o_t_h_e_r read
+          and write permissions copied from the corresponding _l_o_g directory.
+          To ensure the privacy of mail, it may be good to make the directo-
+          ries readable only by _o_w_n_e_r and _g_r_o_u_p, and to use a cron script that
+          changes the owner of each file to match the grandparent _a_d_d_r direc-
+          tory.
+
+          There can also be a per -user whitelist file named
+          _u_s_e_r_d_i_r_s_/_$_{_d_c_c___u_s_e_r_d_i_r_}_/_w_h_i_t_e_c_l_n_t or if _$_{_d_c_c___u_s_e_r_d_i_r_} is not set,
+          _u_s_e_r_d_i_r_s_/_$_{_r_c_p_t___m_a_i_l_e_r_}_/_$_{_r_c_p_t___a_d_d_r_} per-user whitelist files.  Any
+          checksum that is not white- or blacklisted by an individual
+          addressee's _w_h_i_t_e_c_l_n_t file  is checked in the main --ww --wwhhiitteeccllnntt
+          file.  A missing per-addressee _w_h_i_t_e_c_l_n_t file is the same as an
+          empty file.  Relative paths for files included in per-addressee
+          files are resolved in the DCC home directory.  The _w_h_i_t_e_c_l_n_t files
+          and the _a_d_d_r directories containing them must be writable by the
+          ddccccmm process.
+
+          _O_p_t_i_o_n lines in per-user whiteclnt files can be used to modify many
+          aspects of ddccccmm filtering, as described in the main dcc man page.
+          For example, an _o_p_t_i_o_n _d_c_c_-_o_f_f line turns off DCC filtering for
+          individual mailboxes.
+
+     --aa _I_G_N_O_R_E | _R_E_J_E_C_T | _D_I_S_C_A_R_D
+          specifies the action taken when DCC server counts or --tt thresholds
+          say that a message is unsolicited and bulk.  _I_G_N_O_R_E causes the mes-
+          sage to be unaffected except for adding the _X_-_D_C_C header line to the
+          message.  This turns off DCC filtering.
+
+          Spam can also be _R_E_J_E_C_Ted or accepted and silently _D_I_S_C_A_R_Ded without
+          being delivered to local mailboxes.  The default is _R_E_J_E_C_T.
+
+          Mail forwarded via IP addresses marked _M_X or _M_X_D_C_C in the main
+          _w_h_i_t_e_c_l_n_t file is treated as if --aa _D_I_S_C_A_R_D were specified.  This
+          prevents "bouncing" spam.
+
+          Determinations that mail is or is not spam from sendmail via
+          _$_{_d_c_c___i_s_s_p_a_m_} or _$_{_d_c_c___n_o_t_s_p_a_m_} macros override --aa.  The effects of
+          the --ww _w_h_i_t_e_c_l_n_t are not affected by --aa.
+
+     --tt _t_y_p_e_,[_l_o_g_-_t_h_o_l_d_,]_r_e_j_-_t_h_o_l_d
+          sets logging and "spam" thresholds for checksum _t_y_p_e.  The checksum
+          types are _I_P, _e_n_v___F_r_o_m, _F_r_o_m, _M_e_s_s_a_g_e_-_I_D, _s_u_b_s_t_i_t_u_t_e, _R_e_c_e_i_v_e_d,
+          _B_o_d_y, _F_u_z_1, _F_u_z_2, _r_e_p_-_t_o_t_a_l, and _r_e_p.  The first six, _I_P through
+          _s_u_b_s_t_i_t_u_t_e, have no effect except when a local DCC server configured
+          with --KK is used.  The _s_u_b_s_t_i_t_u_t_e thresholds apply to the first sub-
+          stitute heading encountered in the mail message.  The string _A_L_L
+          sets thresholds for all types, but is unlikely to be useful except
+          for setting logging thresholds.  The string _C_M_N specifies the com-
+          monly used checksums _B_o_d_y, _F_u_z_1, and _F_u_z_2.  _R_e_j_-_t_h_o_l_d and _l_o_g_-_t_h_o_l_d
+          must be numbers, the string _N_E_V_E_R, or the string _M_A_N_Y indicating
+          millions of targets.  Counts from the DCC server as large as the
+          threshold for any single type are taken as sufficient evidence that
+          the message should be logged or rejected.
+
+          _L_o_g_-_t_h_o_l_d is the threshold at which messages are logged.  It can be
+          handy to log messages at a lower threshold to find solicited bulk
+          mail sources such as mailing lists.  If no logging threshold is set,
+          only rejected mail and messages with complicated combinations of
+          white and blacklisting are logged.  Messages that reach at least one
+          of their rejection thresholds are logged regardless of logging
+          thresholds.
+
+          _R_e_j_-_t_h_o_l_d is the threshold at which messages are considered "bulk,"
+          and so should be rejected or discarded if not whitelisted.
+
+          DCC Reputation thresholds in the commercial version of the DCC are
+          controlled by thresholds on checksum types _r_e_p and _r_e_p_-_t_o_t_a_l.  Mes-
+          sages from an IP address that the DCC database says has sent more
+          than --tt _r_e_p_-_t_o_t_a_l_,_l_o_g_-_t_h_o_l_d messages are logged.  A DCC Reputation
+          is computed for messages received from IP addresses that have sent
+          more than --tt _r_e_p_-_t_o_t_a_l_,_l_o_g_-_t_h_o_l_d messages.  The DCC Reputation of an
+          IP address is the percentage of its messages that have been detected
+          as bulk or having at least 10 recipients.  The defaults are equiva-
+          lent to --tt _r_e_p_,_n_e_v_e_r and --tt _r_e_p_-_t_o_t_a_l_,_n_e_v_e_r_,_2_0.
+
+          Bad DCC Reputations do not reject mail unless enabled by an _o_p_t_i_o_n
+          _D_C_C_-_r_e_p_-_o_n line in a _w_h_i_t_e_c_l_n_t file.
+
+          The checksums of locally whitelisted messages are not checked with
+          the DCC server and so only the number of targets of the current copy
+          of a whitelisted message are compared against the thresholds.
+
+          The default is _A_L_L_,_N_E_V_E_R, so that nothing is discarded, rejected, or
+          logged.  A common choice is _C_M_N_,_2_5_,_5_0 to reject or discard mail with
+          common bodies except as overridden by the whitelist of the DCC
+          server, the sendmail _$_{_d_c_c___i_s_s_p_a_m_} and _$_{_d_c_c___n_o_t_s_p_a_m_} macros, and
+          --gg, and --ww.
+
+     --gg [_n_o_t_-]_t_y_p_e
+          indicates that whitelisted, _O_K or _O_K_2, counts from the DCC server
+          for a type of checksum are to be believed.  They should be ignored
+          if prefixed with _n_o_t_-.  _T_y_p_e is one of the same set of strings as
+          for --tt.  Only _I_P, _e_n_v___F_r_o_m, and _F_r_o_m are likely choices.  By default
+          all three are honored, and hence the need for _n_o_t_-.
+
+     --SS _h_d_r
+          adds to the list of substitute or locally chosen headers that are
+          checked with the --ww _w_h_i_t_e_c_l_n_t file and sent to the DCC server.  The
+          checksum of the last header of type _h_d_r found in the message is
+          checked.  _H_d_r can be _H_E_L_O to specify the SMTP envelope HELO value.
+          _H_d_r can also be _m_a_i_l___h_o_s_t to specify the sendmail "resolved" host
+          name from the Mail_from value in the SMTP envelope.  As many as six
+          different substitute headers can be specified, but only the checksum
+          of the first of the six will be sent to the DCC server.
+
+     --ll _l_o_g_d_i_r
+          specifies a directory in which files containing copies of messages
+          processed by ddccccmm are kept.  They can be copied to per-user directo-
+          ries specified with --UU.  Information about other recipients of a
+          message is deleted from the per-user copies.
+
+          See the FILES section below concerning the contents of the files.
+          See also the _o_p_t_i_o_n _l_o_g_-_s_u_b_d_i_r_e_c_t_o_r_y_-_{_d_a_y_,_h_o_u_r_,_m_i_n_u_t_e_} lines in
+          _w_h_i_t_e_c_l_n_t files described in dcc(8).
+
+          The directory is relative to the DCC home directory if it is not
+          absolute
+
+     --RR _r_u_n_d_i_r
+          specifies the "run" directory where the UNIX domain socket and file
+          containing the daemon's process ID are stored.  The default value is
+          /var/run/dcc .
+
+     --rr _r_e_j_e_c_t_i_o_n_-_m_s_g
+          specifies the rejection message in --oo proxy mode for unsolicited
+          bulk mail or for mail temporarily blocked by _g_r_e_y_l_i_s_t_i_n_g when --GG is
+          specified.  The first --rr _r_e_j_e_c_t_i_o_n_-_m_s_g replaces the default bulk
+          mail rejection message, "5.7.1 550 mail %ID from %CIP rejected by
+          DCC".  The second replaces "4.2.1 452 mail %ID from %CIP temporary
+          greylist embargoed".  The third --rr _r_e_j_e_c_t_i_o_n_-_m_s_g replaces the
+          default SMTP rejection message "5.7.1 550 %ID bad reputation; see
+          http://commercial-dcc.rhyolite.com/cgi-bin/reps.cgi?tgt=%CIP" for
+          mail with bad DCC Reputations.  If _r_e_j_e_c_t_i_o_n_-_m_s_g is the zero-length
+          string, the --rr setting is counted but the corresponding message is
+          not changed.
+
+          _R_e_j_e_c_t_i_o_n_-_m_s_g can contain specific information about the mail mes-
+          sage.  The following strings starting with % are replaced with the
+          corresponding values:
+              %ID       message ID such as the unique part of log file name or
+                        sendmail queue ID
+              %CIP      SMTP client IP address
+              %BTYPE    type of DNS blacklist hit, such as "SMTP client",
+                        "mail_host", or "URL NS"
+              %BTGT     IP address or name declared bad by DNS blacklist
+              %BPROBE   domain name found in DNS blacklist such as
+                        4.3.2.10.example.com
+              %BRESULT  value of the %BPROBE domain name found in DNS black-
+                        list
+
+          A common alternate for the bulk mail rejection message is "4.7.1 451
+          Access denied by DCC" to tell the sending mail system to continue
+          trying.  Use a 4yz response with caution, because it is likely to
+          delay for days a delivery failure message for false positives.  If
+          the rejection message does not start with an RFC 1893 status code
+          and RFC 2821 reply code, 5.7.1 and 550 or 4.2.1 and 452 are used.
+
+          See also --BB _s_e_t_:_r_e_j_-_m_s_g_=_r_e_j_e_c_t_i_o_n_-_m_s_g to set the status message for
+          mail rejected by DNS blacklists.
+
+     --jj _m_a_x_j_o_b_s
+          limits the number of simultaneous requests that will be processed.
+          The default value is the maximum number that seems to be possible
+          given system limits on open files, select() bit masks, and so forth.
+          Start ddccccmm with --dd and see the starting message in the system log to
+          see the limit.
+
+     --BB _d_n_s_b_l_-_o_p_t_i_o_n
+          enables DNS blacklist checks of the SMTP client IP address, SMTP
+          envelope Mail_From sender domain name, and of host names in URLs in
+          the message body.  Body URL blacklisting has too many false posi-
+          tives to use on abuse mailboxes.  It is less effective than
+          greylisting with dccm(8) or dccifd(8) but can be useful in situa-
+          tions where greylisting cannot be used.
+
+          _D_n_s_b_l_-_o_p_t_i_o_n is either one of the --BB _s_e_t_:_o_p_t_i_o_n forms or
+              --BB _d_o_m_a_i_n[_,_I_P_a_d_d_r[_/_x_x[_,_b_l_t_y_p_e]]]
+          _D_o_m_a_i_n is a DNS blacklist domain such as example.com that will be
+          searched.  _I_P_a_d_d_r[_/_x_x_x] is the string "any" an IP address in the DNS
+          blacklist that indicates that the mail message should be rejected,
+          or a CIDR block covering results from the DNS blacklist.
+          "127.0.0.2" is assumed if _I_P_a_d_d_r is absent.  IPv6 addresses can be
+          specified with the usual colon (:) notation.  Names can be used
+          instead of numeric addresses.  The type of DNS blacklist is speci-
+          fied by _b_l_t_y_p_e as _n_a_m_e, _I_P_v_4, or _I_P_v_6.  Given an envelope sender
+          domain name or a domain name in a URL of spam.domain.org and a
+          blacklist of type _n_a_m_e, spam.domain.org.example.com will be tried.
+          Blacklist types of _I_P_v_4 and _I_P_v_6 require that the domain name in a
+          URL sender address be resolved into an IPv4 or IPv6 address.  The
+          address is then written as a reversed string of decimal octets to
+          check the DNS blacklist, as in 2.0.0.127.example.com,
+
+          More than one blacklist can be specified and blacklists can be
+          grouped.  All searching within a group is stopped at the first posi-
+          tive result.
+
+          Positive results are ignored after being logged unless an
+          _o_p_t_i_o_n _D_N_S_B_L_-_o_n line appears in the global or per-user _w_h_i_t_e_c_l_n_t
+          file.
+
+          --BB _s_e_t_:_n_o_-_c_l_i_e_n_t
+               says that SMTP client IP addresses and reverse DNS domain names
+               should not be checked in the following blacklists.
+               --BB _s_e_t_:_c_l_i_e_n_t restores the default for the following black-
+               lists.
+
+          --BB _s_e_t_:_n_o_-_m_a_i_l___h_o_s_t
+               says that SMTP envelope Mail_From sender domain names should
+               not be checked in the following blacklists.  --BB _s_e_t_:_m_a_i_l___h_o_s_t
+               restores the default.
+
+          --BB _s_e_t_:_n_o_-_U_R_L
+               says that URLs in the message body should not be checked in the
+               in the following blacklists.  --BB _s_e_t_:_U_R_L restores the default.
+
+          --BB _s_e_t_:_n_o_-_M_X
+               says MX servers of sender Mail_From domain names and host names
+               in URLs should not be checked in the following blacklists.
+               --BB _s_e_t_:_M_X restores the default.
+
+          --BB _s_e_t_:_n_o_-_N_S
+               says DNS servers of sender Mail_From domain names and host
+               names in URLs should not be checked in the following black-
+               lists.  --BB _s_e_t_:_N_S restores the default.
+
+          --BB _s_e_t_:_d_e_f_a_u_l_t_s
+               is equivalent to all of --BB _s_e_t_:_n_o_-_t_e_m_p_-_f_a_i_l --BB _s_e_t_:_c_l_i_e_n_t
+               --BB _s_e_t_:_m_a_i_l___h_o_s_t --BB _s_e_t_:_U_R_L --BB _s_e_t_:_M_X and --BB _s_e_t_:_N_S
+
+          --BB _s_e_t_:_g_r_o_u_p_=_X
+               adds later DNS blacklists specified with
+                   --BB _d_o_m_a_i_n[_,_I_P_a_d_d_r[_/_x_x[_,_b_l_t_y_p_e]]]
+               to group 1, 2, or 3.
+
+          --BB _s_e_t_:_d_e_b_u_g_=_X
+               sets the DNS blacklist logging level
+
+          --BB _s_e_t_:_m_s_g_-_s_e_c_s_=_S
+               limits ddccccmm to _S seconds total for checking all DNS blacklists.
+               The default is 25.
+
+          --BB _s_e_t_:_U_R_L_-_s_e_c_s_=_S
+               limits ddccccmm to at most _S seconds resolving and checking any
+               single URL.  The default is 11.  Some spam contains dozens of
+               URLs and that some "spamvertised" URLs contain host names that
+               need minutes to resolve.  Busy mail systems cannot afford to
+               spend minutes checking each incoming mail message.
+
+          --BB _s_e_t_:_r_e_j_-_m_s_g_=_r_e_j_e_c_t_i_o_n_-_m_s_g
+               sets the SMTP rejection message for the following blacklists.
+               _R_e_j_e_c_t_i_o_n_-_m_s_g must be in the same format as for --rr.  If
+               _r_e_j_e_c_t_i_o_n_-_m_s_g is null, the default is restored.  The default
+               DNS blacklist rejection message is the first message set with
+               --rr.
+
+          --BB _s_e_t_:_t_e_m_p_-_f_a_i_l
+               causes ddccccmm to the MTA to answer the SMTP DATA command with
+                  452 4.2.1 mail %ID from %CIP temporary delayed for DNSBL
+               if any DNS answer required for a DNSBL in the current group
+               times out, including resolving names in URLs.
+
+          --BB _s_e_t_:_n_o_-_t_e_m_p_-_f_a_i_l
+               restores the default of assuming a negative answer for DNS
+               responses that take too long.
+
+          --BB _s_e_t_:_m_a_x_j_o_b_s_=_X
+               sets maximum number of helper processes to _X.  In order to use
+               typical single-threaded DNS resolver libraries, ddccccmm uses
+               fleets of helper processes.  It is rarely a good idea to change
+               the default, which is the same as the maximum number of simul-
+               taneous jobs set with --jj.
+
+          --BB _s_e_t_:_p_r_o_g_p_a_t_h_=_/_v_a_r_/_d_c_c_/_l_i_b_e_x_e_c_/_d_n_s_-_h_e_l_p_e_r
+               changes the path to the helper program.
+
+     --LL _l_t_y_p_e_,_f_a_c_i_l_i_t_y_._l_e_v_e_l
+          specifies how messages should be logged.  _L_t_y_p_e must be _e_r_r_o_r, _i_n_f_o,
+          or _o_f_f to indicate which of the two types of messages are being con-
+          trolled or to turn off all syslog(3) messages from ddccccmm.  _L_e_v_e_l must
+          be a syslog(3) level among _E_M_E_R_G, _A_L_E_R_T, _C_R_I_T, _E_R_R, _W_A_R_N_I_N_G, _N_O_T_I_C_E,
+          _I_N_F_O, and _D_E_B_U_G.  _F_a_c_i_l_i_t_y must be among _A_U_T_H, _A_U_T_H_P_R_I_V, _C_R_O_N,
+          _D_A_E_M_O_N, _F_T_P, _K_E_R_N, _L_P_R, _M_A_I_L, _N_E_W_S, _U_S_E_R, _U_U_C_P, and _L_O_C_A_L_0 through
+          _L_O_C_A_L_7.  The default is equivalent to
+                --LL _i_n_f_o_,_M_A_I_L_._N_O_T_I_C_E --LL _e_r_r_o_r_,_M_A_I_L_._E_R_R
+
+     ddccccmm normally sends counts of mail rejected and so forth the to system
+     log at midnight.  The SIGUSR1 signal sends an immediate report to the
+     system log.  They will be repeated every 24 hours instead of at midnight.
+
+SSEENNDDMMAAIILL MMAACCRROOSS
+     Sendmail can affect ddccccmm with the values of some _s_e_n_d_m_a_i_l_._c_f macros.
+     These macro names must be added to the Milter.macros option statements in
+     _s_e_n_d_m_a_i_l_._c_f as in the example "Feature" file dcc.m4.
+
+     _$_{_d_c_c___i_s_s_p_a_m_}  causes a mail message to be reported to the DCC server as
+                    having been addressed to "MANY" recipients.  The
+                    _$_{_d_c_c___i_s_s_p_a_m_} macro is ignored if the _$_{_d_c_c___n_o_t_s_p_a_m_} macro
+                    is set to a non-null string
+
+                    If the value of the _$_{_d_c_c___i_s_s_p_a_m_} is null, ddccccmm uses SMTP
+                    rejection messages controlled by --aa and --rr.  If the value
+                    of the _$_{_d_c_c___i_s_s_p_a_m_} macro starts with "DISCARD", the mail
+                    message is silently discarded as with --aa _D_I_S_C_A_R_D_. If value
+                    of the macro not null and does not start with "DISCARD",
+                    it is used as the SMTP error message given to the SMTP
+                    client trying to send the rejected message.  The message
+                    starts with an optional SMTP error type and number fol-
+                    lowed by text.
+
+                    The --aa option does not effect messages marked spam with
+                    _$_{_d_c_c___i_s_s_p_a_m_}.  When the _$_{_d_c_c___i_s_s_p_a_m_} macro is set, the
+                    message is rejected or discarded despite local or DCC
+                    database whitelist entries.  The local whitelist does con-
+                    trol whether the message's checksums will be reported to
+                    the DCC server and an _X_-_D_C_C SMTP header line will be
+                    added.
+
+     _$_{_d_c_c___n_o_t_s_p_a_m_}
+                    causes a message not be considered unsolicited bulk
+                    despite evidence to the contrary.  It also prevents ddccccmm
+                    from reporting the checksums of the message to the DCC
+                    server and from adding an _X_-_D_C_C header line.
+
+                    When the macro is set by the _s_e_n_d_m_a_i_l_._c_f rules,
+                    _$_{_d_c_c___n_o_t_s_p_a_m_} macros overrides DCC threshlds that say the
+                    message should be rejected as well as the effects of the
+                    _$_{_d_c_c___i_s_s_p_a_m_} macro.
+
+     _$_{_d_c_c___m_a_i_l___h_o_s_t_}
+                    specifies the name of the SMTP client that is sending the
+                    message.  This macro is usually the same as the _m_a_i_l___h_o_s_t
+                    macro.  They can differ when a sendmail "smart relay" is
+                    involved.  The _$_{_d_c_c___m_a_i_l___h_o_s_t_} macro does not work if
+                    _F_E_A_T_U_R_E_(_d_e_l_a_y___c_h_e_c_k_s_) is used.
+
+     _$_{_d_c_c___u_s_e_r_d_i_r_}
+                    is the per-user whitelist and log directory for a recipi-
+                    ent.  If the macro is not set in sendmail.cf,
+                    $&{rcpt_mailer}/$&{rcpt_addr} is assumed, but with the
+                    recipient address converted to lower case.  Whatever value
+                    is used, the directory name after the last slash (/) char-
+                    acter is converted to lower case.  Any value containing
+                    the string "/../" is ignored.
+
+                    This macro also does not work if _F_E_A_T_U_R_E_(_d_e_l_a_y___c_h_e_c_k_s_) is
+                    used.
+
+                    The following two lines in a sendmail mc file have the
+                    same effect as not defining the ${dcc_userdir} macro, pro-
+                    vided _F_E_A_T_U_R_E_(_d_c_c_) is also used and the sendmail
+                    _c_f_/_f_e_a_t_u_r_e directory has a symbolic link to the
+                    _m_i_s_c_/_d_c_c_._m_4 file.
+
+     SLocal_check_rcpt
+     R$*     $: $1 $(macro {dcc_userdir} $@ $&{rcpt_mailer}/$&{rcpt_addr} $))
+
+FFIILLEESS
+     /var/dcc   is the DCC home directory in which other files are found.
+     /var/dcc/libexec/start-dccm
+                is a script used to ddccccmm.
+     dcc/dcc_conf
+                contains parameters used by the scripts to start DCC daemons
+                and cron jobs.
+     logdir     is an optional directory specified with --ll and containing
+                marked mail.  Each file in the directory contains one message,
+                at least one of whose checksums reached its --tt thresholds or
+                that is interesting for some other reason.  Each file starts
+                with lines containing the date when the message was received,
+                the IP address of the SMTP client, and SMTP envelope values.
+                Those lines are followed by the body of the SMTP message
+                including its header as it was received by sendmail and with-
+                out any new or changed header lines.  Only approximately the
+                first 32 KBytes of the body are recorded unless modified by
+                _._/_c_o_n_f_i_g_u_r_e _-_-_w_i_t_h_-_m_a_x_-_l_o_g_-_s_i_z_e_=_x_x The checksums for the mes-
+                sage follow the body.  They are followed by lines indicating
+                that the _$_{_d_c_c___i_s_s_p_a_m_} or _$_{_d_c_c___n_o_t_s_p_a_m_} _s_e_n_d_m_a_i_l_._c_f macros
+                were set or one of the checksums is white- or blacklisted by
+                the --ww _w_h_i_t_e_c_l_n_t file.  Each file ends with the _X_-_D_C_C header
+                line added to the message and the disposition of the message
+                including SMTP status message if appropriate.
+     map        is the memory mapped file of information concerning DCC
+                servers in the DCC home directory.
+     whiteclnt  contains the client whitelist in the format described in
+                dcc(8).
+     whiteclnt.dccw
+                is a memory mapped hash table of the _w_h_i_t_e_c_l_n_t file.
+     dccm.pid   in the --RR _r_u_n_d_i_r directory contains daemon's process ID.  The
+                string ``dccm'' is replaced by the file name containing the
+                daemon to facilitate running multiple daemons, probably con-
+                nected to remote instances of sendmail using TCP/IP instead of
+                a UNIX domain socket.  See also --RR.
+     /var/run/dcc/dccm
+                is the default UNIX domain socket used by the sendmail milter
+                interface.  See also --RR.
+     sendmail.cf
+                is the sendmail(8) control file.
+     misc/dcc.m4
+                sendmail mc file that should have a symbolic link in the send-
+                mail cf/feature directory so that _F_E_A_T_U_R_E_(_d_c_c_) can be used in
+                a sendmail mc file.
+
+EEXXAAMMPPLLEESS
+     DDccccmm should be started before sendmail with something like the script
+     _/_v_a_r_/_d_c_c_/_l_i_b_e_x_e_c_/_s_t_a_r_t_-_d_c_c_m_. It looks for common DCC parameters in the
+     _d_c_c___c_o_n_f file in the DCC home directory, _/_v_a_r_/_d_c_c_.
+
+     Those numbers should modified to fit local conditions.  It might be wise
+     to replace the "100" numbers with much larger values or with "MANY" until
+     a few weeks of monitoring the log directory show that sources of mailing
+     lists are in the server's whitelist file (see dccd(8)) or the local
+     _w_h_i_t_e_c_l_n_t file.
+
+     It is usually necessary to regularly delete old log files with a script
+     like /var/dcc/libexec/cron-dccd.
+
+     On systems unlike modern FreeBSD and other UNIX-like systems which
+     include sendmail milter support, sendmail must be built with the milter
+     interface, such as by creating a _d_e_v_t_o_o_l_s_/_S_i_t_e_/_s_i_t_e_._c_o_n_f_i_g_._m_4 or similar
+     file containing something like the following lines:
+
+           APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_MILTER=1')
+           APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER=1')
+
+     Appropriate lines invoking the milter interface must be added to
+     _s_e_n_d_m_a_i_l_._c_f_. That can be done by putting a symbolic link to the the
+     misc/dcc.m4 file in the DCC source to the sendmail cf/feature directory
+     and adding the line
+
+           FEATURE(dcc)
+
+     to the local .mc file.
+
+     Note that ddccccmm should not be used with the Postfix milter mechanism.
+     Instead use dccifd(8) as a before-queue filter as described in that man
+     page.
+
+SSEEEE AALLSSOO
+     cdcc(8), dbclean(8), dcc(8), dccd(8), dblist(8), dccifd(8), dccproc(8),
+     dccsight(8), sendmail(8).
+
+HHIISSTTOORRYY
+     Distributed Checksum Clearinghouses are based on an idea of Paul Vixie.
+     Implementation of ddccccmm was started at Rhyolite Software in 2000.  This
+     document describes version 1.3.103.
+
+BBUUGGSS
+     ddccccmm uses --tt where dccproc(8) uses --cc.
+
+     Systems without setrlimit(2) and getrlimit(2) RLIMIT_NOFILE can have
+     problems with the default limit on the number of simultaneous jobs, the
+     value of --jj.  Every job requires four open files.  These problems are
+     usually seen with errors messages that say something like
+           dccm[24448]: DCC: accept() returned invalid socket
+     A fix is to use a smaller value for --jj or to allow ddccccmm to open more
+     files.  Sendmail version 8.13 and later can be told to poll() instead of
+     select with SM_CONF_POLL.  Some older versions of sendmail knew about
+     FFR_USE_POLL.  One of the following lines in your devtools/Site/site.con-
+     fig.m4 file can help:
+
+           APPENDDEF(`conf_libmilter_ENVDEF', `-DSM_CONF_POLL')
+           APPENDDEF(`conf_libmilter_ENVDEF', `-DFFR_USE_POLL')
+
+     On many systems with sendmail 8.11.3 and preceding, a bug in the sendmail
+     milter mechanism causes ddccccmm to die with a core file when given a signal.
+
+                               February 26, 2009