comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:c7f6b056b673
1 dccm(8) Distributed Checksum Clearinghouse dccm(8)
2
3 NNAAMMEE
4 ddccccmm -- Distributed Checksum Clearinghouse Milter Interface
5
6 SSYYNNOOPPSSIISS
7 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]
8 [--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]
9 [--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]
10 [--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]
11 [--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]
12 [--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]
13
14 DDEESSCCRRIIPPTTIIOONN
15 ddccccmm is a daemon built with the sendmail milter interface intended to
16 connect sendmail(8) to DCC servers. When built with the milter filter
17 machinery and configured to talk to ddccccmm in the _s_e_n_d_m_a_i_l_._c_f file, send-
18 mail passes all email to ddccccmm which in turn reports related checksums to
19 the nearest DCC server. ddccccmm then adds an _X_-_D_C_C SMTP header line to the
20 message. Sendmail is told to reject the message if it is unsolicited
21 bulk mail.
22
23 DDccccmm sends reports of checksums related to mail received by DCC clients
24 and queries about the total number of reports of particular checksums. A
25 DCC server receives _n_o mail, address, headers, or other information, but
26 only cryptographically secure checksums of such information. A DCC
27 server cannot determine the text or other information that corresponds to
28 the checksums it receives. Its only acts as a clearinghouse of counts
29 for checksums computed by clients. For complete privacy as far as the
30 DCC is concerned, the checksums of purely internal mail or other mail
31 that is known to not be unsolicited bulk can be listed in a whitelist to
32 not be reported to the DCC server.
33
34 Since the checksums of messages that are whitelisted locally by the --ww
35 _w_h_i_t_e_c_l_n_t file are not reported to the DCC server, ddccccmm knows nothing
36 about the total recipient counts for their checksums and so cannot add
37 _X_-_D_C_C header lines to such messages. Sendmail does not tell ddccccmm about
38 messages that are not received by sendmail via SMTP, including messages
39 submitted locally and received via UUCP, and so they also do not receive
40 _X_-_D_C_C header lines.
41
42 Enable the daemon and put its parameters in the _d_c_c___c_o_n_f file and start
43 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
44 script.
45
46 The list of servers that ddccccmm contacts is in the memory mapped file _m_a_p
47 shared by local DCC clients. The file is maintained with cdcc(8).
48
49 OOPPTTIIOONNSS
50 The following options are available:
51
52 --VV displays the version of ddccccmm.
53
54 --dd enables debugging output from the DCC client software. Additional
55 --dd options increase the number of messages. A single --dd
56 aborted SMTP transactions including those from some "dictionary
57 attacks."
58
59 --bb causes the daemon to not detach itself from the controlling tty and
60 put itself into the background.
61
62 --xx causes the daemon to try "extra hard" to contact a DCC server.
63 Since it is usually more important to deliver mail than to report
64 its checksums, ddccccmm normally does not delay too long while trying to
65 contact a DCC server. It will not try again for several seconds
66 after a failure. With --xx, it will always try to contact the DCC
67 server and it will tell the MTA to answer the DATA command with a
68 4yz temporary failure.
69
70 --AA adds to existing X-DCC headers in the message instead of replacing
71 existing headers of the brand of the current server.
72
73 --NN neither adds, deletes, nor replaces existing X-DCC headers in the
74 message. Each message is logged, rejected, and otherwise handled
75 the same.
76
77 --QQ only queries the DCC server about the checksums of messages instead
78 of reporting and querying. This is useful when ddccccmm is used to fil-
79 ter mail that has already been reported to a DCC server by another
80 DCC client. No single mail message should be reported to a DCC
81 server more than once per recipient, because each report will
82 increase the apparent "bulkness" of the message.
83
84 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
85 your MX mail servers that use DCC than --QQ.
86
87 --GG _o_n | _o_f_f | _n_o_I_P | _I_P_m_a_s_k_/_x_x
88 controls _g_r_e_y_l_i_s_t_i_n_g. At least one working greylist server must be
89 listed in the _m_a_p file in the DCC home directory. If more than one
90 is named, they must "flood" or change checksums and they must use
91 the same --GG parameters. See dccd(8). Usually all dccm or dccifd
92 DCC client processes use the same --GG parameters.
93
94 _I_P_m_a_s_k_/_x_x and _n_o_I_P remove part or all of the IP address from the
95 greylist triple. The CIDR block size, _x_x, must be between 1 and
96 128. 96 is added to block sizes smaller than 33 to make them appro-
97 priate for the IPv6 addresses used by the DCC. _I_P_m_a_s_k_/_9_6 differs
98 from _n_o_I_P for IPv4 addresses, because the former retains the IPv4 to
99 IPv6 mapping prefix.
100
101 --hh _h_o_m_e_d_i_r
102 overrides the default DCC home directory, _/_v_a_r_/_d_c_c.
103
104 --II _u_s_e_r
105 specifies the UID and GID of the process.
106
107 --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
108 specifies the protocol and address by which sendmail will contact
109 ddccccmm. The default is a UNIX domain socket in the "run" directory,
110 _/_v_a_r_/_r_u_n_/_d_c_c_/_d_c_c_m. (See also --RR)) This protocol and address must
111 match the value in _s_e_n_d_m_a_i_l_._c_f. This mechanism can be used to con-
112 nect ddccccmm on one computer to sendmail on another computer when a
113 port and host name or IP address are used.
114
115 --mm _m_a_p
116 specifies a name or path of the memory mapped parameter file instead
117 of the default _m_a_p file in the DCC home directory. It should be
118 created with the cdcc(8) command.
119
120 --ww _w_h_i_t_e_c_l_n_t
121 specifies an optional file containing filtering parameters as well
122 as SMTP client IP addresses, SMTP envelope values, and header values
123 of mail that is spam or is not spam and does not need a _X_-_D_C_C
124 header, and whose checksums should not be reported to the DCC
125 server.
126
127 If the pathname _w_h_i_t_e_c_l_n_t is not absolute, it is relative to the DCC
128 home directory.
129
130 The format of the ddccccmm whiteclnt file is the same as the _w_h_i_t_e_l_i_s_t
131 files used by dbclean(8) and the _w_h_i_t_e_c_l_n_t file used by dccproc(8).
132 See dcc(8) for a description of DCC white and blacklists. Because
133 the contents of the _w_h_i_t_e_c_l_n_t file are used frequently, a companion
134 file is automatically created and maintained. It has the same path-
135 name but with an added suffix of _._d_c_c_w and contains a memory mapped
136 hash table of the main file.
137
138 A whitelist entry ("OK") or two or more semi-whitelistings ("OK2")
139 for one of the message's checksums prevents all of the message's
140 checksums from being reported to the DCC server and the addition of
141 a _X_-_D_C_C header line by ddccccmm A whitelist entry for a checksum also
142 prevents rejecting or discarding the message based on DCC recipient
143 counts as specified by --aa and --tt. Otherwise, one or more checksums
144 with blacklisting entries ("MANY") cause all of the message's check-
145 sums to be reported to the server with an addressee count of "MANY".
146
147 If the message has a single recipient, an _e_n_v___T_o _w_h_i_t_e_c_l_n_t entry of
148 "OK" for the checksum of its recipient address acts like any other
149 _w_h_i_t_e_c_l_n_t entry of "OK." When the SMTP message has more than one
150 recipient, the effects can be complicated. When a message has sev-
151 eral recipients with some but not all listed in the _w_h_i_t_e_c_l_n_t file,
152 ddccccmm tries comply with the wishes of the users who want filtering as
153 well as those who don't by silently not delivering the message to
154 those who want filtering (i.e. are not whitelisted) and delivering
155 the message to don't want filtering.
156
157 --UU _u_s_e_r_d_i_r_s
158 enables per-user _w_h_i_t_e_c_l_n_t files and log directories. Each target
159 of a message can have a directory of log files named
160 _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
161 macro described below. If _$_{_d_c_c___u_s_e_r_d_i_r_} is not set,
162 _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
163 value of _m_a_i_l_e_r is _l_o_c_a_l. Appropriate values for both
164 _$_{_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
165 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-
166 tive to the DCC home directory. The directory containing the log
167 files must be named _l_o_g and it must be writable by the ddccccmm process.
168 Each log directory must exist or logging for the corresponding is
169 silently disabled. The files created in the log directory are owned
170 by the UID of the ddccccmm process, but they have _g_r_o_u_p and _o_t_h_e_r read
171 and write permissions copied from the corresponding _l_o_g directory.
172 To ensure the privacy of mail, it may be good to make the directo-
173 ries readable only by _o_w_n_e_r and _g_r_o_u_p, and to use a cron script that
174 changes the owner of each file to match the grandparent _a_d_d_r direc-
175 tory.
176
177 There can also be a per -user whitelist file named
178 _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,
179 _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
180 checksum that is not white- or blacklisted by an individual
181 addressee's _w_h_i_t_e_c_l_n_t file is checked in the main --ww --wwhhiitteeccllnntt
182 file. A missing per-addressee _w_h_i_t_e_c_l_n_t file is the same as an
183 empty file. Relative paths for files included in per-addressee
184 files are resolved in the DCC home directory. The _w_h_i_t_e_c_l_n_t files
185 and the _a_d_d_r directories containing them must be writable by the
186 ddccccmm process.
187
188 _O_p_t_i_o_n lines in per-user whiteclnt files can be used to modify many
189 aspects of ddccccmm filtering, as described in the main dcc man page.
190 For example, an _o_p_t_i_o_n _d_c_c_-_o_f_f line turns off DCC filtering for
191 individual mailboxes.
192
193 --aa _I_G_N_O_R_E | _R_E_J_E_C_T | _D_I_S_C_A_R_D
194 specifies the action taken when DCC server counts or --tt thresholds
195 say that a message is unsolicited and bulk. _I_G_N_O_R_E causes the mes-
196 sage to be unaffected except for adding the _X_-_D_C_C header line to the
197 message. This turns off DCC filtering.
198
199 Spam can also be _R_E_J_E_C_Ted or accepted and silently _D_I_S_C_A_R_Ded without
200 being delivered to local mailboxes. The default is _R_E_J_E_C_T.
201
202 Mail forwarded via IP addresses marked _M_X or _M_X_D_C_C in the main
203 _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
204 prevents "bouncing" spam.
205
206 Determinations that mail is or is not spam from sendmail via
207 _$_{_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
208 the --ww _w_h_i_t_e_c_l_n_t are not affected by --aa.
209
210 --tt _t_y_p_e_,[_l_o_g_-_t_h_o_l_d_,]_r_e_j_-_t_h_o_l_d
211 sets logging and "spam" thresholds for checksum _t_y_p_e. The checksum
212 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,
213 _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
214 _s_u_b_s_t_i_t_u_t_e, have no effect except when a local DCC server configured
215 with --KK is used. The _s_u_b_s_t_i_t_u_t_e thresholds apply to the first sub-
216 stitute heading encountered in the mail message. The string _A_L_L
217 sets thresholds for all types, but is unlikely to be useful except
218 for setting logging thresholds. The string _C_M_N specifies the com-
219 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
220 must be numbers, the string _N_E_V_E_R, or the string _M_A_N_Y indicating
221 millions of targets. Counts from the DCC server as large as the
222 threshold for any single type are taken as sufficient evidence that
223 the message should be logged or rejected.
224
225 _L_o_g_-_t_h_o_l_d is the threshold at which messages are logged. It can be
226 handy to log messages at a lower threshold to find solicited bulk
227 mail sources such as mailing lists. If no logging threshold is set,
228 only rejected mail and messages with complicated combinations of
229 white and blacklisting are logged. Messages that reach at least one
230 of their rejection thresholds are logged regardless of logging
231 thresholds.
232
233 _R_e_j_-_t_h_o_l_d is the threshold at which messages are considered "bulk,"
234 and so should be rejected or discarded if not whitelisted.
235
236 DCC Reputation thresholds in the commercial version of the DCC are
237 controlled by thresholds on checksum types _r_e_p and _r_e_p_-_t_o_t_a_l. Mes-
238 sages from an IP address that the DCC database says has sent more
239 than --tt _r_e_p_-_t_o_t_a_l_,_l_o_g_-_t_h_o_l_d messages are logged. A DCC Reputation
240 is computed for messages received from IP addresses that have sent
241 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
242 IP address is the percentage of its messages that have been detected
243 as bulk or having at least 10 recipients. The defaults are equiva-
244 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.
245
246 Bad DCC Reputations do not reject mail unless enabled by an _o_p_t_i_o_n
247 _D_C_C_-_r_e_p_-_o_n line in a _w_h_i_t_e_c_l_n_t file.
248
249 The checksums of locally whitelisted messages are not checked with
250 the DCC server and so only the number of targets of the current copy
251 of a whitelisted message are compared against the thresholds.
252
253 The default is _A_L_L_,_N_E_V_E_R, so that nothing is discarded, rejected, or
254 logged. A common choice is _C_M_N_,_2_5_,_5_0 to reject or discard mail with
255 common bodies except as overridden by the whitelist of the DCC
256 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
257 --gg, and --ww.
258
259 --gg [_n_o_t_-]_t_y_p_e
260 indicates that whitelisted, _O_K or _O_K_2, counts from the DCC server
261 for a type of checksum are to be believed. They should be ignored
262 if prefixed with _n_o_t_-. _T_y_p_e is one of the same set of strings as
263 for --tt. Only _I_P, _e_n_v___F_r_o_m, and _F_r_o_m are likely choices. By default
264 all three are honored, and hence the need for _n_o_t_-.
265
266 --SS _h_d_r
267 adds to the list of substitute or locally chosen headers that are
268 checked with the --ww _w_h_i_t_e_c_l_n_t file and sent to the DCC server. The
269 checksum of the last header of type _h_d_r found in the message is
270 checked. _H_d_r can be _H_E_L_O to specify the SMTP envelope HELO value.
271 _H_d_r can also be _m_a_i_l___h_o_s_t to specify the sendmail "resolved" host
272 name from the Mail_from value in the SMTP envelope. As many as six
273 different substitute headers can be specified, but only the checksum
274 of the first of the six will be sent to the DCC server.
275
276 --ll _l_o_g_d_i_r
277 specifies a directory in which files containing copies of messages
278 processed by ddccccmm are kept. They can be copied to per-user directo-
279 ries specified with --UU. Information about other recipients of a
280 message is deleted from the per-user copies.
281
282 See the FILES section below concerning the contents of the files.
283 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
284 _w_h_i_t_e_c_l_n_t files described in dcc(8).
285
286 The directory is relative to the DCC home directory if it is not
287 absolute
288
289 --RR _r_u_n_d_i_r
290 specifies the "run" directory where the UNIX domain socket and file
291 containing the daemon's process ID are stored. The default value is
292 /var/run/dcc .
293
294 --rr _r_e_j_e_c_t_i_o_n_-_m_s_g
295 specifies the rejection message in --oo proxy mode for unsolicited
296 bulk mail or for mail temporarily blocked by _g_r_e_y_l_i_s_t_i_n_g when --GG is
297 specified. The first --rr _r_e_j_e_c_t_i_o_n_-_m_s_g replaces the default bulk
298 mail rejection message, "5.7.1 550 mail %ID from %CIP rejected by
299 DCC". The second replaces "4.2.1 452 mail %ID from %CIP temporary
300 greylist embargoed". The third --rr _r_e_j_e_c_t_i_o_n_-_m_s_g replaces the
301 default SMTP rejection message "5.7.1 550 %ID bad reputation; see
302 http://commercial-dcc.rhyolite.com/cgi-bin/reps.cgi?tgt=%CIP" for
303 mail with bad DCC Reputations. If _r_e_j_e_c_t_i_o_n_-_m_s_g is the zero-length
304 string, the --rr setting is counted but the corresponding message is
305 not changed.
306
307 _R_e_j_e_c_t_i_o_n_-_m_s_g can contain specific information about the mail mes-
308 sage. The following strings starting with % are replaced with the
309 corresponding values:
310 %ID message ID such as the unique part of log file name or
311 sendmail queue ID
312 %CIP SMTP client IP address
313 %BTYPE type of DNS blacklist hit, such as "SMTP client",
314 "mail_host", or "URL NS"
315 %BTGT IP address or name declared bad by DNS blacklist
316 %BPROBE domain name found in DNS blacklist such as
317 4.3.2.10.example.com
318 %BRESULT value of the %BPROBE domain name found in DNS black-
319 list
320
321 A common alternate for the bulk mail rejection message is "4.7.1 451
322 Access denied by DCC" to tell the sending mail system to continue
323 trying. Use a 4yz response with caution, because it is likely to
324 delay for days a delivery failure message for false positives. If
325 the rejection message does not start with an RFC 1893 status code
326 and RFC 2821 reply code, 5.7.1 and 550 or 4.2.1 and 452 are used.
327
328 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
329 mail rejected by DNS blacklists.
330
331 --jj _m_a_x_j_o_b_s
332 limits the number of simultaneous requests that will be processed.
333 The default value is the maximum number that seems to be possible
334 given system limits on open files, select() bit masks, and so forth.
335 Start ddccccmm with --dd and see the starting message in the system log to
336 see the limit.
337
338 --BB _d_n_s_b_l_-_o_p_t_i_o_n
339 enables DNS blacklist checks of the SMTP client IP address, SMTP
340 envelope Mail_From sender domain name, and of host names in URLs in
341 the message body. Body URL blacklisting has too many false posi-
342 tives to use on abuse mailboxes. It is less effective than
343 greylisting with dccm(8) or dccifd(8) but can be useful in situa-
344 tions where greylisting cannot be used.
345
346 _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
347 --BB _d_o_m_a_i_n[_,_I_P_a_d_d_r[_/_x_x[_,_b_l_t_y_p_e]]]
348 _D_o_m_a_i_n is a DNS blacklist domain such as example.com that will be
349 searched. _I_P_a_d_d_r[_/_x_x_x] is the string "any" an IP address in the DNS
350 blacklist that indicates that the mail message should be rejected,
351 or a CIDR block covering results from the DNS blacklist.
352 "127.0.0.2" is assumed if _I_P_a_d_d_r is absent. IPv6 addresses can be
353 specified with the usual colon (:) notation. Names can be used
354 instead of numeric addresses. The type of DNS blacklist is speci-
355 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
356 domain name or a domain name in a URL of spam.domain.org and a
357 blacklist of type _n_a_m_e, spam.domain.org.example.com will be tried.
358 Blacklist types of _I_P_v_4 and _I_P_v_6 require that the domain name in a
359 URL sender address be resolved into an IPv4 or IPv6 address. The
360 address is then written as a reversed string of decimal octets to
361 check the DNS blacklist, as in 2.0.0.127.example.com,
362
363 More than one blacklist can be specified and blacklists can be
364 grouped. All searching within a group is stopped at the first posi-
365 tive result.
366
367 Positive results are ignored after being logged unless an
368 _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
369 file.
370
371 --BB _s_e_t_:_n_o_-_c_l_i_e_n_t
372 says that SMTP client IP addresses and reverse DNS domain names
373 should not be checked in the following blacklists.
374 --BB _s_e_t_:_c_l_i_e_n_t restores the default for the following black-
375 lists.
376
377 --BB _s_e_t_:_n_o_-_m_a_i_l___h_o_s_t
378 says that SMTP envelope Mail_From sender domain names should
379 not be checked in the following blacklists. --BB _s_e_t_:_m_a_i_l___h_o_s_t
380 restores the default.
381
382 --BB _s_e_t_:_n_o_-_U_R_L
383 says that URLs in the message body should not be checked in the
384 in the following blacklists. --BB _s_e_t_:_U_R_L restores the default.
385
386 --BB _s_e_t_:_n_o_-_M_X
387 says MX servers of sender Mail_From domain names and host names
388 in URLs should not be checked in the following blacklists.
389 --BB _s_e_t_:_M_X restores the default.
390
391 --BB _s_e_t_:_n_o_-_N_S
392 says DNS servers of sender Mail_From domain names and host
393 names in URLs should not be checked in the following black-
394 lists. --BB _s_e_t_:_N_S restores the default.
395
396 --BB _s_e_t_:_d_e_f_a_u_l_t_s
397 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
398 --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
399
400 --BB _s_e_t_:_g_r_o_u_p_=_X
401 adds later DNS blacklists specified with
402 --BB _d_o_m_a_i_n[_,_I_P_a_d_d_r[_/_x_x[_,_b_l_t_y_p_e]]]
403 to group 1, 2, or 3.
404
405 --BB _s_e_t_:_d_e_b_u_g_=_X
406 sets the DNS blacklist logging level
407
408 --BB _s_e_t_:_m_s_g_-_s_e_c_s_=_S
409 limits ddccccmm to _S seconds total for checking all DNS blacklists.
410 The default is 25.
411
412 --BB _s_e_t_:_U_R_L_-_s_e_c_s_=_S
413 limits ddccccmm to at most _S seconds resolving and checking any
414 single URL. The default is 11. Some spam contains dozens of
415 URLs and that some "spamvertised" URLs contain host names that
416 need minutes to resolve. Busy mail systems cannot afford to
417 spend minutes checking each incoming mail message.
418
419 --BB _s_e_t_:_r_e_j_-_m_s_g_=_r_e_j_e_c_t_i_o_n_-_m_s_g
420 sets the SMTP rejection message for the following blacklists.
421 _R_e_j_e_c_t_i_o_n_-_m_s_g must be in the same format as for --rr. If
422 _r_e_j_e_c_t_i_o_n_-_m_s_g is null, the default is restored. The default
423 DNS blacklist rejection message is the first message set with
424 --rr.
425
426 --BB _s_e_t_:_t_e_m_p_-_f_a_i_l
427 causes ddccccmm to the MTA to answer the SMTP DATA command with
428 452 4.2.1 mail %ID from %CIP temporary delayed for DNSBL
429 if any DNS answer required for a DNSBL in the current group
430 times out, including resolving names in URLs.
431
432 --BB _s_e_t_:_n_o_-_t_e_m_p_-_f_a_i_l
433 restores the default of assuming a negative answer for DNS
434 responses that take too long.
435
436 --BB _s_e_t_:_m_a_x_j_o_b_s_=_X
437 sets maximum number of helper processes to _X. In order to use
438 typical single-threaded DNS resolver libraries, ddccccmm uses
439 fleets of helper processes. It is rarely a good idea to change
440 the default, which is the same as the maximum number of simul-
441 taneous jobs set with --jj.
442
443 --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
444 changes the path to the helper program.
445
446 --LL _l_t_y_p_e_,_f_a_c_i_l_i_t_y_._l_e_v_e_l
447 specifies how messages should be logged. _L_t_y_p_e must be _e_r_r_o_r, _i_n_f_o,
448 or _o_f_f to indicate which of the two types of messages are being con-
449 trolled or to turn off all syslog(3) messages from ddccccmm. _L_e_v_e_l must
450 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,
451 _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,
452 _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
453 _L_O_C_A_L_7. The default is equivalent to
454 --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
455
456 ddccccmm normally sends counts of mail rejected and so forth the to system
457 log at midnight. The SIGUSR1 signal sends an immediate report to the
458 system log. They will be repeated every 24 hours instead of at midnight.
459
460 SSEENNDDMMAAIILL MMAACCRROOSS
461 Sendmail can affect ddccccmm with the values of some _s_e_n_d_m_a_i_l_._c_f macros.
462 These macro names must be added to the Milter.macros option statements in
463 _s_e_n_d_m_a_i_l_._c_f as in the example "Feature" file dcc.m4.
464
465 _$_{_d_c_c___i_s_s_p_a_m_} causes a mail message to be reported to the DCC server as
466 having been addressed to "MANY" recipients. The
467 _$_{_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
468 is set to a non-null string
469
470 If the value of the _$_{_d_c_c___i_s_s_p_a_m_} is null, ddccccmm uses SMTP
471 rejection messages controlled by --aa and --rr. If the value
472 of the _$_{_d_c_c___i_s_s_p_a_m_} macro starts with "DISCARD", the mail
473 message is silently discarded as with --aa _D_I_S_C_A_R_D_. If value
474 of the macro not null and does not start with "DISCARD",
475 it is used as the SMTP error message given to the SMTP
476 client trying to send the rejected message. The message
477 starts with an optional SMTP error type and number fol-
478 lowed by text.
479
480 The --aa option does not effect messages marked spam with
481 _$_{_d_c_c___i_s_s_p_a_m_}. When the _$_{_d_c_c___i_s_s_p_a_m_} macro is set, the
482 message is rejected or discarded despite local or DCC
483 database whitelist entries. The local whitelist does con-
484 trol whether the message's checksums will be reported to
485 the DCC server and an _X_-_D_C_C SMTP header line will be
486 added.
487
488 _$_{_d_c_c___n_o_t_s_p_a_m_}
489 causes a message not be considered unsolicited bulk
490 despite evidence to the contrary. It also prevents ddccccmm
491 from reporting the checksums of the message to the DCC
492 server and from adding an _X_-_D_C_C header line.
493
494 When the macro is set by the _s_e_n_d_m_a_i_l_._c_f rules,
495 _$_{_d_c_c___n_o_t_s_p_a_m_} macros overrides DCC threshlds that say the
496 message should be rejected as well as the effects of the
497 _$_{_d_c_c___i_s_s_p_a_m_} macro.
498
499 _$_{_d_c_c___m_a_i_l___h_o_s_t_}
500 specifies the name of the SMTP client that is sending the
501 message. This macro is usually the same as the _m_a_i_l___h_o_s_t
502 macro. They can differ when a sendmail "smart relay" is
503 involved. The _$_{_d_c_c___m_a_i_l___h_o_s_t_} macro does not work if
504 _F_E_A_T_U_R_E_(_d_e_l_a_y___c_h_e_c_k_s_) is used.
505
506 _$_{_d_c_c___u_s_e_r_d_i_r_}
507 is the per-user whitelist and log directory for a recipi-
508 ent. If the macro is not set in sendmail.cf,
509 $&{rcpt_mailer}/$&{rcpt_addr} is assumed, but with the
510 recipient address converted to lower case. Whatever value
511 is used, the directory name after the last slash (/) char-
512 acter is converted to lower case. Any value containing
513 the string "/../" is ignored.
514
515 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
516 used.
517
518 The following two lines in a sendmail mc file have the
519 same effect as not defining the ${dcc_userdir} macro, pro-
520 vided _F_E_A_T_U_R_E_(_d_c_c_) is also used and the sendmail
521 _c_f_/_f_e_a_t_u_r_e directory has a symbolic link to the
522 _m_i_s_c_/_d_c_c_._m_4 file.
523
524 SLocal_check_rcpt
525 R$* $: $1 $(macro {dcc_userdir} $@ $&{rcpt_mailer}/$&{rcpt_addr} $))
526
527 FFIILLEESS
528 /var/dcc is the DCC home directory in which other files are found.
529 /var/dcc/libexec/start-dccm
530 is a script used to ddccccmm.
531 dcc/dcc_conf
532 contains parameters used by the scripts to start DCC daemons
533 and cron jobs.
534 logdir is an optional directory specified with --ll and containing
535 marked mail. Each file in the directory contains one message,
536 at least one of whose checksums reached its --tt thresholds or
537 that is interesting for some other reason. Each file starts
538 with lines containing the date when the message was received,
539 the IP address of the SMTP client, and SMTP envelope values.
540 Those lines are followed by the body of the SMTP message
541 including its header as it was received by sendmail and with-
542 out any new or changed header lines. Only approximately the
543 first 32 KBytes of the body are recorded unless modified by
544 _._/_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-
545 sage follow the body. They are followed by lines indicating
546 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
547 were set or one of the checksums is white- or blacklisted by
548 the --ww _w_h_i_t_e_c_l_n_t file. Each file ends with the _X_-_D_C_C header
549 line added to the message and the disposition of the message
550 including SMTP status message if appropriate.
551 map is the memory mapped file of information concerning DCC
552 servers in the DCC home directory.
553 whiteclnt contains the client whitelist in the format described in
554 dcc(8).
555 whiteclnt.dccw
556 is a memory mapped hash table of the _w_h_i_t_e_c_l_n_t file.
557 dccm.pid in the --RR _r_u_n_d_i_r directory contains daemon's process ID. The
558 string ``dccm'' is replaced by the file name containing the
559 daemon to facilitate running multiple daemons, probably con-
560 nected to remote instances of sendmail using TCP/IP instead of
561 a UNIX domain socket. See also --RR.
562 /var/run/dcc/dccm
563 is the default UNIX domain socket used by the sendmail milter
564 interface. See also --RR.
565 sendmail.cf
566 is the sendmail(8) control file.
567 misc/dcc.m4
568 sendmail mc file that should have a symbolic link in the send-
569 mail cf/feature directory so that _F_E_A_T_U_R_E_(_d_c_c_) can be used in
570 a sendmail mc file.
571
572 EEXXAAMMPPLLEESS
573 DDccccmm should be started before sendmail with something like the script
574 _/_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
575 _d_c_c___c_o_n_f file in the DCC home directory, _/_v_a_r_/_d_c_c_.
576
577 Those numbers should modified to fit local conditions. It might be wise
578 to replace the "100" numbers with much larger values or with "MANY" until
579 a few weeks of monitoring the log directory show that sources of mailing
580 lists are in the server's whitelist file (see dccd(8)) or the local
581 _w_h_i_t_e_c_l_n_t file.
582
583 It is usually necessary to regularly delete old log files with a script
584 like /var/dcc/libexec/cron-dccd.
585
586 On systems unlike modern FreeBSD and other UNIX-like systems which
587 include sendmail milter support, sendmail must be built with the milter
588 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
589 file containing something like the following lines:
590
591 APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_MILTER=1')
592 APPENDDEF(`conf_libmilter_ENVDEF', `-D_FFR_MILTER=1')
593
594 Appropriate lines invoking the milter interface must be added to
595 _s_e_n_d_m_a_i_l_._c_f_. That can be done by putting a symbolic link to the the
596 misc/dcc.m4 file in the DCC source to the sendmail cf/feature directory
597 and adding the line
598
599 FEATURE(dcc)
600
601 to the local .mc file.
602
603 Note that ddccccmm should not be used with the Postfix milter mechanism.
604 Instead use dccifd(8) as a before-queue filter as described in that man
605 page.
606
607 SSEEEE AALLSSOO
608 cdcc(8), dbclean(8), dcc(8), dccd(8), dblist(8), dccifd(8), dccproc(8),
609 dccsight(8), sendmail(8).
610
611 HHIISSTTOORRYY
612 Distributed Checksum Clearinghouses are based on an idea of Paul Vixie.
613 Implementation of ddccccmm was started at Rhyolite Software in 2000. This
614 document describes version 1.3.103.
615
616 BBUUGGSS
617 ddccccmm uses --tt where dccproc(8) uses --cc.
618
619 Systems without setrlimit(2) and getrlimit(2) RLIMIT_NOFILE can have
620 problems with the default limit on the number of simultaneous jobs, the
621 value of --jj. Every job requires four open files. These problems are
622 usually seen with errors messages that say something like
623 dccm[24448]: DCC: accept() returned invalid socket
624 A fix is to use a smaller value for --jj or to allow ddccccmm to open more
625 files. Sendmail version 8.13 and later can be told to poll() instead of
626 select with SM_CONF_POLL. Some older versions of sendmail knew about
627 FFR_USE_POLL. One of the following lines in your devtools/Site/site.con-
628 fig.m4 file can help:
629
630 APPENDDEF(`conf_libmilter_ENVDEF', `-DSM_CONF_POLL')
631 APPENDDEF(`conf_libmilter_ENVDEF', `-DFFR_USE_POLL')
632
633 On many systems with sendmail 8.11.3 and preceding, a bug in the sendmail
634 milter mechanism causes ddccccmm to die with a core file when given a signal.
635
636 February 26, 2009