comparison INSTALL.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 <TITLE>DCC Installation</TITLE>
5 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
6 <META HTTP-EQUIV="Content-Style-Type" content="text/css">
7 <STYLE type="text/css">
8 <!--
9 BODY {background-color:white; color:black}
10 TABLE.centered {margin-left: auto; margin-right: auto; }
11 TD {font-size:80%}
12 TD.env {font-family:monospace}
13 TD.conf {font-family:monospace}
14 DL.compat {margin-left:5%; margin-right:10%}
15 .small {font-size:smaller}
16 SUP {font-size:smallest}
17 IMG.logo {width:6em; vertical-align:middle}
18 -->
19 </STYLE>
20 </HEAD>
21
22 <BODY>
23 <H1>Distributed Checksum Clearinghouse (DCC) Installation</H1>
24
25 <P>
26 <OL>
27 <LI><H3>Fetch the Source and Read the License</H3>
28 The DCC source is available at
29 <A HREF="http://www.dcc-servers.net/dcc/">dcc-servers.net</A>
30 and
31 <A HREF="http://www.rhyolite.com/dcc/">Rhyolite Software</A>.
32 <P>
33 Please <EM>do not</EM> try to use the more than 3 year old modified
34 versions of DCC software distributed by some Linux packagers.
35 Those versions do not detect bulk mail as well as more recent versions.
36 Installations using those old versions also have problems using the
37 public DCC servers that often make it necessary to add their IP addresses
38 to the blacklist that protects the public DCC servers.
39 Even worse, all known Linux redistributions of DCC software have been
40 changed in ways that break things, including the
41 <A HREF="misc/updatedcc.in">libexec/updatedcc</A> shell script that could
42 otherwise be used to fetch, configure, compile, install, and restart
43 a current version.
44 <P>
45 The license on the free source is in the source as well as
46 <A HREF="http://www.dcc-servers.net/dcc/dcc-tree/LICENSE">dcc-servers.net</A>
47 and
48 <A HREF="http://www.rhyolite.com/dcc/dcc-tree/LICENSE">Rhyolite
49 Software</A>.
50 The free license is intended to cover individuals and organizations
51 including Internet service providers using DCC to filter their own mail.
52 Organizations selling anti-spam appliances or managed mail services are
53 not eligible for the free license.
54
55
56 <P><LI><H3>Read the Documentation</H3>
57 <P>
58 The <A HREF="dcc.html#Installation-Considerations">DCC</A>
59 and other man pages describe the features, operating modes,
60 required data files, and other characteristics of the DCC.
61 Also see the DCC <A HREF=FAQ.html>FAQ</A>
62 or list of frequently answered questions.
63
64
65 <P><LI><H3><A NAME="step-sendmail">Build Sendmail</A></H3>
66 If the DCC-sendmail interface, <A HREF="dccm.html">dccm</A>, is not used,
67 then <B>skip</B> to the <A HREF="#step-compile">next step</A>.
68 <P>
69 Sendmail must have the
70 Mail Filter API or Milter enabled.
71 Some systems such a FreeBSD 4.6 and newer are shipped with
72 Milter enabled and the library installed by default.
73 If your system comes with the Milter interface turn on,
74 then <B>skip</B> to the <A HREF="#step-compile">next step</A>.
75 Otherwise, the Milter interface must be explicitly enabled
76 by adding lines like those in
77 <A HREF="misc/site.config.m4">misc/site.config.m4</A>
78 to your sendmail/devtools/Site/site.config.m4 file or equivalent.
79 Then build sendmail as described in the INSTALL file distributed with sendmail.
80 You must build <CODE>libmilter</CODE> separately by something like
81 <PRE>
82 cd libmilter
83 sh ./Build
84 </PRE>
85 <P>
86 After sendmail has been rebuilt if necessary it will need to be restarted.
87 That should be done after <A HREF="#step-compile">the next step</A>
88 after <A HREF="misc/dcc.m4">misc/dcc.m4</A> has been created by the
89 <EM>./configure</EM> script.
90
91
92 <P><LI><H3><A NAME="step-compile">Configure, Build, and
93 Install the DCC Programs</A></H3>
94 <P>
95 See the installation considerations in the
96 <A HREF="dcc.html#Installation-Considerations">DCC man page</A>.
97 <P>
98 Most DCC files are in a "home directory" such as @prefix@.
99 DCC programs such as cdcc and dccproc are run by end
100 users and should be installed in a directory such as /usr/local/bin.
101 They must also be set-UID to the UID that can change the DCC
102 data files.
103 DCC programs that do not need to be run by end users
104 are installed by default in the libexec subdirectory of the DCC home directory.
105 See the <A HREF="#envtbl">table</A> of
106 <EM>./configure</EM> script and makefile parameters.
107 If necessary, set CFLAGS, LDFLAGS, LIBS or other environment variables
108 listed in the <A HREF="#envtbl">table</A>.
109 Omit any parameters you don't really need to change and usually use only:
110 <PRE>
111 ./configure
112 make install
113 </PRE>
114 <P>
115 End users installing only <A HREF="dccproc.html">dccproc</A>
116 can install it in their private
117 <Q>~/bin</Q> directories and use private directories for their DCC
118 home directories.
119 In this case, the DCC programs that would otherwise need to be set-UID
120 need not be.
121 <P>
122 To build <A HREF="dccproc.html">dccproc</A>
123 <A NAME="individual-user">for an individual user</A>,
124 use something like
125 <PRE>
126 ./configure <A HREF="#envtbl--disable-sys-inst">--disable-sys-inst</A> <A HREF="#envtbl--disable-dccm">--disable-dccm</A> <A HREF="#envtbl--homedir">--homedir=$HOME/dccdir</A> <A HREF="#envtbl--bindir">--bindir=$HOME/bin</A>
127 make install
128 </PRE>
129 <P>
130 The sendmail interface, <A HREF="dccm.html">dccm</A>,
131 must be built with the sendmail source and object tree.
132 By default, the makefiles look for a
133 native sendmail libraries (e.g. on FreeBSD 4.6), an installed "package"
134 (e.g. on FreeBSD), or a directory named sendmail parallel to the DCC
135 source and object tree.
136 Those who regularly build new versions of sendmail may find it convenient
137 to make a symbolic link there to their current sendmail.
138 Otherwise configure the dccm makefile with
139 <PRE>
140 ./configure <A HREF="#envtbl--with-sendmail">--with-sendmail</A>=/some/where/sendmail
141 make install
142 </PRE>
143 If dccm does not build because it cannot find libmilter,
144 check that libmilter was compiled with sendmail
145 in the <A HREF="#step-sendmail">previous step</A>.
146 <P>
147 To connect the sendmail Milter interface to <A HREF="dccm.html">dccm</A>,
148 copy or "sym-link" <A HREF="misc/dcc.m4">misc/dcc.m4</A> to
149 your sendmail/cf/feature directory and
150 add <CODE>FEATURE(dcc)</CODE> lines to your sendmail.mc configuration file.
151 Then rebuild and reinstall your sendmail.cf file, and restart sendmail.
152
153
154 <P><LI><H3>Create Client Configuration Files</H3>
155 All DCC configuration files are in the DCC home directory, usually @prefix@.
156 See the
157 <A HREF="dcc.html#Client-Installation">dcc</A>,
158 <A HREF="dccm.html#FILES">dccm</A>,
159 <A HREF="dccifd.html#FILES">dccifd</A>,
160 and <A HREF="dccproc.html#FILES">dccproc</A>
161 man pages
162 for the files each needs.
163 Example files are in the <A HREF="homedir/">homedir</A> directory in the source.
164
165 <UL>
166 <LI>Unless run anonymously, DCC clients need client-ID numbers and passwords
167 assigned by the operators of the chosen DCC servers in the @prefix@/map file.
168 <LI><P>Even if run anonymously, the @prefix@/map file must contain the IP addresses
169 of DCC servers.
170 If your mail system handles fewer than 100,000 mail messages per day,
171 the installation process generates a serviceable @prefix@/map file
172 from the included <A HREF="homedir/map.txt">homedir/map.txt</A>.
173 That file points to the public DCC servers.
174
175 <LI><P>If using remote DCC servers such as the public DCC servers,
176 ensure that your firewalls allow outgoing packets to UDP port 6277
177 on distant systems and incoming responses from UDP port 6277.
178 There is a
179 <A HREF="http://www.dcc-servers.net/dcc/firewall.html">description</A>
180 one firewall's configuration.
181
182 <LI><P>Your MX servers and mail submission clients should be listed in the main
183 <A NAME=whitelist HREF="homedir/whiteclnt">whiteclnt</A> file with lines like:
184 <PRE>
185 mx ip 10.2.3.4
186 mx ip 10.5.6.0/28
187 mxdcc ip 10.5.6.0/28
188 ok ip 10.7.8.9
189 submit ip 192.168.1.0/24
190 </PRE>
191 If those other systems also run DCC clients, use <EM>MXDCC</EM> instead
192 of <EM>MX</EM> so that messages will not be reported twice to the DCC network
193 and so have higher target counts,
194 and appear to be unsolicited bulk mail.
195 <P>
196 Use <EM>OK</EM> for mail systems that you trust to never send or
197 forward unsolicited bulk mail.
198 <P>
199 Untrusted SMTP clients such as end users with browsers used as
200 MUAs (mail user agents) should be listed in the
201 <A HREF="homedir/whiteclnt">whiteclnt</A> file with <EM>submit</EM>.
202
203 <LI><P>Sources of legitimate bulk mail must be recorded in whitelists.
204 Example <A HREF="homedir/whiteclnt">whiteclnt</A>,
205 <A HREF="homedir/whitelist">whitelist</A>, and
206 <A HREF="homedir/whitecommon">common</A> whitelists are among
207 the <A HREF="homedir/">sample configuration files</A> in the homedir directory.
208 The format of DCC whitelists is described in the
209 <A HREF="dcc.html#White-and-Blacklists">DCC</A> man page.
210
211 <LI><P>Put suitable values in the DCC configuration file,
212 <A HREF="homedir/dcc_conf.in">@prefix@/dcc_conf</A> for dccm or dccifd.
213 The default client values are usually good for a start and often only
214 DCCM_REJECT_AT needs to be changed when it is time to reject spam.
215
216 <LI><P>Optionally configure DNS blacklist (DNSBL) checks in
217 <A HREF="dccm.html#OPTION-B">dccm</A>
218 or
219 <A HREF="dccifd.html#OPTION-B">dccifd</A>
220 by setting DNSBL_ARGS in in the configuration file,
221 <A HREF="homedir/dcc_conf.in">dcc_conf</A>, in the home directory.
222
223
224 <LI><P>Optionally create per-user directories for logs and whitelists.
225 See also the
226 <A HREF="cgi-bin/">CGI scripts</A> that allow users to
227 maintain their private whitelists
228 and monitor their individual logs of rejected mail.
229
230 <LI><P>Install a daily or more frequent cron job like
231 <A HREF="misc/crontab.in">misc/crontab</A>
232 and
233 <A HREF="misc/cron-dccd.in">@libexecdir@/cron-dccd</A>
234 to prune <A HREF="dccm.html#FILE-logdir">dccm</A> or
235 <A HREF="dccifd.html#FILE-logdir">dccifd</A>
236 log files and the prune dccd database with
237 <A HREF="dbclean.html">dbclean</A>.
238 </UL>
239
240 <P><LI><H3>Create Server Files and Start the Server</H3>
241 <B><A HREF="#step-greylist">Skip</A></B> this and the next step
242 if only remote DCC servers will be used.
243 You should use your own, local DCC servers if your mail system handles
244 more than 100,000 mail messages per day.
245 <P>
246 It is best to use remote servers until the DCC client,
247 dccm, dccifd, or dccproc, is stable.
248 Then
249 <UL>
250 <LI>Put suitable values for dccd
251 in the configuration file,
252 <A HREF="homedir/dcc_conf.in">dcc_conf</A>.
253 Every DCC server requires a unique
254 <A HREF="dcc.html#Client-and-Server-IDs">server-ID</A>.
255 Obtain a server-ID by contacting Vernon Schryver
256 <A HREF="mailto:vjs@rhyolite.com">vjs@rhyolite.com</A> by email
257 or via a
258 <A HREF="http://www.rhyolite.com/cgi-bin/ct.cgi?sb=DCC+server-ID">web
259 form</A>.
260
261 <LI><P>Choose a secret password for your server-ID in your
262 <A HREF="homedir/ids">@prefix@/ids file</A>.
263 This password can be used to control your server remotely.
264
265 <LI><P>Start the server with the system by installing
266 <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A> or an equivalent.
267 If it is used unchanged, rcDCC is best installed with a symbolic link
268 to automate installing updates.
269 The server can be started manually with
270 <PRE>
271 rcDCC start
272 </PRE>
273
274 <LI><P>The script
275 <A NAME=cleaning HREF="misc/cron-dccd.in">@libexecdir@/cron-dccd</A>
276 <EM>must</EM> be used to run
277 <A HREF="dbclean.html">dbclean</A> about once a day.
278 An entry like <A HREF="misc/crontab.in">misc/crontab</A> can be put into
279 the crontab file for the user that runs dccd.
280 If you have more than one DCC server,
281 stagger the times at which the cron job is run so
282 that not all of your servers are simultaneously busy cleaning databases.
283
284 <LI><P>Install the shutdown script
285 <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A>
286 to shut down the DCC server as the operating system stops.
287 If the DCC server fails to close the database cleanly,
288 the database must be cleaned by the server with it starts.
289 That takes time.
290
291 </UL>
292
293
294
295 <P><LI><H3><A NAME="step-flooding">Configure Flooding</A></H3>
296 <A HREF="#step-greylist">Skip to the next step</A>
297 if only remote DCC servers will be used.
298 <P>
299 Flooding requires that every server participating in a network of DCC
300 servers have a unique server-ID.
301 Server-IDs can be obtained by contacting Vernon Schryver
302 <A HREF="mailto:vjs@rhyolite.com">vjs@rhyolite.com</A> by email
303 or via a
304 <A HREF="http://www.rhyolite.com/cgi-bin/ct.cgi?sb=DCC+server-ID">web
305 form</A>.
306 <P>
307 After you have an official server-ID,
308 <UL>
309 <LI>Obtain the <A HREF="dccd.html#FILE-flod">passwd-ID</A> and its password
310 and add them to your <A HREF="homedir/ids">@prefix@/ids file</A>.
311 <LI>If necessary adjust your firewalls to allow both incoming TCP connections
312 to port 6277 on your DCC server and outgoing TCP connections to port 6277
313 on your flooding peer.
314 <LI>Add a line for each flooding peer to
315 the <A HREF="dccd.html#FILE-flod">@prefix@/flod</A> file.
316 <LI>Wait a few minutes for dccd to notice the change to the file
317 and start flooding.
318 The <A HREF="cdcc.html#OPERATION-stats">cdcc&nbsp;stats</A>,
319 <A HREF="cdcc.html#OPERATION-flood-list">cdcc&nbsp;"id&nbsp;X;&nbsp;flood list"</A>
320 and
321 <A HREF="dblist.html#OPTION-H">@libexecdir@/dblist&nbsp;-Hv</A>
322 commands can be used to monitor the floods of reports of checksums
323 of bulk mail.
324 </UL>
325 <P>
326 Flooded reports of bulk email contain timestamps that are used for several
327 things including expiring old reports.
328 To accurately detect stale incoming reports,
329 a DCC server needs a clock that is not too inaccurate.
330 For that reason it is good to run an NTP daemon on systems running DCC servers.
331
332 <P><LI><H3><A NAME="step-greylist">Configure Greylisting</A></H3>
333 <B>Skip</B> to the <A HREF="#step-start-dccm">next step</A>
334 if greylisting will not be used.
335 Greylist is very effective.
336 See this
337 <A HREF="http://www.dcc-servers.net/dcc/greylist.html">description</A>.
338 <P>
339 Larger sites can use more than one greylist server,
340 with the greylist servers flooding data just like DCC servers.
341 <P>
342 To configure greylisting:
343 <OL>
344 <LI><H4>Assign greylist client- and server-IDs</H4>
345 <P>Client-IDs and matching passwords must be used by clients of
346 greylist servers such as dccm and dccifd.
347 The client-IDs must be in the @prefix@/map file on the client system.
348 Greylist client- and server-IDs must be in the
349 <A HREF="homedir/ids">@prefix@/ids</A> file on the
350 greylist server.
351 When a system hosts both DCC and greylist servers, it is convenient
352 for clients to use the same client-ID and password for both.
353 It is also convenient for a greylist server and a DCC server on a system
354 to share a common server-ID and password.
355 <P>
356 The vast majority of installations, which do not have local DCC servers,
357 can use the greylist server-ID generated by the makefiles in the
358 <A HREF="homedir/ids">@prefix@/ids</A> file.
359
360 <P><LI><H4>Add the greylist server to @prefix@/map</H4>
361 <P>If the
362 cdcc&nbsp;"<A HREF="cdcc.html#OPERATION-info">info</A>"
363 command does not show the correct greylist server,
364 add it with something like
365 <PRE>
366 cdcc "<A HREF="cdcc.html#OPERATION-add">add localhost greylist 32768 secret"</A>
367 </PRE>
368 The DCC makefile files add a greylist server at localhost or 127.0.0.1
369 to <A HREF="cdcc.html#FILES">@prefix@/map</A> file created for a new
370 DCC installation.
371
372 <P><LI><H4>Set @prefix@/dcc_conf</H4>
373 In most installations, enable a local greylist server by
374 installing the script <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A>
375 with a symbolic link,
376 setting <EM>GREY_ENABLE=on</EM> in @prefix@/dcc_conf
377 and then running
378 <PRE>
379 <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A> start
380 </PRE>
381
382 <P>If absolutely necessary, override the greylist
383 <A HREF="dccd.html#OPTION-G">embargo, wait, and white</A> values
384 in GREY_DCCD_ARGS in @prefix@/dcc_conf.
385 Usually simply set GREY_CLIENT_ARGS=on
386
387 <P><LI><H4>Set @prefix@/grey_flod</H4>
388 <P>
389 Sites with more than one greylist server should arrange to flood
390 data among them by adding lines to
391 <A HREF="dccd.html#FILE-grey_flod">@prefix@/grey_flod</A> files
392 in the same format as
393 <A HREF="dccd.html#FILE-flod">@prefix@/flod</A> files.
394 Flooding among greylist servers uses port 6276 by default, and so that
395 port may need to be opened in firewalls.
396
397 <P><LI><H4>Set cron job</H4>
398 <P>
399 Install a daily cron job like
400 <A HREF="misc/crontab.in">misc/crontab</A>
401 and
402 <A HREF="misc/cron-dccd.in">@libexecdir@/cron-dccd</A>
403 to clean the database.
404 <P>
405
406 <P><LI><H4>Whitelist Mail Submission Clients</H4>
407 <P>
408 Greylisting of local mail systems must be turned off because common
409 mail user agents (MUAs) cannot handle temporary rejections.
410 One way to turn off greylisting of local client is with <EM>submit</EM> lines
411 in the main <A HREF="homedir/whiteclnt">whiteclnt</A> file
412 as described <A HREF="#whitelist">above</A>.
413 <P>
414 An alternative to whitelisting mail submission clients is available with
415 <A HREF="dccm.html">dccm</A> and sendmail by using the
416 <A HREF="misc/hackmc">misc/hackmc&nbsp;-T</A>
417 script to modify sendmail.cf to trust SMTP clients authenticated with
418 SMTP-TLS or SMTP-AUTH.
419
420 </OL>
421
422
423
424 <P><LI><H3><A NAME="step-start-dccm">Start dccm</A></H3>
425 If the DCC-sendmail interface, dccm, is not used,
426 <B>skip</B> to the <A HREF="#step-start-dccifd">next step</A>.
427 <P>
428 The DCC sendmail milter interface <A HREF="dccm.html">dccm</A>
429 should be started before sendmail.
430 That often requires changing an /etc/rc script or configuration file.
431 The script <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A>
432 should be installed, best with a symbolic link.
433 The milter daemon can be started manually with
434 <PRE>
435 rcDCC start
436 </PRE>
437
438
439
440 <P><LI><H3><A NAME="step-start-dccifd">Start dccifd</A></H3>
441 If the general MTA interface, dccifd, is not used,
442 <B>skip</B> to the <A HREF="#configure-dccproc">next step</A>.
443 If you are using SpamAssassin, then you almost certainly
444 should be using dccifd.
445 <P>
446 The general MTA interface <A HREF="dccifd.html">dccifd</A>
447 should usually be started before the mail transfer agent or MTA.
448 It should be enabled by setting <EM>DCCIFD_ENABLE=on</EM>
449 in <A HREF="homedir/dcc_conf.in">dcc_conf</A>.
450 It is also usually necessary to change an /etc/rc script or configuration file
451 to start and stop the daemon with the system.
452 The script <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A>
453 should be installed, best with a symbolic link.
454 The daemon can be started manually with
455 <PRE>
456 rcDCC start
457 </PRE>
458 <P>
459 Dccifd can be used as a
460 <A HREF="http://www.postfix.org/SMTPD_PROXY_README.html">Postfix Before-Queue
461 Content filter</A>
462 as described the
463 <A HREF="dccifd.html#EXAMPLES">dccifd documentation</A>.
464
465
466 <P><LI><H3><A NAME="configure-dccproc">Configure Uses of dccproc</A></H3>
467 If dccproc is used with procmail,
468 add rules to procmailrc files as described in the
469 <A HREF="dccproc.html#EXAMPLES">dccproc man page</A>.
470
471 <P><LI><H3>Adjust Rejection Thresholds</H3>
472 <P>It is best to only mark mail with X-DCC SMTP headers
473 before changing procmail or dccm to reject mail.
474 Configure dccm with DCCM_LOG_AT in <A HREF="homedir/dcc_conf.in">dcc_conf</A>
475 to log bulk mail with somewhat lower counts.
476
477
478 <P><LI><H3>Additional Considerations</H3>
479 <P>Some additional mechanisms are available in the DCC client programs.
480 They are often unnecessary when
481 <A HREF="#step-greylist">greylisting</A> is used.
482 <UL>
483 <LI><A HREF="dccm.html#OPTION-B">DNS blacklists (DNSBL)</A>
484 can reject messages containing "spamvertised" URLs.
485 <LI><A HREF="dccm.html#OPTION-t">DCC reputations</A>
486 are available in the commercial version of the DCC source.
487 </UL>
488
489 <P>
490 When possible, it is almost always better to use dccifd than dccproc.
491 This is certainly true with SpamAssassin.
492
493
494
495 <P><LI><H3>Update As Needed</H3>
496 <P>New versions released at the
497 <A HREF="http://www.dcc-servers.net/dcc/">usual place</A>
498 can be installed by running the
499 <A HREF="misc/updatedcc.in">@libexecdir@/updatedcc</A> script.
500 That script is (re)built by the
501 <EM>./configure</EM> script
502 and runs <EM>./configure</EM> with parameters and
503 environment variables from the previous installation.
504
505
506
507 <P><LI><H3>Remove or Uninstall</H3>
508 <P>Most of the DCC can be removed by running
509 <A HREF="misc/uninstalldcc.in">@libexecdir@/uninstalldcc</A> script.
510 Some logs and configuration files with locally chosen parameters in the home
511 directory are not deleted.
512 Manual changes such as links to
513 <A HREF="misc/rcDCC.in">@libexecdir@/rcDCC</A>
514 or the installation of the cron job,
515 <A HREF="misc/cron-dccd.in">@libexecdir@/cron-dccd</A>,
516 are not reversed.
517
518
519 </OL>
520
521
522
523 <H2>Installation Parameters</H2>
524 <P>There are several installation configuration parameters that can
525 set to suit individual preferences and systems.
526
527 <P>
528 <TABLE class=centered border="1" cellpadding="2%" frame=void rules=rows
529 summary="table of makefile and configure script controls">
530 <CAPTION><A NAME="envtbl">
531 <B>Makefile and <EM>./configure</EM> Script Controls
532 <BR>Do NOT set these parameters unless absolutely necessary.</B></A>
533 </CAPTION>
534 <TR><TH><EM>./configure</EM> option
535 <TH>env name or <br>make variable
536 <TH>used by
537 <TH>default value
538 <TH>use
539 <TR><TD class=env><A NAME="envtbl--homedir">--homedir=HOMEDIR</A>
540 <TD>&nbsp;
541 <TD><EM>./configure</EM>
542 <TD>@prefix@/
543 <TD>DCC home directory with most DCC files
544 <TR><TD class=env><A NAME="envtbl--libexecdir">--libexecdir=DIR</A>
545 <TD>&nbsp;
546 <TD><EM>./configure</EM>
547 <TD><A HREF="#envtbl--homedir">--homedir</A>/libexec
548 <TD>directory containing most DCC programs
549 <TR><TD class=env><A NAME="envtbl--bindir">--bindir</A>=DIR
550 <TD>&nbsp;
551 <TD><EM>./configure</EM>
552 <TD>/usr/local/bin
553 <TD>installation directory for DCC user commands including cdcc and
554 dccproc<SUP>3</SUP>
555 <TR><TD class=env>--mandir=DIR
556 <TD>&nbsp
557 <TD><EM>./configure</EM>
558 <TD>/usr/local/man
559 <TD>installation directory for man pages<SUP>3</SUP>
560 <TR><TD class=env>&nbsp;
561 <TD class=conf>NOMAN<SUP>1</SUP>
562 <TD>make
563 <TD>(unset)
564 <TD>do not install man pages when set<SUP>3</SUP>
565 <TR><TD class=env><A NAME="envtbl--installroot">--with-installroot=DIR</A>
566 <TD>&nbsp;
567 <TD><EM>./configure</EM>
568 <TD>(unset)
569 <TD>prefix all installation directory paths to build a binary tarball
570 <TR><TD class=env><A NAME="envtbl--configsuffix">--with-configsuffix=str</A>
571 <TD>&nbsp;
572 <TD><EM>./configure</EM>
573 <TD>(unset)
574 <TD>append <EM>str</EM> to generated configuration file names
575 <TR><TD class=env><A NAME="envtbl--with-uid">--with-uid=UID</A>
576 <TD>&nbsp;
577 <TD><EM>./configure</EM>
578 <TD>root
579 <TD>user name and set-UID for DCC programs and data
580 <TR><TD class=env>&nbsp;
581 <TD class=conf><A NAME="envtbl-DCC_OWN">DCC_OWN</A><SUP>1</SUP>
582 <TD>make
583 <TD>bin, daemon on OS X, or current
584 <TD>owner or UID of most installed files<SUP>3</SUP>
585 <TR><TD class=env>&nbsp;
586 <TD class=conf><A NAME="envtbl-DCC_GRP">DCC_GRP</A><SUP>1</SUP>
587 <TD>make
588 <TD>bin, daemon on OS X, or current
589 <TD>group of most installed files<SUP>3</SUP>
590 <TR><TD class=env>&nbsp;
591 <TD class=conf>DCC_MODE<SUP>1</SUP>
592 <TD>make
593 <TD>555
594 <TD>mode of most installed programs
595 <TR><TD class=env>&nbsp;
596 <TD class=conf>MANOWN<SUP>1</SUP>
597 <TD>make
598 <TD><A HREF="#envtbl-DCC_OWN">DCC_OWN</A>
599 or current
600 <TD>owner or UID of installed man pages<SUP>3</SUP>
601 <TR><TD class=env>&nbsp;
602 <TD class=conf>MANGRP<SUP>1</SUP>
603 <TD>make
604 <TD><A HREF="#envtbl-DCC_GRP">DCC_GRP</A>
605 or current
606 <TD>group of installed man pages<SUP>3</SUP>
607 <TR><TD class=env><A NAME="envtbl--disable-sys-inst">--disable-sys-inst</A>
608 <TD>&nbsp;
609 <TD><EM>./configure</EM>
610 <TD>enabled
611 <TD>disable system installation or chmod, chgrp, and set-UID<SUP>3</SUP>
612 <TR><TD class=env><A NAME="envtbl--disable-server">--disable-server</A>
613 <TD>&nbsp;
614 <TD><EM>./configure</EM>
615 <TD>build but do not start
616 <TD>do not build server including dbclean and dccd
617 <TR><TD class=env><A NAME="envtbl--disable-dccifd">--disable-dccifd</A>
618 <TD>&nbsp;
619 <TD><EM>./configure</EM>
620 <TD>build but do not start
621 <TD>do not build program interface
622 <TR><TD class=env><A NAME="envtbl--disable-dccm">--disable-dccm</A>
623 <TD>&nbsp;
624 <TD><EM>./configure</EM>
625 <TD>build but do not start
626 <TD>do not build sendmail interface
627 <TR><TD class=env><A NAME="envtbl--with-sendmail">--with-sendmail=DIR</A>
628 <TD>&nbsp;
629 <TD><EM>./configure</EM>
630 <TD>../sendmail or /usr/ports/mail/...
631 <TD>directory containing sendmail milter header files
632 <TR><TD class=env><A NAME="envtbl--cgibin">--with-cgibin</A>=DIR
633 <TD>&nbsp;
634 <TD><EM>./configure</EM>
635 <TD><A HREF="#envtbl--homedir">--homedir</A>/cgi-bin
636 <TD>directory for DCC whitelist <A HREF="cgi-bin/">CGI scripts</A>
637 <TR><TD class=env>--with-rundir=DIR
638 <TD>&nbsp;
639 <TD><EM>./configure</EM>
640 <TD>@dcc_rundir@
641 <TD>"run" directory for PIDs and sockets
642 <TR><TD class=env>&nbsp;
643 <TD class=conf>CFLAGS<SUP>1</SUP>
644 <TD>make & <EM>./configure</EM>
645 <TD>&nbsp;
646 <TD>global compiler options such as -g or -O2
647 <TR><TD class=env>&nbsp;
648 <TD class=conf>DCC_CFLAGS<SUP>2</SUP>
649 <TD><EM>./configure</EM>
650 <TD>depends on target
651 <TD>global compiler options
652 <TR><TD class=env>&nbsp;
653 <TD class=conf>PTHREAD_CFLAGS<SUP>2</SUP>
654 <TD><EM>./configure</EM>
655 <TD>depends on target
656 <TD>compiler options for compiling dccm and dccifd with pthreads
657 <TR><TD class=env>&nbsp;
658 <TD class=conf>LDFLAGS<SUP>1</SUP>
659 <TD>make & <EM>./configure</EM>
660 <TD>&nbsp;
661 <TD>global linker options
662 <TR><TD class=env>&nbsp;
663 <TD class=conf><A NAME="envtbl-DCC_LDFLAGS">DCC_LDFLAGS</A><SUP>2</SUP>
664 <TD><EM>./configure</EM>
665 <TD>depends on target
666 <TD>global linker options
667 <TR><TD class=env>&nbsp;
668 <TD class=conf>PTHREAD_LDFLAGS<SUP>2</SUP>
669 <TD><EM>./configure</EM>
670 <TD>depends on target
671 <TD>linker options for dccm and dccifd
672 <TR><TD class=env>&nbsp;
673 <TD class=conf><A NAME="envtbl-LIBS">LIBS</A><SUP>2</SUP>
674 <TD><EM>./configure</EM>
675 <TD>&nbsp;
676 <TD>additional libraries linked with all programs
677 <TR><TD class=env>&nbsp;
678 <TD class=conf>PTHREAD_LIBS<SUP>2</SUP>
679 <TD><EM>./configure</EM>
680 <TD>depends on target
681 <TD>libraries for dccm and dccifd
682 <TR><TD class=env>&nbsp;
683 <TD class=conf>CC
684 <TD>make & <EM>./configure</EM>
685 <TD>cc
686 <TD>C compiler such as "gcc" or "/opt/SUNWspro/SC6.1/bin/cc"
687 <TR><TD class=env>&nbsp;
688 <TD class=conf>INSTALL<SUP>1</SUP>
689 <TD>make
690 <TD><A HREF="autoconf/install-sh">./autoconf/install-sh</A>
691 <TD>installation script
692 <TR><TD class=env>&nbsp;
693 <TD class=conf>DCCD_MAX_FLOODS<SUP>1</SUP>
694 <TD>make
695 <TD>32
696 <TD>maximum DCC server flooding peers
697 <TR><TD class=env><A NAME="envtbl--with-db-memory">--with-db-memory=MB</A>
698 <TD>&nbsp;
699 <TD><EM>./configure</EM>
700 <TD>64
701 <TD>minimum server database buffer size between 32 MBytes and 49152 MBytes
702 <!-- DB_MIN_MBYTE -->
703 <TR><TD class=env><A NAME="envtbl--with-max-db-mem">--with-max-db-mem=MB</A>
704 <TD>&nbsp;
705 <TD><EM>./configure</EM>
706 <TD>1920 <!--DB_MAX_2G_MBYTE--> on 32-bit systems
707 <BR>49152 <!--MAX_MAX_DB_MBYTE--> on 64-bit systems
708 <TD>maximum server database buffer size
709 <!-- DB_MAX_MBYTE -->
710 <TR><TD class=env><A NAME="envtbl--with-max-log-size">--with-max-log-size=KB</A>
711 <TD>&nbsp;
712 <TD><EM>./configure</EM>
713 <TD>32
714 <TD>maximum dccifd and dccm log file size in KBytes; 0=no limit
715 <TR><TD class=env><A NAME="envtbl--disable-IPv6">--without-IPv6</A>
716 <TD>&nbsp;
717 <TD><EM>./configure</EM>
718 <TD>IPV6 on if supported
719 <TD>turn off IPv6 support
720 <TR><TD class=env><A NAME="envtbl--with-socks">--with-socks[=lib]</A>
721 <TD>&nbsp;
722 <TD><EM>./configure</EM>
723 <TD>none
724 <TD>location of <A HREF="#SOCKS">SOCKS</A> client library
725 <TR><TD class=env><A NAME="envtbl--64bits">--enable-64-bits</A>
726 <TD>&nbsp;
727 <TD><EM>./configure</EM>
728 <TD>correct value on most systems
729 <BR>32 bits Solaris and Linux PowerPC
730 <TD>use MD5 code in DCC source instead of any local library
731 <TR><TD class=env><A NAME="envtbl--with-DCC-MD5">--with-DCC-MD5</A>
732 <TD>&nbsp;
733 <TD><EM>./configure</EM>
734 <TD>local library if available;
735 <TD>use MD5 code in DCC source instead of any local library
736 <TR><TD class=env><A NAME="envtbl--with-kludge">--with-kludge=FILE</A>
737 <TD>&nbsp;
738 <TD><EM>./configure</EM>
739 <TD>none
740 <TD>include header FILE, best with an absolute path
741 <TR><TD class=env><A NAME="envtbl--fetch-cmd">--with-fetch-cmd=pgm</A>
742 <TD>&nbsp;
743 <TD><EM>./configure</EM>
744 <TD>wget, fetch, curl, or ftp
745 <TD>program used by
746 <A HREF="misc/updatedcc.in">@libexecdir@/updatedcc</A>,
747 and other utilities to fetch files
748 <TR><TD>&nbsp;
749 </TABLE>
750
751 <DL class=small>
752 <DT>Note<SUP>1</SUP>
753 <DD>These values are not built into the Makefiles by the
754 <EM>./configure</EM> script but their current values in the environment
755 are used by the script and the Makefiles.
756
757 <DT>Note<SUP>2</SUP>
758 <DD>These values are copied by the <EM>./configure</EM> script from the
759 environment into the generated Makefiles.
760
761 <DT>Note<SUP>3</SUP>
762 <DD>When <A HREF="#envtbl--disable-sys-inst">--disable-sys-inst</A>
763 is specified, the current UID and GID become the defaults,
764 and the man pages are not installed.
765 If the <EM>./configure</EM> script is not run as root,
766 <A HREF="dccproc.html">dccproc</A>, <A HREF="cdcc.html">cdcc</A>,
767 and <A HREF="dccsight.html">dccsight</A> are not installed set-UID.
768 It is usually also necessary to set
769 <A HREF="#envtbl--bindir">--bindir</A> to a private directory such
770 as $HOME/bin.
771 </DL>
772
773 <H2><A NAME="Compatibility">Compatibility</A></H2>
774 <P>DCC is thought to work on several systems including:
775 <DL class=compat>
776 <DT>BSDI BSD/OS
777 <DD>DCC works starting with version 3.0 of BSD/OS.
778
779 <DT>FreeBSD
780 <DD>The works starting with at least version 4.0 of FreeBSD.
781
782 <DT>NetBSD
783 <DD>The DCC should work starting with at least 1.4.2 without threads
784 and so with dccd, dccproc, and all of DCC except the part that uses
785 threads, dccm.
786 Dccm is available if you point PTHREAD_LIBS, PTHREAD_CFLAGS, and
787 PTHREAD_LDFLAGS to the optional threads package.
788
789 <DT>OpenBSD
790 <DD>DCC works starting with at least 2.9 despite lame
791 the lame mmap() implementation.
792
793 <DT>Linux
794 <DD>DCC works starting with at least RedHat 5.2.
795 <P>
796 On 64-bit PowerPC systems with more than 4 GBytes,
797 use <EM>./configure --with-64-bits</EM> to build a DCC server that can
798 benefit from a full sized database.
799 A 64-bit sendmail milter library will be needed if
800 <A HREF="dccm.html">Dccm</A> is used
801
802 <DT>AIX
803 <DD>DCC on 4.1.PPC has been tried but not well tested.
804 Rumor has it that the 4.1.PPC pthreads code does not work
805 with the sendmail milter library and dccm, but the rest of
806 DCC does work.
807
808 <DT>Solaris
809 <DD>DCC compiles on several versions of Solaris with gcc or
810 native C compiler by setting the environment variable CC appropriately.
811 <EM>You must install gmake</EM>.
812 <EM>Do not</EM> use "CFLAGS=-fast" with the native compiler.
813 <P>
814 While building the sendmail milter library, consider using
815 <EM>_FFR_USE_POLL</EM> to avoid problems with large file descriptors
816 and select().
817 <P>
818 On 64-bit systems with more than 4 GBytes,
819 use <EM>./configure --with-64-bits</EM> to build a DCC server that can
820 benefit from a full sized database.
821 A 64-bit sendmail milter library will be needed if
822 <A HREF="dccm.html">Dccm</A> is used
823
824 <DT>HP-UX
825 <DD>DCC compiles on versions of HP-UX starting with 11.00.
826 It requires gmake. Dccproc and dccm work.
827 Dccifd does not work with UNIX domain sockets because select() and
828 poll() do not notice the results of shutdown().
829 Dccifd does work with TCP/IP connections to MTAs or spam filters.
830 <BR>
831 Dccproc should work on version 10.20, since it does not use pthreads.
832
833 <DT>IRIX
834 <DD>DCC compiles on IRIX 6.5.
835 It requires gmake.
836
837 <DT>OSF1
838 <DD>DCC compiles on OSF1 V5.0 with gmake.
839
840 <DT>OpenUNIX
841 <DD>DCC compiles on OpenUNIX 8.0.1.
842
843 <DT>Mac OS/X
844 <DD>DCC compiles on at least some versions of Apple's OS/X.
845
846 <DT>Windows
847 <DD>The DCC client dccproc compiles and works on at least some versions of
848 Windows 98 and Windows XP with Borland's free SDK
849 and with Microsoft's SDK.
850 See the <A HREF="win32.mak">main Makefile</A> for Windows.
851
852
853 </DL>
854 <P>
855 <SMALL>Those system names include trademarks. Please don't abuse them.</SMALL>
856
857 <H2><A NAME="Troubleshooting">Troubleshooting</A></H2>
858 <P>
859 Much of the DCC <A HREF=FAQ.html>list of frequently asked questions</A>
860 concerns troubleshooting DCC installations.
861 Many of the messages in the archive of the
862 <A HREF="http://www.rhyolite.com/pipermail/dcc/">DCC mailing list</A>
863 are also troubleshooting questions and answers.
864
865 <H2><A NAME="spam-traps"></A><A NAME="spamtraps">Spam Traps</A></H2>
866 <P><A HREF="dccm.html">Dccm</A> and sendmail can be configured to
867 report the checksums of unsolicited bulk mail so that other DCC clients
868 can reject later copies of the same unsolicited bulk mail
869 sent from other sources.
870 Such mechanisms are commonly called <EM>spam traps</EM>.
871
872 <P>Entries in a sendmail access_db can also be rejected or discarded
873 while they are reported to the DCC server by dccm.
874 The script
875 <A HREF="misc/hackmc">misc/hackmc</A> modifies the output of
876 sendmail .mc files to tell dccm about some undesirable mail.
877 The script accepts one or more .mc files and generates the corresponding
878 slightly modified .cf files.
879 If the access_db entry starts with the string "DCC:",
880 the message is reported by dccm to the DCC server as extremely bulky.
881 Otherwise the message is rejected as usual.
882 The remainder of the the access_db entry after "DCC:" consists of
883 the optional string "DISCARD" followed by an optional SMTP status message.
884 If the string "DISCARD" is present, the message is discarded instead of
885 rejected. This is important to keep senders of unsolicited bulk mail from
886 discovering and removing "spam trap" addresses from their target lists.
887
888 <P>For example, a line like the following in an access_db can
889 discard all mail from example.com while reporting it to the DCC server
890 as extremely bulky.
891 Note the quotes (").
892 <PRE>
893 example.com DCC: "DISCARD spam"
894 </PRE>
895
896 <P>It is also possible to route mail from a spam trap address to
897 dccproc as described in the
898 <A HREF="dccproc.html#EXAMPLES">dccproc man page</A>
899
900
901 <H2><A NAME="SOCKS">SOCKS</A></H2>
902 <P>The DCC client and server programs can be built to use the SOCKS
903 protocol.
904 The
905 <A HREF="#envtbl--with-socks">--with-socks</A>
906 <EM>./configure</EM> parameter
907 configures the DCC client library and the DCC server
908 to use common SOCKS network library functions.
909 If the SOCKS library is in a standard place,
910 something like <A HREF="#envtbl--with-socks">--with-socks=socks</A>
911 should be sufficient.
912 Setting the environment variable
913 <A HREF="#envtbl-DCC_LDFLAGS">DCC_LDFLAGS</A> to something
914 like <Em>-L/usr/local/lib</Em> is sometimes helpful.
915 Otherwise, using <A HREF="#envtbl--with-socks">--with-socks</A>
916 without specifying the library name and setting <A HREF="#envtbl-LIBS">LIBS</A>
917 to the full pathname of the library
918 might work.
919 <P>
920 DCC client programs
921 including dccproc and dccm that use the DCC client library
922 must be told to use the SOCKS5 protocol with the
923 <A HREF="cdcc.html#OPERATION-SOCKS">SOCKS&nbsp;on</A>
924 operation of
925 <A HREF="cdcc.html">cdcc</A>.
926 SOCKS5 is required instead of SOCKS4
927 because DCC clients communicate with DCC servers using UDP.
928
929 <P>
930 DCC servers can use SOCKS4 or SOCKS5 when exchanging
931 floods of reports of checksums.
932 Links between individual pairs of peers are configured with the
933 <Em>passive</Em> and <Em>SOCKS</Em> flags in the flod file described
934 in the <A HREF="dccd.html#FILE-flod">dccd</A> man page.
935 In both cases, the SOCKS library code must be configured, often
936 in the files /etc/socks.conf and /etc/socksd.conf.
937
938 <P>
939 When the DCC software is built with SOCKS,
940 IPv6 name resolution is turned off.
941
942 <P>
943 The DCC server and client programs have been tested with the
944 <A HREF="http://www.inet.no/dante/">DANTE</A> library and server.
945 The DANTE SOCKS implementation is also one of the FreeBSD "ports"
946 or packages.
947 <P>
948 Note that if a connection fails repeatedly, Dante will disable the rule
949 that failed and will eventually try the underlying connect()
950 call.
951 This fails in almost every SOCKS environment because there is
952 no available route for an ordinary connect().
953 Dante by default won't re-enable the failing rule.
954 To fix this, change BADROUTE_EXPIRE from the default of <EM>0*60</EM>
955 to <EM>5</EM> in include/config.h in the Dante source and recompile.
956
957
958 <P class=small>
959 This document describes DCC version 1.3.103.
960 <P>
961 <A HREF="http://www.dcc-servers.net/dcc/">
962 <IMG SRC="http://logos.dcc-servers.net/border.png"
963 class=logo ALT="DCC logo">
964 </A>
965 <A HREF="http://validator.w3.org/check?uri=referer">
966 <IMG class=logo ALT="Valid HTML 4.01 Strict"
967 SRC="http://www.w3.org/Icons/valid-html401">
968 </A>
969 </BODY>
970 </HTML>
971 <!-- LocalWords: dccproc libmilter pthreads procmail dccm dccd dcc libmilter
972 -->
973 <!-- LocalWords: homedir dbclean whitelist setenv nbsp Solaris crontab Linux
974 -->
975 <!-- LocalWords: gmake FreeBSD NetBSD CFLAGS PTHREAD LDFLAGS LIBS HPUX IDs DT
976 -->
977 <!-- LocalWords: cdcc DL DD ids var RTT TD TR dccifd greylist MTA
978 -->
979 <!-- LocalWords: whitelisting
980 -->