Mercurial > notdcc
comparison FAQ.html.in @ 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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> | |
2 <HTML> | |
3 <HEAD> | |
4 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> | |
5 <TITLE>DCC FAQ</TITLE> | |
6 <META http-equiv="Content-Style-Type" content="text/css"> | |
7 <STYLE type="text/css"> | |
8 <!-- | |
9 BODY {background-color:white; color:black} | |
10 UL.FAQlist {margin-left:10%; margin-right:10%} | |
11 DL.FAQbody {margin-left:5%} | |
12 DT {font-weight:bolder} | |
13 .small {font-size:smaller} | |
14 IMG.logo {width:6em; vertical-align:middle} | |
15 --> | |
16 </STYLE> | |
17 </HEAD> | |
18 | |
19 <BODY> | |
20 <H1>Distributed Checksum Clearinghouse (DCC) Frequently Answered Questions</H1> | |
21 | |
22 <P> | |
23 <A HREF="http://www.rhyolite.com/dcc/FAQ.html">Current versions</A> | |
24 of this list can be found among the | |
25 <A HREF="http://www.rhyolite.com/dcc/">http://www.rhyolite.com/dcc/</A> | |
26 web pages and their <A HREF="http://www.dcc-servers.net/dcc/FAQ.html">mirror</A> | |
27 at | |
28 <A HREF="http://www.dcc-servers.net/dcc/">http://www.dcc-servers.net/dcc/</A>. | |
29 | |
30 | |
31 <UL class="FAQlist"> | |
32 | |
33 <LI><A HREF="#what-is-it"> | |
34 What is the Distributed Checksum Clearinghouse or DCC?</A> | |
35 <LI><A HREF="#license"> | |
36 Is the DCC source free?</A> | |
37 <LI><A HREF="#source"> | |
38 Where can I get DCC source?</A> | |
39 <LI><A HREF="#binary"> | |
40 Where can I get DCC RPMs, packages or other binary forms?</A> | |
41 <LI><A HREF="#fuzzy-personalize"> | |
42 Do the fuzzy checksums ignore <Q lang="en-us">personalizations</Q>?</A> | |
43 <LI><A HREF="#system-load"> | |
44 How much bandwidth, disk space, and computing does the DCC require?</A> | |
45 <LI><A HREF="#need-server"> | |
46 Do I need to run a DCC server?</A> | |
47 <LI><A HREF="#crash"> | |
48 What happens to my mail if the DCC break?</A> | |
49 <LI><a HREF="#mark-only"> | |
50 How do I mark spam without rejecting it?</A> | |
51 <LI><A HREF="#bad-man"> | |
52 Why doesn't the man command find the man pages?</A> | |
53 <LI><A HREF="#sendmail-only"> | |
54 Must sendmail be used with DCC?</A> | |
55 <LI><A HREF="#smtpd"> | |
56 Can the DCC be used with smtpd?</A> | |
57 <LI><A HREF="#exim"> | |
58 Can the DCC be used with Exim?</A> | |
59 <LI><A HREF="#other-MUAs"> | |
60 How can the DCC be used with mail user agents?</A> | |
61 <LI><A HREF="#spamass"> | |
62 Can the DCC be used with SpamAssassin or other spam filters?</A> | |
63 <LI><A HREF="#dcc-delay"> | |
64 How long must SpamAssassin or an MTA wait for DCC results?</A> | |
65 <LI><A HREF="#root-needed"> | |
66 Must I have the root password to use DCC?</A> | |
67 <LI><A HREF="#firewall-ports2"> | |
68 Why don't the public DCC servers work? Do I need a client-ID?</A> | |
69 <LI><A HREF="#firewall-ports"> | |
70 Which ports do I need to open in my firewall?</A> | |
71 <LI><A HREF="#cleaning1"> | |
72 Why does the dccd database grow without bound?</A> | |
73 <LI><A HREF="#cleaning2"> | |
74 The dccd database is corrupt. What should I do?</A> | |
75 <LI><A HREF="#cleaning3"> | |
76 How can I stop the log directories from overflowing?</A> | |
77 <LI><A HREF="#bad-locks"> | |
78 Why do my DCC clients including cdcc and dccproc | |
79 complain about <Q lang="en-us">Resource temporarily unavailable</Q>?</A> | |
80 <LI><A HREF="#maxprocs"> | |
81 Why does dccifd or dccm complain about | |
82 <Q lang="en-us">thread_create() failed: 11, try again</Q>? or | |
83 <Q lang="en-us">pthread_create(): Cannot allocate memory</Q>?</A> | |
84 <LI><A HREF="#max-work"> | |
85 Why does dccm or dccifd complain about | |
86 <Q lang="en-us">too many simultaneous mail messages</Q>?</A> | |
87 <LI><A HREF="#server-pick"> | |
88 Why doesn't my DCC client pick my local DCC server?</A> | |
89 <LI><A HREF="#IDs1"> | |
90 If I have a server-ID, do I need a DCC client-ID, or vice versa?</A> | |
91 <LI><A HREF="#IDs2">Why does my DCC server complain about | |
92 "rejected server-IDs" among flooded checksum reports?</A> | |
93 <LI><A HREF="#server-rate-limits"> | |
94 Why does my DCC server refuse to accept more than 50 operations per second?</A> | |
95 <LI><A HREF="#private-server"> | |
96 How do I keep strangers from using my DCC server?</A> | |
97 <LI><A HREF="#dccm-log1"> | |
98 How can I determine why dccm reported | |
99 a message as spam or with a recipient count of "MANY"?</A> | |
100 <LI><A HREF="#dblist1"> | |
101 How can I see what checksums my server has heard from its clients?</A> | |
102 <LI><A HREF="#whitelist13"> | |
103 How do I stop DCC false positives?</A> | |
104 <LI><A HREF="#whitelist1"> | |
105 Why is mail from my favorite mailing list marked with an | |
106 <I>X-DCC</I> header line that says it is spam?</A> | |
107 <LI><A HREF="#whitelist11"> | |
108 Why are acknowledgments of spam reports mistakenly | |
109 marked as spam by DCC?</A> | |
110 <LI><A HREF="#x-dcc-header1"> | |
111 Why are some checksums missing from my <I>X-DCC</I> header lines?</A> | |
112 <LI><A HREF="#whitelist9"> | |
113 How do I maintain client whitelists?</A> | |
114 <LI><A HREF="#whitelist2"> | |
115 Do I need both server and client whitelists?</A> | |
116 <LI><A HREF="#whitelist3"> | |
117 When the whitelist file used by dccd, dccm or dccifd is changed, | |
118 what must be done to tell the software about the change?</A> | |
119 <LI><A HREF="#whitelist14"> | |
120 How do I test a whiteclnt file?</A> | |
121 <LI><A HREF="#reg-exps1"> | |
122 Can I use wild cards or regular expressions in DCC whitelists?</A> | |
123 <LI><A HREF="#whitelist10"> | |
124 How do I whitelist mail from a legitimate | |
125 bulk mailer using its name or SMTP headers such as Mailing-List or the | |
126 Habeas SWE headers?</A> | |
127 <LI><A HREF="#incompat-whitelists"> | |
128 Why does dccm or dccifd complain about "incompatible whitelists"?</A> | |
129 <LI><A HREF="#whitelist4"> | |
130 Why do legitimate mail messages have | |
131 <I>X-DCC</I> header lines that say they are "bulk", "many", or spam?</A> | |
132 <LI><A HREF="#whitelist5"> | |
133 Are IP address blocks in whitelists used by dccproc?</A> | |
134 <LI><A HREF="#whitelist6"> | |
135 Why is dccproc is ignoring <I>env_from</I> whitelist entries?</A> | |
136 <LI><A HREF="#delck"> | |
137 What if I make a mistake with | |
138 dccproc -t many and report legitimate mail as spam?</A> | |
139 <LI><A HREF="#whitelist8"> | |
140 Can the sendmail "spamfriend" mechanism tell | |
141 dccm to not check mail sent to some addresses?</A> | |
142 <LI><A HREF="#whitelist12"> | |
143 How do I tell dccm to not check mail for an entire domain?</A> | |
144 <LI><A HREF="#false-positives"> | |
145 How can I avoid polluting the databases of DCC servers with | |
146 checksums of my mail that is not spam?</A> | |
147 <LI><A HREF="#spamtrap"> | |
148 Can DCC be fed with <Q lang="en-us">spam traps</Q>?</A> | |
149 <LI><A HREF="#flood3"> | |
150 How many flooding peers does my DCC server need?</A> | |
151 <LI><A HREF="#flood1"> | |
152 Do I need to tell the operators of other DCC servers | |
153 the password for controlling my server to turn on flooding?</A> | |
154 <LI><A HREF="#flood2"> | |
155 How can I figure out why flooding is not working?</A> | |
156 <LI><A HREF="#rtt"> | |
157 Why didn't the RTT reported by | |
158 the cdcc info | |
159 operation change when my network topology changed?</A> | |
160 <LI><A HREF="#socks1"> | |
161 When my clients are configured to use SOCKS, they do not | |
162 realize immediately when a server is down.</A> | |
163 </UL> | |
164 | |
165 <P> | |
166 <HR> | |
167 | |
168 <DL class="FAQbody"> | |
169 | |
170 <DT><A NAME="what-is-it"> | |
171 What is the Distributed Checksum Clearinghouse or DCC?</A> | |
172 <DD> | |
173 The DCC or Distributed Checksum Clearinghouse is an anti-spam content filter | |
174 that runs on a variety of | |
175 <A HREF="INSTALL.html#Compatibility">operating systems</A>. | |
176 The idea of the DCC is that if mail recipients could compare | |
177 the mail they receive, they could recognize unsolicited bulk mail. | |
178 A DCC server totals reports of "fuzzy" checksums of | |
179 messages from clients and answers queries about the total counts | |
180 for checksums of mail messages. | |
181 <P> | |
182 See the main <A HREF="dcc.html">DCC man page</A> as well as the | |
183 <A HREF="http://www.rhyolite.com/dcc/#overview">DCC web page</A> | |
184 and its <A HREF="http://www.dcc-servers.net/dcc/#overview">mirror</A>. | |
185 | |
186 | |
187 <P><DT><A NAME="license"> | |
188 Is the DCC source free</A> | |
189 <DD> | |
190 The non-commercial Distributed Checksum Clearinghouse source carries a | |
191 <A HREF="LICENSE">license</A> | |
192 that is free only to organizations that do not sell filtering devices or | |
193 services except to their own users and that participate in the global | |
194 DCC network. | |
195 ISPs that use DCC to filter mail for their | |
196 own users are intended to be covered by the free license. | |
197 You can redistribute unchanged copies of the free source, but you <B>may not</B> | |
198 redistribute modified, "fixed," or "improved" versions of the source | |
199 or binaries. | |
200 You also can't call it your own or blame anyone for the results of using it. | |
201 <P> | |
202 Organizations that do not qualify for the free license are welcome to | |
203 inquire about licenses for the commercial version by email to | |
204 <A HREF="mailto:sales@rhyolite.com">sales@rhyolite.com</A> | |
205 or via the | |
206 <A HREF="http://www.rhyolite.com/cgi-bin/ct.cgi?sb=Commercial+DCC+License">form</A>. | |
207 The commercial version supports | |
208 <A HREF="http://www.rhyolite.com/dcc/reputations.html">DCC | |
209 Reputations</A>. | |
210 <P> | |
211 Please note that organizations that do not qualify for the free DCC license | |
212 have never been allowed to use the public DCC servers. | |
213 | |
214 | |
215 <P><DT><A NAME="source"> | |
216 Where can I get DCC source?</A> | |
217 <DD> | |
218 The official DCC source repositories are at | |
219 <A HREF="http://www.rhyolite.com/dcc/source/dcc.tar.Z">www.rhyolite.com/dcc/</A> | |
220 and | |
221 <A HREF="http://www.dcc-servers.net/dcc/source/dcc.tar.Z">http://www.dcc-servers.net/dcc/</A>. | |
222 <P> | |
223 Please do not try to use ancient versions of DCC software dating from early | |
224 2005 and redistributed by third parties including some Linux packagers. | |
225 Those versions do not detect bulk mail as well as more recent versions. | |
226 Installations using those old versions also have problems using the | |
227 public DCC servers that often make it necessary to add their IP addresses | |
228 to the blacklist that protects the public DCC servers. | |
229 Even worse, all known Linux redistributions of DCC software have been | |
230 changed in ways that break things, including the | |
231 <A HREF="misc/updatedcc.in">libexec/updatedcc</A> shell script that could | |
232 otherwise be used to fetch, configure, compile, install, and restart | |
233 a current version. | |
234 <P> | |
235 When installing DCC software, please consider the installation instructions | |
236 in the | |
237 <A HREF="INSTALL.html">INSTALL.html</A> file included with | |
238 the source or in the | |
239 <A HREF="http://www.dcc-servers.net/dcc/INSTALL.html">on line source trees</A>. | |
240 | |
241 | |
242 <P><DT><A NAME="binary"> | |
243 Where can I get DCC RPMs, packages or other binary forms?</A> | |
244 <DD> | |
245 There are no official distributions of DCC binaries, | |
246 whether simple a.out files, RPM Package Manager (RPM) packages, | |
247 or BSD style ports or packages (pkg). | |
248 There are many unofficial sources of DCC binaries, including | |
249 Linux RPMs and BSD style packages. | |
250 <P> | |
251 As of 2008, the FreeBSD packages are not too far out of date and | |
252 include a working version of the | |
253 <A HREF="misc/updatedcc.in">libexec/updatedcc</A> shell script that | |
254 fetches, configures, compiles, installs, and restarts | |
255 a current version. | |
256 <P> | |
257 As far as known in 2008, all DCC RPMs offered by Linux distributors | |
258 are based on DCC software from 2005 and <STRONG>should not</STRONG> be used. | |
259 | |
260 | |
261 <P><DT><A NAME="fuzzy-personalize"> | |
262 Do the fuzzy checksums ignore <Q lang="en-us">personalizations</Q>?</A> | |
263 <DD> | |
264 Yes, they ignore many <Q lang="en-us">personalizations</Q> and | |
265 <Q lang="en-us">hash busters</Q>. | |
266 | |
267 | |
268 <P><DT><A NAME="system-load"> | |
269 How much bandwidth, disk space, and computing does the DCC require?</A> | |
270 <DD> | |
271 The UDP packets used by a DCC client to obtain the checksum totals | |
272 from a DCC server for a mail message generally use less bandwidth than | |
273 the DNS queries required to receive the same message. | |
274 A DCC client needs very little disk space. | |
275 <P> | |
276 Bulk messages are usually logged by DCC clients. | |
277 On systems receiving a lot of mail, the mechanisms for automatically | |
278 creating new log directories every minute, day, or hour | |
279 can keep any single log directory from becoming too large. | |
280 See the <A HREF="dccm.html#OPTION-l">dccm</A> | |
281 and | |
282 <A HREF="dccproc.html#OPTION-l">dccproc</A> | |
283 man pages. | |
284 <P> | |
285 About 1.4 GBytes/day are exchanged between each pair of DCC servers. | |
286 Each server has 3 or 4 peers. | |
287 The resulting database is about 3 GBytes with the default expiration | |
288 parameters.. | |
289 However, while <A HREF="dbclean.html">dbclean</A> is deleting old checksums, | |
290 there are three copies of the database. | |
291 The DCC clients and server do not need many CPU cycles, | |
292 but the daily executions of <A HREF="dbclean.html">dbclean</A> | |
293 on a system with a DCC server | |
294 require a computer with at least 2 or 3 GBytes of RAM. | |
295 In 2006, | |
296 a DCC server prefers 4 GBytes of RAM and can use 6 GBytes. | |
297 12 to 18 GBytes of disk space are also needed. | |
298 <P> | |
299 DCC servers used by clients handling 100,000 or more messages per day | |
300 need to be larger. | |
301 Each additional 100,000 messages/day need about 100 MBytes of disk space | |
302 and system memory, given the default expiration used by | |
303 <A HREF="dbclean.html#OPTION-e">dbclean</A>. | |
304 | |
305 | |
306 <P><DT><A NAME="need-server">Do I need to run a DCC server?</A> | |
307 <DD> | |
308 A mail system that processes fewer than 100,000 mail messages per day | |
309 uses less of its own bandwidth and the bandwidth of other DCC servers | |
310 by using the <A HREF="http://www.dcc-servers.net/dcc/#public-servers">public | |
311 DCC servers</A>. | |
312 Each mail message needs a DCC transaction that requires | |
313 about 100 bytes, and so 100,000 mail messages/day imply about 10 | |
314 MBytes/day of DCC client-server traffic. Each DCC server needs to | |
315 exchange "floods" or streams of checksms with 4 other servers. Each | |
316 flood is currently about 1.4 GBytes/day for a current total of about | |
317 3 GBytes/day. | |
318 <P> | |
319 When normally installed by the included Makefiles, DCC clients are | |
320 configured to use the | |
321 <A HREF="http://www.dcc-servers.net/dcc/#public-servers">public DCC servers</A> | |
322 without any additional configuration except opening firewalls to port UDP 6277. | |
323 <P> | |
324 Mail systems that process more than 100,000 mail messages per day | |
325 need local DCC servers connected to the global network of DCC servers. | |
326 The public DCC servers include denial of service defenses which | |
327 ignore requests in excess of about 240,000 per day per client. | |
328 <P> | |
329 It is wrong to resell the CPU cycles, network bandwidth, | |
330 disk space, and, most important, human system administration work of the | |
331 public DCC servers. | |
332 Vendors of "anti-spam appliances" or similar | |
333 that do not steal from the operators | |
334 of the public DCC servers have always run their own DCC servers. | |
335 | |
336 | |
337 <P><DT><A NAME="crash"> | |
338 What happens to my mail if the DCC break?</A> | |
339 <DD> | |
340 When in doubt or trouble, the DCC clients including | |
341 <A HREF="dccproc.html">dccproc</A> and <A HREF="dccm.html">dccm</A> | |
342 deliver mail. They wait only a little while for a DCC server | |
343 to answer before giving up. They then avoid asking a server for a while | |
344 to avoid slowing down mail. | |
345 <P> | |
346 If the DCC sendmail interface or milter program, dccm, crashes, | |
347 the default parameters in <A HREF="misc/dcc.m4">misc/dcc.m4</A> | |
348 for the sendmail.cf Xdcc line | |
349 tell sendmail to wait only about 30 seconds before | |
350 giving up and delivering the mail. | |
351 <P> | |
352 The DCC client code keeps track of the speeds of the | |
353 servers it knows about, and uses the fastest or closest. | |
354 Every hour or so it re-resolves A records | |
355 and checks the speeds of the servers it | |
356 is not using. When the current server stops working or gets significantly | |
357 slower, the client code switches to a better server. | |
358 | |
359 | |
360 <P><DT><A NAME="mark-only"> | |
361 How do I mark spam without rejecting it?</A> | |
362 <DD> | |
363 Unless given thresholds at which to reject mail, | |
364 <A HREF="dccm.html#OPTION-t">dccm</A> | |
365 and | |
366 <A HREF="dccproc.html#OPTION-c">dccproc</A> do not reject mail. | |
367 When dccm is given a threshold by setting DCCM_REJECT_AT in | |
368 <A HREF="homedir/dcc_conf.in">dcc_conf</A> in the DCC home directory, | |
369 DCCM_ARGS can also be set to <A HREF="dccm.html#OPTION-a">"-a IGNORE</A> | |
370 so that spam is marked but not rejected. | |
371 | |
372 | |
373 <P><DT><A NAME="bad-man"> | |
374 Why doesn't the man command find the man pages?</A> | |
375 <DD> | |
376 The nroff source, formated nroff output, and HTML versions of the | |
377 man pages are in the top-level source directory. | |
378 Formatted or nroff source is installed by default somewhere in /usr/local/man | |
379 depending on the target system. | |
380 It may be necessary to add /usr/local/man to the MANPATH environment variable. | |
381 Even with that, SunOS 5.7 sometimes has trouble finding them unless | |
382 <B>man -F</B> is used. | |
383 | |
384 | |
385 <P><DT><A NAME="sendmail-only"> | |
386 Must sendmail be used with DCC?</A> | |
387 <DD> | |
388 While the sendmail milter interface, <A HREF="dccm.html">dccm</A> | |
389 and the DCC program interface or <A HREF="dccifd.html">dccifd</A> | |
390 are the most efficient ways to report and check DCC checksums, | |
391 <A HREF="dccproc.html">dccproc</A> is also commonly used. | |
392 | |
393 | |
394 <P><DT><A NAME="smtpd"> | |
395 Can the DCC be used with smtpd?</A> | |
396 <DD> | |
397 Yes, <A HREF="dccproc.html">dccproc</A> can be used with Obtuse's smtpd. | |
398 Dave Lugo has contributed a shell script to the | |
399 <A HREF="http://sd.inodes.org/">smtpd-sd project</A> | |
400 which can be used to do DCC checking prior to the end of the SMTP | |
401 DATA command. | |
402 | |
403 | |
404 <P><DT><A NAME="exim"> | |
405 Can the DCC be used with Exim?</A> | |
406 <DD> | |
407 There are comments about using <A HREF="dccproc.html">Dccproc</A> with | |
408 <A HREF="http://www.exim.org/">Exim</A> | |
409 in the | |
410 <A HREF="http://www.rhyolite.com/pipermail/dcc/">DCC mailing list archives</A> | |
411 including these messages: | |
412 <UL> | |
413 <LI><A HREF="http://www.rhyolite.com/pipermail/dcc/2002/000203.html"> | |
414 2002/000203</A> | |
415 <LI><A HREF="http://www.rhyolite.com/pipermail/dcc/2002/000254.html"> | |
416 2002/000254</A> | |
417 </UL> | |
418 <P> | |
419 <STRONG>However</STRONG>, those mailing list messages talked about using | |
420 <A HREF="dccproc.html">dccproc</A> before | |
421 <A HREF="dccifd.html">dccifd</A> was available. | |
422 Dccproc is suitable only for low mail volumes. | |
423 | |
424 | |
425 <P><DT><A NAME="spamass"> | |
426 Can the DCC be used with SpamAssassin or other spam filters?</A> | |
427 <DD> | |
428 The DCC can be used with | |
429 <A HREF="http://spamassassin.apache.org/">SpamAssassin</A> as | |
430 well as other spam and virus filters. | |
431 Note that it is more efficient to arrange to use a DCC client daemon | |
432 such as <A HREF="dccm.html">dccm</A> to mark passing mail and check | |
433 <I>X-DCC</I> header lines in the filter than to start and run | |
434 <A HREF="dccproc.html">dccproc</A> on each message. | |
435 <P> | |
436 Some commercial virus and spam filters include DCC clients that | |
437 query public DCC servers or DCC servers operated by the filter vendor | |
438 and that "flood" or exchange bulk mail checksums with public servers. | |
439 Reputable manufacturers of such devices operate their own DCC servers | |
440 connected to global network of DCC servers instead of stealing and then | |
441 selling the CPU cycles, network bandwidth, disk space, and, most important, | |
442 human system administration efforts of the public DCC servers. | |
443 | |
444 <P><DT><A NAME="dcc-delay"> | |
445 How long must SpamAssassin or an MTA wait for DCC results?</A> | |
446 <DD> | |
447 DCC clients including dccproc, dccifd, and dccm can wait as long as | |
448 about 16 seconds for an answer from a DCC server. | |
449 Except when an anonymous client triggers the progressive delays that are | |
450 among the defenses against denial of service attacks in the public DCC servers, | |
451 delays are almost always less than 10 seconds. | |
452 Delays for DNS blacklists | |
453 (see <A HREF="dccifd.html#OPTION-B">dccifd -B</A>) | |
454 are additional. | |
455 | |
456 | |
457 <P><DT><A NAME="other-MUAs"> | |
458 How can the DCC be used with mail user agents?</A> | |
459 <DD><A HREF="dccproc.html">Dccproc</A> can be used with any mail user | |
460 agent that can check mail headers. | |
461 For example, WD Baseley sent a | |
462 <A HREF="http://www.rhyolite.com/pipermail/dcc/2002/000212.html">note</A> | |
463 to the <A HREF="http://www.rhyolite.com/mailman/listinfo/dcc">DCC | |
464 mailing list</A> | |
465 on how to configure <A HREF="http://www.eudora.com/">Eudora</A> to | |
466 act on X-DCC header lines. | |
467 <P> | |
468 Bharat Mediratta has developed DeepSix for people using mail user agents | |
469 on UNIX boxes connected remote servers such as corporate Exchange servers. | |
470 See his | |
471 project on <A HREF="http://www.sourceforge.net/projects/deepsix">Sourceforge</A> | |
472 as well as his | |
473 <A HREF="http://www.rhyolite.com/pipermail/dcc/2001/000042.html">announcement</A> | |
474 in the DCC mailing list. | |
475 | |
476 | |
477 <P><DT><A NAME="root-needed"> | |
478 Must I have the root password to use DCC?</A> | |
479 <DD> | |
480 No, the procmail or sendmail .forward DCC user program, | |
481 <A HREF="dccproc.html">dccproc</A> | |
482 can be installed in an individual ~/bin directory. | |
483 Then <A HREF="cdcc.html">cdcc</A> | |
484 can create a private map file used with | |
485 <A HREF="dccproc.html#OPTION-h">dccproc -h dir</A> | |
486 or | |
487 <A HREF="dccproc.html#OPTION-m">dccproc -m dir/map</A>. | |
488 <P> | |
489 Also see the <A HREF="INSTALL.html#individual-user">DCC installation | |
490 instructions</A>. | |
491 | |
492 | |
493 <P><DT><A NAME="firewall-ports2"> | |
494 Why don't the public DCC servers work? Do I need a client-ID?</A> | |
495 <DD> | |
496 The public DCC servers accept requests from clients using the | |
497 anonymous client-ID. | |
498 Incorrectly configured firewalls often cause problems. | |
499 Traceroute can be used to send UDP packets to test for interfering firewalls. | |
500 See the answer to the <A HREF="#firewall-ports">firewall question</A>. | |
501 <P> | |
502 After firewalls, the most common cause of problems while trying to | |
503 use the public DCC servers is sending too many requests. | |
504 The DCC server daemon, <A HREF="dccd.html">dccd</A>, includes | |
505 defenses against denial of service or DoS attacks. | |
506 Those defenses include progressively delaying responses | |
507 and eventually ignoring requests. | |
508 The ancient version of the DCC client software included in some | |
509 Linux redistributions tries so hard to reach the fastest server | |
510 that it can trigger those DoS defenses. | |
511 | |
512 <P><DT><A NAME="firewall-ports"> | |
513 Which ports do I need to open in my firewall?</A> | |
514 <DD> | |
515 DCC traffic is like DNS traffic. You should treat port 6277 | |
516 like port 53. | |
517 Allow outgoing packets to distant UDP port 6277 and incoming packets | |
518 from distant UDP port 6277. | |
519 <P> | |
520 If the command `cdcc info` says no DCC servers are answering, | |
521 you may need to adjust your firewall. | |
522 Also consider the other reasons why the | |
523 <A HREF="#firewall-ports2">public DCC servers can ignore requests</A>. | |
524 <P> | |
525 If you run a DCC server, open incoming connections to local TCP port 6277 | |
526 from your flooding peers, | |
527 and outgoing connections to TCP port 6277 on your flooding peers. | |
528 Also open UDP port 6277 to IP address 192.188.61.3 for the DCC server status | |
529 web page. | |
530 <P> | |
531 See also the discussion of Cisco ACLs at | |
532 <A HREF="http://www.dcc-servers.net/dcc/firewall.html">http://www.dcc-servers.net/dcc/firewall.html</A>. | |
533 | |
534 <P><DT><A NAME="cleaning1"> | |
535 Why does the</A> <A HREF="dccd.html#FILE-dcc_db">dccd database</A> | |
536 grow without bound? | |
537 <DD><A HREF="dbclean.html">Dbclean</A> should be run every night when the | |
538 system is least busy | |
539 with the <A HREF="misc/cron-dccd.in">misc/cron-dccd</A> script. | |
540 An entry like <A HREF="misc/crontab.in">misc/crontab</A> should be put into | |
541 the crontab file for the user that runs <A HREF="dccd.html">dccd</A>. | |
542 | |
543 | |
544 <P><DT><A NAME="cleaning2"> | |
545 The dccd database is corrupt. What should I do?</A> | |
546 <DD><A HREF="dbclean.html#OPTION-R">Dbclean -R</A> | |
547 will usually repair a broken | |
548 DCC server database. | |
549 However, | |
550 if your server is "flooding" or exchanging checksums with other servers, | |
551 it is often quicker to stop the DCC server, | |
552 delete the | |
553 <A HREF="dccd.html#FILE-dcc_db">@prefix@/dcc_db</A> and | |
554 <A HREF="dccd.html#FILE-dcc_db.hash">@prefix@/dcc_db.hash</A> files | |
555 and restart <A HREF="dccd.html">dccd</A> with the | |
556 <A HREF="misc/start-dccd.in">libexec/start-dccd</A> script. | |
557 When dccd starts, it will notice that the database has been purged | |
558 and ask its flooding peers to rewind and retransmit their checksums of | |
559 bulk mail. | |
560 | |
561 | |
562 <P><DT><A NAME="cleaning3"> | |
563 How can I stop the log directories from overflowing?</A> | |
564 <DD> | |
565 Global <A HREF="dccm.html#OPTION-l">dccm</A> | |
566 or <A HREF="dccifd.html#OPTION-l">dccifd</A> | |
567 logging can be entirely | |
568 disabled by setting DCCM_LOGDIR="" or DCCIFD_LOGDIR="" in the | |
569 <A HREF="homedir/dcc_conf.in">dcc_conf</A> file in the DCC home directory. | |
570 Logging for individual users can be disabled by not creating or deleting | |
571 thir log directories. | |
572 However, this not only disables logging of rejected mail, but also logging | |
573 of mail that suffered system failures. | |
574 <P> | |
575 To delete old log files, run the | |
576 <A HREF="misc/cron-dccd.in">misc/cron-dccd</A> script | |
577 daily with an entry like <A HREF="misc/crontab.in">misc/crontab</A> | |
578 in the crontab file for the user that runs <A HREF="dccd.html">dccd</A> | |
579 or <A HREF="dccd.html">dccd</A>. | |
580 The DBCLEAN_LOGDAYS parameter in the | |
581 <A HREF="homedir/dcc_conf.in">dcc_conf</A> file in the DCC home directory | |
582 specifies the age of old log files. | |
583 | |
584 | |
585 <P><DT><A NAME="bad-locks"> | |
586 Why do my DCC clients including</A> | |
587 <A HREF="cdcc.html">cdcc</A> and <A HREF="dccproc.html">dccproc</A> | |
588 complain about "Resource temporarily unavailable"? | |
589 <DD> | |
590 Perhaps your operating system has bugs in its implementation of | |
591 <CODE>fcntl</CODE> file locking, particularly for the | |
592 DCC client <A HREF="cdcc.html#FILE-map">map</A> file when it is on | |
593 an NFS file system. | |
594 <P> | |
595 Another common case is using an editor such as some versions of <EM>vi</EM> | |
596 that locks files on the main or a per-user | |
597 <A HREF="homedir/whiteclnt">whiteclnt</A> file, | |
598 | |
599 | |
600 <P><DT><A NAME="maxprocs"> | |
601 Why does dccifd or dccm complain about | |
602 <Q lang="en-us">thread_create() failed: 11, try again</Q>? | |
603 or <Q lang="en-us">pthread_create(): Cannot allocate memory</Q>?</A> | |
604 <DD> | |
605 The most common cause of | |
606 <Q lang="en-us">thread_create() failed: 11, try again</Q> | |
607 or <Q lang="en-us">pthread_create(): Cannot allocate memory</Q> | |
608 error messages from <A HREF="dccm.html">dccm</A> | |
609 and <A HREF="dccifd.html">dccifd</A> | |
610 is a too small limit on the maximum number of processes allowed | |
611 the UID running the dccm or dccifd process. | |
612 The "maxproc" limit seen with the `limit` or `limits` shell command | |
613 should be a dozen or so larger than the sum of | |
614 the queue sizes of dccm or dccifd (or both if both are running). | |
615 <P> | |
616 See also the common question and answer about | |
617 <A HREF="#max-work">too many simultaneous mail messages</A>. | |
618 | |
619 | |
620 <P><DT><A NAME="max-work"> | |
621 Why does dccm or dccifd complain about | |
622 <Q lang="en-us">too many simultaneous mail messages</Q>?</A> | |
623 <DD> | |
624 Dccm or dccifd can fail to create a thread to deal with an incoming | |
625 mail message if there are no available file descriptors or | |
626 other resources. | |
627 Adding <EM>-d</EM> to DCCD_ARGS or DCCIFD_ARGS in | |
628 <A HREF="homedir/dcc_conf.in">dcc_conf</A> in the DCC home directory | |
629 sends a message to the system log that includes the limit on simultaneous mail | |
630 messages and its source, such as a process resource limit on the | |
631 number of file descriptors. | |
632 <P> | |
633 Another common limit is the maximum number of file descriptors | |
634 allowed by the <EM>select</EM> system call. | |
635 This limit can be escaped by building the sendmail milter library to | |
636 use the <EM>poll</EM> system call. | |
637 | |
638 | |
639 | |
640 | |
641 <P><DT><A NAME="server-pick"> | |
642 Why doesn't my DCC client pick my local DCC server?</A> | |
643 <DD> | |
644 The DCC clients including <A HREF="dccm.html">dccm</A> | |
645 and <A HREF="dccproc.html">dccproc</A> pick the nearest and fastest | |
646 server in the list kept in the <A HREF="cdcc.html#FILE-map">@prefix@/map</A> | |
647 file. | |
648 DCC servers not in that list will not be used. | |
649 That list can be viewed with the | |
650 <A HREF="cdcc.html#OPERATION-info">cdcc info</A> | |
651 or | |
652 <A HREF="cdcc.html#OPERATION-RTT">cdcc RTT</A> operations. | |
653 Add to the list with | |
654 <A HREF="cdcc.html#OPERATION-add">cdcc add</A> | |
655 or <A HREF="cdcc.html#OPERATION-load">cdcc load</A>. | |
656 <P> | |
657 A nearby server that seems slower than a more distant server will | |
658 not be chosen. | |
659 The anonymous user delay set with <A HREF="dccd.html#OPTION-u">dccd -u</A> | |
660 is intended to make a server appear slow to "freeloaders." | |
661 The "RTT +/-" value that can be used with | |
662 the <A HREF="cdcc.html#OPERATION-add">cdcc add</A> | |
663 and <A HREF="cdcc.html#OPERATION-load">cdcc load</A> | |
664 operations can be used to force DCC clients to prefer or avoid servers | |
665 except when absolutely necessary. | |
666 | |
667 | |
668 | |
669 <P><DT><A NAME="IDs1"> | |
670 If I have a server-ID, do I need a DCC client-ID, or vice versa?</A> | |
671 <DD> | |
672 DCC <A HREF="dcc.html#Client-and-Server-IDs">server and client-IDs</A> | |
673 serve distinct purposes. | |
674 Servers require server-IDs to identify each other in the floods of checksums | |
675 they exchange and to recognize authorized users of powerful | |
676 cdcc operations such as <A HREF="cdcc.html#OPERATION-stop">stop</A>. | |
677 DCC servers require client-IDs to identify paying clients that should | |
678 be given quicker service that anonymous clients, to refuse reports from | |
679 anonymous clients, or to refuse even to answer queries from anonymous | |
680 clients. | |
681 | |
682 | |
683 <P><DT><A NAME="IDs2"> | |
684 Why does my DCC server complain about | |
685 "rejected server-IDs" among flooded checksum reports?</A> | |
686 <DD> | |
687 You have turned on IDS tracing, but do not have a | |
688 <A HREF="dccd.html#FILE-ids">@prefix@/ids</A> file that is complete. | |
689 You don't need and probably will not have a complete file unless you | |
690 are assigning DCC server-IDs. | |
691 <P>Redundant paths among DCC servers exchanging | |
692 or flooding reports of checksums would cause duplicate entries in | |
693 each server's database without the mechanism that depends on every DCC server | |
694 having a unique server-ID. | |
695 With IDS tracing enabled, <A HREF="dccd.html#OPTION-T">dccd</A> complains | |
696 about server-IDs that are not listed in the local | |
697 <A HREF="dccd.html#FILE-ids">@prefix@/ids</A> file. | |
698 | |
699 <P><DT><A NAME="server-rate-limits"> | |
700 Why does my DCC server refuse to accept more than | |
701 50 operations per second?</A> | |
702 <DD> | |
703 A common cause of such problems is one of the DCC server's | |
704 defenses against denial of service attacks. | |
705 A DCC server cannot know anything about anonymous clients, | |
706 or clients using client-ID 1 or without a client-ID and matching password | |
707 from the <A HREF="dccd.html#FILE-ids">@prefix@/ids</A> file. | |
708 As far as your server can know, an anonymous client sending many | |
709 operations is run by an unhappy sender of unsolicited bulk mail trying | |
710 to flood your server with a denial of service attack. | |
711 It is easy to tell your client its ID with the | |
712 <A HREF="cdcc.html#OPERATION-add">cdcc add</A> | |
713 or <A HREF="cdcc.html#OPERATION-load">load</A> operations. | |
714 <P> | |
715 The default limits can changed by | |
716 adding an <A HREF="dccd.html#OPTION-R">dccd -R</A> argument | |
717 can be added to DCCD_ARGS in the | |
718 <A HREF="homedir/dcc_conf.in">dcc_conf</A> file in the DCC home directory, | |
719 | |
720 | |
721 <P><DT><A NAME="private-server"> | |
722 How do I keep strangers from using my DCC server?</A> | |
723 <DD> | |
724 See the <A HREF="dccd.html#OPTION-u">dccd -u</A> option. | |
725 | |
726 | |
727 <P><DT><A NAME="dccm-log1"> | |
728 How can I determine why</A> <A HREF="dccm.html">dccm</A> reported | |
729 a message as spam or with a recipient count of "MANY"? | |
730 <DD> | |
731 Dccm is usually configured to log mail with recipient counts greater | |
732 than the <A HREF="dccm.html#OPTION-t">-t ,log-thold,</A> | |
733 as well as mail with some conflicts among | |
734 <A HREF="dcc.html#White-and-Blacklists">whitelist</A> entries. | |
735 Each log file contains a single message, its checksums, its disposition, | |
736 and other information as described in the | |
737 <A HREF="dccm.html#FILE-logdir">dccm man page</A>. | |
738 <P> | |
739 See also the <A HREF="dblist.html#OPTION-C">dblist -C</A> command. | |
740 | |
741 | |
742 <P><DT><A NAME="dblist1"> | |
743 How can I see what checksums my server has heard from its clients?</A> | |
744 <DD> | |
745 The <A HREF="dblist.html#OPTION-v">dblist -Hv</A> | |
746 command displays the contents of the database. | |
747 Look for records with your | |
748 <A HREF="dcc.html#Client-and-Server-IDs">server-ID</A> | |
749 with <A HREF="dblist.html#OPTION-I">dblist -I</A>. | |
750 | |
751 | |
752 <P><DT><A NAME="whitelist13"> | |
753 How do I stop DCC false positives?</A> | |
754 <DD> | |
755 You are probably not seeing false positives. | |
756 The Distributed Checksum Clearing Houses detect both solicited | |
757 and unsolicited bulk mail, while spam is only unsolicited bulk email. | |
758 For your DCC client, <A HREF="dccm.html">dccm</A>, | |
759 <A HREF="dccifd.html">dccifd</A>, or | |
760 <A HREF="dccproc.html">dccproc</A>, to know to ignore bulk mail messages | |
761 that are solicited, it must be told by entries the main or a per-user | |
762 whitelist or <A HREF="homedir/whiteclnt">whiteclnt</A> file. | |
763 | |
764 | |
765 | |
766 <P><DT><A NAME="whitelist1"> | |
767 Why is mail from my favorite mailing list marked with an | |
768 <I>X-DCC</I> header line that says it is spam?</A> | |
769 <DD> | |
770 Sources of solicited bulk mail including mailing lists to which | |
771 you have subscribed should usually be in your DCC client | |
772 <A HREF="dcc.html#White-and-Blacklists">whitelist</A> | |
773 so that they receive no <I>X-DCC</I> header lines. | |
774 | |
775 | |
776 <P><DT><A NAME="whitelist11"> | |
777 Why are acknowledgments of spam reports mistakenly marked as spam by DCC?</A> | |
778 <DD> | |
779 There is probably no mistake. | |
780 DCC detect bulk mail and not only unsolicited bulk mail. | |
781 Whether a bulk message is spam depends on whether you solicited or asked for it. | |
782 Some INTERNET service providers have sent literally millions of | |
783 acknowledgments of spam reports, which makes them bulk mail. | |
784 Bulk mail you want to receive should be | |
785 <A HREF="dcc.html#White-and-Blacklists">whitelisted</A> | |
786 in your master or per-user | |
787 <A HREF="homedir/whiteclnt">whiteclnt</A> file. | |
788 | |
789 | |
790 <P><DT><A NAME="x-dcc-header1"> | |
791 Why are some checksums missing from my <I>X-DCC</I> header lines?</A> | |
792 <DD> | |
793 If the DCC client was not able to compute a checksum for a message, | |
794 it will not ask the server about that checksum and the checksum will | |
795 not appear in the <I>X-DCC</I> header. | |
796 For example, if <A HREF="dccproc.html">dccproc</A> is not told and | |
797 cannot figure out the IP address of the source of the message, | |
798 that checksum will be missing. | |
799 The <I>Fuz1</I> and <I>Fuz2</I> checksums cannot be computed for | |
800 messages that are too small, and so will be missing for them. | |
801 A checksum will also be missing if the DCC server is configured to not count | |
802 it. | |
803 | |
804 | |
805 <P><DT>Do I need both server and client | |
806 <A NAME="whitelist2" HREF="dcc.html#White-and-Blacklists"> | |
807 whitelists</A>? | |
808 <DD> | |
809 The <A HREF="homedir/whitelist">server whitelist file</A> | |
810 used explicitly by <A HREF="dbclean.html#FILE-whitelist">dbclean</A> | |
811 and implicitly by <A HREF="dccd.html#FILE-whitelist">dccd</A> | |
812 is not very useful and probably a bad idea. | |
813 <P> | |
814 The <A HREF="homedir/whiteclnt">client whitelist files</A> | |
815 used by | |
816 <A HREF="dccproc.html#FILE-whiteclnt">dccproc</A>, | |
817 <A HREF="dccm.html#FILE-whiteclnt">dccm</A>, | |
818 and | |
819 <A HREF="dccifd.html#FILE-whiteclnt">dccifd</A> | |
820 are generally required. | |
821 Client whitelists apply only to the stream of mail handled by the | |
822 DCC client, | |
823 while server whitelists apply to reports of mail from all DCC clients | |
824 of the DCC server. | |
825 <P> | |
826 <A HREF="dccproc.html">Dccproc</A> is intended for use by individual users | |
827 with programs such as | |
828 <A HREF="http://www.procmail.org/">procmail</A>. | |
829 Because the global whiteclnt file usually found in the DCC home directory | |
830 is as likely to be used as a private file, | |
831 the file name must be explicitly specified with | |
832 <A HREF="dccproc.html#OPTION-w">dccproc -w whiteclnt</A>. | |
833 A perhaps inconvenient implication is programs such as | |
834 <A HREF="http://spamassassin.apache.org/">SpamAssassin</A> that | |
835 switch unpredictably between dccproc and <A HREF=dccifd.html>dccifd</A> | |
836 might get inconsistent results unless they invoke dccproc with the global | |
837 whiteclnt file. | |
838 | |
839 | |
840 <P><DT><A NAME="whitelist9"></A> | |
841 How do I maintain client | |
842 <A HREF="dcc.html#White-and-Blacklists">whitelists</A>? | |
843 <DD> | |
844 Start by monitoring bulk mail in the | |
845 global log directories specified with | |
846 <A HREF="dccproc.html#OPTION-l">dccproc -l</A> | |
847 and with DCCM_LOGDIR and DCCM_USERDIRS in the | |
848 <A HREF="homedir/dcc_conf.in">@prefix@/dcc_conf</A> file | |
849 for <A HREF="dccm.html#OPTION-l">dccm</A>, | |
850 and | |
851 <A HREF="dccifd.html#OPTION-U">dccifd</A>. | |
852 Then add entries to whitelist files. | |
853 <P> | |
854 The global | |
855 <A HREF="homedir/whiteclnt">@prefix@/whiteclnt</A> file | |
856 and the whitelists specified with | |
857 <A HREF="dccproc.html#OPTION-w">dccproc -w</A> are maintained | |
858 with ordinary text editors. | |
859 <P> | |
860 Per-user whitelists in whiteclnt files | |
861 specified with DCCM_USERDIRS in the | |
862 <A HREF="homedir/dcc_conf.in">@prefix@/dcc_conf</A> file | |
863 are easily maintained with ordinary text editors by the system administrator. | |
864 However, it is often better to let individual users deal with their | |
865 own whitelists. | |
866 The DCC source includes sample CGI scripts | |
867 in the <A HREF="cgi-bin/">cgi-bin directory</A> in the DCC source | |
868 to let individual end-users monitor their private logs of bulk mail | |
869 and their individual whitelists. | |
870 See the <A HREF="cgi-bin/README">README</A> file for those scripts. | |
871 There is also a | |
872 <A HREF="http://www.rhyolite.com/dcc/#cgi-demo">demonstration</A> | |
873 of the cgi scripts. | |
874 | |
875 | |
876 <P><DT><A NAME="whitelist3"></A> | |
877 When the <A HREF="homedir/whiteclnt">whitelist file</A> | |
878 used by <A HREF="dccm.html#FILE-whiteclnt">dccm</A>, | |
879 <A HREF="dccd.html#FILE-whitelist">dccd</A>, | |
880 or <A HREF="dccifd.html#FILE-whiteclnt">dccifd</A> | |
881 is changed, | |
882 what must be done to tell the software about the change? | |
883 <DD> | |
884 The DCC clients notice when their whiteclnt files | |
885 as well as included files change and automatically rebuild the corresponding | |
886 <A HREF="dccm.html#FILE-whiteclnt.dccw">.dccw hash table</A> files. | |
887 <P> | |
888 Changes to the DCC server or dccd | |
889 <A HREF="dccd.html#FILE-whitelist">whitelist</A> | |
890 are not effective until after <A HREF="dbclean.html">dbclean</A> is run. | |
891 <P> | |
892 Some text editors including versions of <EM>vi</EM> lock their files. | |
893 <A HREF="dccm.html#FILE-whiteclnt">Dccm</A>, | |
894 <A HREF="dccproc.html#FILE-whiteclnt">dccproc</A>, | |
895 and <A HREF="dccifd.html#FILE-whiteclnt">dccifd</A> | |
896 are unable to read whitelist files while they are locked. | |
897 | |
898 | |
899 <P><DT><A NAME="whitelist14"> | |
900 How do I test a whiteclnt file?</A> | |
901 <DD> | |
902 An easy way to test a DCC client whitelist or | |
903 <A HREF="homedir/whiteclnt">whiteclnt</A> file | |
904 is to feed dccproc with a test message. | |
905 For example, the following shell script would test whether the IP address | |
906 127.0.0.1 | |
907 and the SMPT envelope Mail_From value postmaster@example.com are in the | |
908 <EM>whiteclnt</EM> file in the DCC home directory: | |
909 <PRE> | |
910 #!/bin/sh | |
911 /usr/local/bin/dccproc -QCw whiteclnt \ | |
912 -a 127.0.0.1 -f postmaster@example.com <<EOF | |
913 Message-ID: <1234@example.com> | |
914 | |
915 text | |
916 EOF | |
917 </PRE> | |
918 If the script produces something like | |
919 <PRE> | |
920 X-DCC--Metrics: calcite.rhyolite.com; whitelist | |
921 reported: 0 checksum wlist | |
922 IP: e475b896 492c60fc efecb432 6e29e3c5 ok | |
923 env_From: bef98dc1 cc6ea4d7 b8daf07c a2bfbc9e | |
924 Message-ID: 26573398 2ab927cd 681a89fa e502496d | |
925 </PRE> | |
926 then you know that SMTP client IP (mail sender) IP address 127.0.0.1 | |
927 is whitelisted, but the SMTP envelope Mail_From value is not. | |
928 | |
929 | |
930 <P><DT> | |
931 Can I use wild cards or regular expressions in DCC | |
932 <A NAME="reg-exps1" HREF="dcc.html#White-and-Blacklists"> | |
933 whitelists</A>? | |
934 <DD> | |
935 No, regular expressions cannot be used, | |
936 because DCC client and server whitelists are converted to lists of checksums. | |
937 The same basic idea is used for DCC client whitelists | |
938 as for the DCC protocol. | |
939 A DCC client computes the checksums for a message, and then looks | |
940 for those checksums in the local whitelist. | |
941 Depending on the values associated with those checksums, | |
942 the DCC client asks a DCC server about them. | |
943 <P> | |
944 To use regular expressions with the DCC, consider procmail. | |
945 Procmail is included with many UNIX-like systems. | |
946 See also the | |
947 <A HREF="http://www.procmail.org/">Procmail Homepage</A>. | |
948 <P> | |
949 DCC clients can be configured to white- or blacklist | |
950 using called "substitute" headers. | |
951 See <A HREF="dccproc.html#OPTION-S">dccproc -S</A> or | |
952 <A HREF="dccm.html#OPTION-S">dccm -S</A>. | |
953 <P> | |
954 It is also possible to use a sendmail access_db file entries to | |
955 white- or blacklist based on portions of SMTP envelope and | |
956 client IP addresses. | |
957 For example, an access_db file line of "From:example.com OK" | |
958 can be used to tell dccm to whitelist all mail from SMTP clients | |
959 in the example.com domain. | |
960 See the -O argument to the | |
961 <A HREF="misc/hackmc">misc/hackmc</A> script. | |
962 | |
963 | |
964 <P><DT> | |
965 <A NAME="whitelist10">How do I whitelist mail from a legitimate | |
966 bulk mailer using its name or SMTP headers such as Mailing-List | |
967 headers?</A> | |
968 <DD> | |
969 Start by determining an envelope value or SMTP header that distinguishes | |
970 the bulk mail from a sample message or DCC log file. | |
971 The name of the sending computer is the <EM>mail_host</EM> value in | |
972 <A HREF="dccm.html#FILE-logdir">dccm log files</A>. | |
973 If the distinguishing header or envelope value is not among the main | |
974 <A HREF="dcc.html#White-and-Blacklists">DCC whitelist values</A>, | |
975 then a "substitute" value must be used. | |
976 An "ok substitute ..." line must be added to the whitelist file | |
977 and the DCC client program must be told with | |
978 <A HREF="dccproc.html#OPTION-S">dccproc -S</A> or | |
979 <A HREF="dccm.html#OPTION-S">dccm -S</A>. | |
980 There are example whitelist entries in the sample | |
981 <A HREF="homedir/whiteclnt">@prefix@/whiteclnt</A> file. | |
982 <P> | |
983 | |
984 <P><DT><A NAME="incompat-whitelists"> | |
985 Why does dccm or dccifd complain about "incompatible whitelists"?</A> | |
986 <DD> | |
987 There are several points during an SMTP transaction when an SMTP server | |
988 can reject a mail message. | |
989 Early points are when the SMTP client specifies the recipients of the | |
990 mail message. | |
991 The last point is after the entire message has been received by the SMTP | |
992 server. | |
993 Spam filters that check mail message bodies must wait until that last point. | |
994 The SMTP protocol does not allow an SMTP server to reject the | |
995 mail message for only some recipients. | |
996 The SMTP server must tell the SMTP client that the message has been | |
997 accepted for all or rejected for recipients. | |
998 This is a problem when the recipients of a single mail message have | |
999 differing | |
1000 <A HREF="dcc.html#White-and-Blacklists">DCC thresholds or other parameters</A> | |
1001 in their individual whitelist files | |
1002 that require that the mail message be delivered to some mailboxes but | |
1003 rejected for other mailboxes. | |
1004 <P> | |
1005 The DCC client programs solve this conflict in one of two ways. | |
1006 One is telling the SMTP client | |
1007 that the mail message has been accepted for all recipients and then | |
1008 discarding instead of delivering the message for mailboxes with parameters | |
1009 that make it spam. | |
1010 This solution has the disadvantage of not informing senders of the | |
1011 refusal to deliver the message. | |
1012 The other solution is to temporarily reject recipients with possibly | |
1013 incompatible parameters early in the SMTP transaction with the same | |
1014 SMTP error status number as too many recipients for a single SMTP transaction. | |
1015 This second solution has the advantage of ensuring that senders know | |
1016 when their mail is rejected but the disadvantage of sometimes | |
1017 requiring as many SMTP transactions as there are recipients for a mail message. | |
1018 <P> | |
1019 Which solution is used is determined by the | |
1020 <A HREF="dcc.html#White-and-Blacklists">forced-discard-ok</A> | |
1021 and <A HREF="dcc.html#White-and-Blacklists">forced-discard-nok</A> | |
1022 settings in the global and per-user | |
1023 <A HREF="dccm.html#FILE-whiteclnt">whiteclnt</A> files. | |
1024 Unless all recipients for a mail message agree on the first solution, | |
1025 perhaps by <EM>forced-discard-ok</EM> in the main | |
1026 <A HREF="homedir/whiteclnt">whiteclnt</A> file, | |
1027 the second solution is used. | |
1028 | |
1029 | |
1030 <P><DT><A NAME="whitelist4"> | |
1031 Why do legitimate mail messages have | |
1032 <I>X-DCC</I> header lines that say they are "bulk", "many", or spam?</A> | |
1033 <DD> | |
1034 There are several possible causes of such problems. | |
1035 The first and most obvious is that the mail is solicited bulk mail | |
1036 and that the source needs to be added to your | |
1037 <A HREF="dcc.html#White-and-Blacklists">whitelist</A>. | |
1038 | |
1039 <P>Another possible reason is that your individual legitimate mail messages | |
1040 have not been marked as spam because their <I>Body</I> or <I>Fuz1</I> | |
1041 checksum counts are small, but that the IP address or other checksum | |
1042 counts are large. | |
1043 The IP address checksum count, for example, is the total of all reports | |
1044 of addressees for that checksum. | |
1045 That total is independent of the other checksums, and so counts | |
1046 all reports for all messages with that source IP address. | |
1047 A source of legitimate mail that has sent a message that was reported | |
1048 as spam by one of its recipients will often have the totals | |
1049 for the checksums of its IP address, From header, and | |
1050 other values be <I>MANY</I>. | |
1051 This is why it usually does not make sense to reject mail based on what the | |
1052 DCC server reports for the IP address, From header, and other values that | |
1053 are not unique to the message. | |
1054 Only the last Received header line, the Message-ID line, and body checksums | |
1055 can be expected to be unique and sometimes not the Message-ID | |
1056 and Received header lines. | |
1057 | |
1058 <P><DT><A NAME="qmail2"> | |
1059 Why is legitimate mail from someone using <I>qmail</I> | |
1060 marked as spam?</A> | |
1061 <DD> | |
1062 A common cause for that and similar complaints involves | |
1063 null or missing Message-ID header lines. | |
1064 Spam often lacks Message-ID lines or has a null or "<>" ID, | |
1065 so rejecting mail with null or missing Message-IDs can be an | |
1066 effective filter. | |
1067 DCC clients treat missing Message-ID lines as if they were present but null. | |
1068 The sample <A HREF="homedir/whiteclnt">@prefix@/whiteclnt</A> | |
1069 <A HREF="dcc.html#White-and-Blacklists">whitelist</A> file in the DCC source | |
1070 includes the line: | |
1071 <PRE> | |
1072 many message-id <> | |
1073 </PRE> | |
1074 Some Mail Transfer Agents violate section 3.6.4 of RFC 2822 and | |
1075 do not include Message-ID header lines in mail they send, | |
1076 including some combinations of qmail and | |
1077 "<B>sendmail -bs</B>" acting as the originating MTA, | |
1078 and qmail by itself when it is generates a non-delivery message or "bounce." | |
1079 Solutions to this problem include removing that line from your | |
1080 <A HREF="dcc.html#White-and-Blacklists">whitelists</A> | |
1081 or adding lines specifying the From or envelope | |
1082 from values of senders of legitimate mail lacking Message-ID header lines. | |
1083 | |
1084 | |
1085 <P><DT><A NAME="whitelist5"></A> | |
1086 Are <A HREF="dcc.html#White-and-Blacklists">IP address blocks</A> | |
1087 in <A HREF="homedir/whiteclnt">whitelists</A> used by | |
1088 <A HREF="dccproc.html">dccproc</A>? | |
1089 <DD> | |
1090 Yes, <A HREF="dccproc.html">dccproc</A> can whitelist mail | |
1091 by the IP address of the immediately | |
1092 preceding SMTP client, | |
1093 but only if it knows that IP address. | |
1094 Unless the <A HREF="dccproc.html#OPTION-a">dccproc -a</A> | |
1095 or <A HREF="dccproc.html#OPTION-R">dccproc -R</A> | |
1096 options are used, dccproc does not know the IP address. | |
1097 | |
1098 | |
1099 <P><DT><A NAME="whitelist6"> | |
1100 Why is</A> <A HREF="dccproc.html">dccproc</A> is ignoring | |
1101 <A HREF="dcc.html#White-and-Blacklists"><I>env_from</I> whitelist</A> | |
1102 entries? | |
1103 <DD> | |
1104 DCC checksums are of the entire header line or envelope value. | |
1105 An entry in the whitelist file for <I>jsmith@example.com</I> | |
1106 will have no effect on mail with an envelope value of | |
1107 <I>"J.Smith" jsmith@example.com</I>. | |
1108 The file must contain <I>"J.Smith" jsmith@example.com</I>. | |
1109 <P> | |
1110 Another common cause for this problem is implied by the fact that | |
1111 for an <I>env_from</I> whitelist entry | |
1112 to have any effect, dccproc must be able to find the envelope value | |
1113 in the message in a <I>Return-Path</I> header, | |
1114 an old UNIX-style <I>From_</I> header, or an <B>-f</B> argument. | |
1115 If your mail delivery agent does not add a <I>Return-Path</I> header | |
1116 and you do not use | |
1117 <A HREF="dccproc.html#OPTION-f">dccproc -f</A>, | |
1118 then dccproc cannot know about | |
1119 white or blacklist entries for envelope return addresses. | |
1120 <P> | |
1121 Note also that dccproc has no whitelist by default and | |
1122 that <A HREF="dccproc.html#OPTION-w">dccproc -w</A> | |
1123 must be used. | |
1124 | |
1125 | |
1126 <P><DT><A NAME="delck"> | |
1127 What if I make a mistake with</A> | |
1128 <A HREF="dccproc.html#OPTION-t">dccproc -t many</A> | |
1129 and report legitimate mail as spam? | |
1130 <DD> | |
1131 It is possible to delete checksums from the distributed DCC | |
1132 database with the <A HREF="cdcc.html#OPERATION-delck-type-hex1-hex2-hex3-hex4"> | |
1133 cdcc delck</A> | |
1134 operation. | |
1135 However, it is not worth the trouble. | |
1136 Unless the same (as far as the fuzzy checksums are concerned) message | |
1137 is sent again, no one is likely to notice the mistake before the | |
1138 report of the message's checksums expire from the DCC servers' | |
1139 databases for lack of repetition. | |
1140 | |
1141 | |
1142 <P><DT><A NAME="whitelist8"> | |
1143 Can the sendmail "spamfriend" mechanism tell</A> | |
1144 <A HREF="dccm.html">dccm</A> to not check mail sent to some addresses? | |
1145 <DD> | |
1146 Sendmail decisions to accept, reject, or discard mail are largely | |
1147 independent of the decisions made by dccm. | |
1148 The DCC equivalent is to add | |
1149 <A HREF="dcc.html#White-and-Blacklists">env_to</A> entries to the | |
1150 <A HREF="dccm.html#FILE-whiteclnt">dccm whitelist</A>. | |
1151 See the sample <A HREF="homedir/whiteclnt">@prefix@/whiteclnt</A> file in the | |
1152 DCC source | |
1153 <P> | |
1154 However, if your sendmail.cf file sets the | |
1155 <I>dcc_notspam</I> macro while processing the | |
1156 envelope, then the message will by whitelisted. | |
1157 This is related to the <I>dcc_isspam</I> macro | |
1158 used by sendmail.cf modified by <A HREF="misc/hackmc">misc/hackmc -R</A> | |
1159 to tell dccm to report blacklisted messages as spam to the DCC server. | |
1160 | |
1161 | |
1162 <P><DT><A NAME="whitelist12"> | |
1163 How do I tell</A> <A HREF="dccm.html">dccm</A> | |
1164 to not check mail for an entire domain? | |
1165 <DD> | |
1166 To whitelist all mail addressed to mailboxes in a domain, | |
1167 add the following line to the sendmail access_DB file and rebuild | |
1168 the database with the sendmail tool, <I>makemap</I>: | |
1169 <PRE> | |
1170 To:domain.com DCC:OK | |
1171 </PRE> | |
1172 <P> | |
1173 You can apply finer control by adding | |
1174 a third argument to the FEATURE(dcc) macro in your sendmail.mc file | |
1175 as described in | |
1176 <A HREF="misc/dcc.m4.in">misc/dcc.m4</A>. | |
1177 All mail for the domain can use a single "per-user" | |
1178 <A HREF="homedir/whiteclnt">whiteclnt</A> file, | |
1179 often in the @prefix@/userdirs/esmtp/example.com, where @prefix@/userdirs | |
1180 is the default value for <EM>DCCM_USERDIRS</EM>in the DCC configuration file | |
1181 <A HREF="homedir/dcc_conf.in">@prefix@/dcc_conf</A>. | |
1182 Making @prefix@/userdirs/esmtp a symbolic link to @prefix@/userdir/local | |
1183 can be handy. | |
1184 | |
1185 | |
1186 <P><DT><A NAME="false-positives"> | |
1187 How can I avoid polluting databases of DCC servers with | |
1188 checksums of my mail that is not spam?</A> | |
1189 <DD> | |
1190 Reports of checksums with | |
1191 <A HREF="dcc.html#White-and-Blacklists">whitelist</A> | |
1192 entries in your server's database are not flooded to its peers. | |
1193 The checksums of messages whitelisted with entries in local | |
1194 <A HREF="dccm.html">dccm</A> or <A HREF="dccproc.html">dccproc</A> | |
1195 whitelists are not reported to DCC servers. | |
1196 It is good to add entries to DCC server and client | |
1197 <A HREF="dcc.html#White-and-Blacklists">whitelists</A> | |
1198 for localhost, your IP address blocks, and your domains if | |
1199 you know that none of your users will ever send spam. | |
1200 <P> | |
1201 However, in the common mode in which the DCC is used, no | |
1202 checksums of mail are pollution. | |
1203 Checksums of genuinely private mail will have target counts of | |
1204 1 or a small number, and so will not be flooded by your server to | |
1205 other servers. | |
1206 Strangers will not see your private mail and so will not be able | |
1207 to ask any DCC server about the checksums of your private mail. | |
1208 On the other hand, the DCC functions best by collecting reports | |
1209 of the receipt of bulk mail as soon as possible. | |
1210 That implies that it is generally desirable | |
1211 to send reports of all mail to a DCC server. | |
1212 The DCC flooding protocol does not send checksums with counts | |
1213 below 10 <!--fix if BULK_THRESHOLD changes--> | |
1214 to other servers. | |
1215 | |
1216 | |
1217 <P><DT><A NAME="spamtrap"> | |
1218 Can DCC be fed with <Q lang="en-us">spam traps</Q>?</A> | |
1219 <DD> | |
1220 A spam trap is a mail address that should practically | |
1221 never receive legitimate mail, | |
1222 and that treats any mail that it does receive as spam. | |
1223 A spam trap might a common name such as | |
1224 <Q lang="en-us">user1</Q> that has never been valid | |
1225 and is discovered by unsolicited bulk email | |
1226 advertisers by <Q lang="en-us">dictionary attacks</Q> or guessing. | |
1227 It might instead be an address hidden in a web page | |
1228 or a mailbox of an account that has been disabled for many months. | |
1229 <P> | |
1230 Any spam trap might receive legitimate mail. | |
1231 For example, a spam trap that differs from an ordinary mailbox by a | |
1232 single character might receive mail intended for the ordinary mailbox. | |
1233 It might be best for a system to reject mail sent to such a trap so | |
1234 that legitimate mail senders know that their messages have gone astray. | |
1235 A mailbox that is a long string of arbitrary letters and digits is much | |
1236 less likely to receive legitimate messages and so might best accept | |
1237 all messages without complaint. | |
1238 <P> | |
1239 There are several ways to connect | |
1240 <Q lang="en-us">spam trap</Q> mailboxes to DCC: | |
1241 <DL> | |
1242 <DT><A HREF="dccproc.html">dccproc</A> | |
1243 <DD> | |
1244 For example, | |
1245 <PRE>dccproc -R -tMANY -cCMN,MANY -o/dev/null</PRE> | |
1246 will accept a message on STDIN, | |
1247 look for the IP address of the sender among | |
1248 <Q lang="en-us">Received:</Q> SMTP fields, | |
1249 reports the message to the DCC server as spam and the IP address as the sender, | |
1250 and exit with the default value of | |
1251 <A HREF="dccproc.html#OPTION-x">dccproc -x</A>. | |
1252 <P> | |
1253 <DT>dccif-test | |
1254 <DD> | |
1255 dccif-test was written to test the interface to the DCC interface daemon, | |
1256 <A HREF="dccifd.html">dccifd</A>. | |
1257 When wired to a spam trap, it is more efficient than dccproc. | |
1258 For example, | |
1259 <PRE>dccif-test -cclnt-IP-addr -oSPAM -O/dev/null</PRE> | |
1260 will do much the same as the dccproc example above. | |
1261 <P> | |
1262 <DT><A HREF="dcc.html#White-and-Blacklists">whiteclnt file</A> option line | |
1263 <DD> | |
1264 The best way to build a spam trap is with a | |
1265 per-user <A HREF="dccm.html#OPTION-w">whiteclnt file</A> | |
1266 with an | |
1267 <EM>option spam-trap-accept</EM> or <EM>option spam-trap-reject</EM> | |
1268 line. | |
1269 <P> | |
1270 With sendmail, virtual user mapping can be used to send mail to invalid | |
1271 mailboxes to a single mailbox whose corresponding DCC per-user | |
1272 whiteclnt file contains an | |
1273 <EM>option spam-trap-accept</EM> or <EM>option spam-trap-reject</EM> | |
1274 line. | |
1275 </DL> | |
1276 | |
1277 | |
1278 <P><DT><A NAME="flood3"> | |
1279 How many flooding peers does my DCC server need?</A> | |
1280 <DD> | |
1281 A single flooding peer delivers all reports of checksums of bulk | |
1282 mail seen by any DCC server. Additional peers provided reports | |
1283 sooner and so help the clients of a peer detect spews of spam sooner. | |
1284 However, more peers will cause more reports to be duplicates. | |
1285 <P> | |
1286 A DCC server in a network of many servers should have at least three | |
1287 flooding peers to ensure that the failure of a single server or network | |
1288 link cannot partition the network. | |
1289 Limiting the number the number of peers of any server to four or perhaps | |
1290 a few more ensures that no single server is critical to the network. | |
1291 To minimize the distances in the network, four peers | |
1292 per server seem necessary. | |
1293 <P> | |
1294 An organization with more than one server can be viewed as a single | |
1295 server by other organizations, with its servers flooding each other | |
1296 and external peers spread among its servers. | |
1297 This protects the network should the organization suffer large scale problems | |
1298 while protecting the organization from single points of failure. | |
1299 | |
1300 | |
1301 <P><DT><A NAME="flood1"> | |
1302 Do I need to tell the operators of other DCC servers | |
1303 the password for controlling my server to turn on flooding?</A> | |
1304 <DD> | |
1305 No, you do not need to and generally should not tell other DCC server | |
1306 operators the passwords for controlling your server with | |
1307 the <A HREF="cdcc.html">cdcc</A> command. | |
1308 Every Inter-server flood of checksums is authorized by lines in | |
1309 each server's <A HREF="dccd.html#FILE-flod">@prefix@/flod</A> file | |
1310 and authenticated by the password associated with the | |
1311 <A HREF="dccd.html#FILE-flod">passwd-ID</A> in those lines. | |
1312 The passwd-ID is a <A HREF="dcc.html#Client-and-Server-IDs">server-ID</A> | |
1313 defined in the <A HREF="dccd.html#FILE-ids">@prefix@/ids</A> file | |
1314 that should generally be used only to authenticate floods of checksums. | |
1315 | |
1316 | |
1317 <P><DT><A NAME="flood2"> | |
1318 How can I figure out why flooding is not working?</A> | |
1319 <DD> | |
1320 Many DCC server problems can be diagnosed by turning | |
1321 on one or more of the tracing modes in the server with the | |
1322 <A HREF="cdcc.html#OPERATION-trace">cdcc trace</A> operation | |
1323 or by restarting the server with | |
1324 <A HREF="dccd.html#OPTION-T">dccd -T</A>. | |
1325 <P> | |
1326 The <A HREF="cdcc.html#OPERATION-flood-list">cdcc flood list</A> | |
1327 operation displays the current flooding peers of a DCC server. | |
1328 Counts of checksum reports sent and received to and from | |
1329 a single peer can be displayed with | |
1330 <A HREF="cdcc.html#OPERATION-flood-stats">cdcc "flood stats ID"</A> | |
1331 <P> | |
1332 The positions in the local database of outgoing streams of checksums | |
1333 are displayed by the start of <A HREF="dblist.html">dblist -Hv</A>. | |
1334 | |
1335 | |
1336 <P><DT><A NAME="rtt"> | |
1337 Why didn't the RTT reported by the</A> | |
1338 <A HREF="cdcc.html#OPERATION-info">cdcc info</A> operation | |
1339 change when my network topology changed? | |
1340 <DD> | |
1341 The RTT or round trip time is an average value. | |
1342 Changes in network topology, server load, and so forth are not | |
1343 immediately reflected in the RTT to avoid switching DCC servers | |
1344 too frequently. | |
1345 | |
1346 | |
1347 <P><DT><A NAME="socks1"> | |
1348 When my clients are configured to use SOCKS, they do not | |
1349 realize immediately when a server is down.</A> | |
1350 <DD> | |
1351 When configured to use SOCKS, DCC clients cannot "connect" | |
1352 to a server and so do not receive ICMP errors and must wait for | |
1353 timeouts to know the server is not answering. | |
1354 | |
1355 | |
1356 </DL> | |
1357 | |
1358 <P> | |
1359 <HR> | |
1360 <P class=small> | |
1361 This document describes DCC version 1.3.103. | |
1362 <P> | |
1363 <A HREF="http://www.dcc-servers.net/dcc/"> | |
1364 <IMG SRC="http://logos.dcc-servers.net/border.png" | |
1365 class=logo ALT="DCC logo"> | |
1366 </A> | |
1367 <A HREF="http://validator.w3.org/check?uri=referer"> | |
1368 <IMG class=logo ALT="Valid HTML 4.01 Strict" | |
1369 SRC="http://www.w3.org/Icons/valid-html401"> | |
1370 </A> | |
1371 </BODY> | |
1372 </HTML> | |
1373 <!-- LocalWords: dccproc libmilter pthreads procmail dccm dccd DCC libmilter | |
1374 --> | |
1375 <!-- LocalWords: homedir dbclean setenv nbsp Solaris crontab Linux ICMP flod | |
1376 --> | |
1377 <!-- LocalWords: gmake FreeBSD NetBSD CFLAGS PTHREAD LDFLAGS LIBS HPUX IDs DT | |
1378 --> | |
1379 <!-- LocalWords: cdcc DL DD ids var RTT TD TR whiteclnt dccifd whitelist MTA | |
1380 --> | |
1381 <!-- LocalWords: hackmc busters whitelisted dblist SpamAssassin | |
1382 --> | |
1383 <!-- LocalWords: ARGS | |
1384 --> |