Mercurial > dnsbl
comparison xml/dnsbl.in @ 111:d0dad5610980
move to autoconf/automake/docbook
author | carl |
---|---|
date | Sun, 18 Dec 2005 15:16:25 -0800 |
parents | 1c7677042b78 |
children | f4f5fb263072 |
comparison
equal
deleted
inserted
replaced
110:75c10deb3fe9 | 111:d0dad5610980 |
---|---|
43 <refsect1 id='options.1'> | 43 <refsect1 id='options.1'> |
44 <title>Options</title> | 44 <title>Options</title> |
45 <variablelist> | 45 <variablelist> |
46 <varlistentry> | 46 <varlistentry> |
47 <term>-c</term> | 47 <term>-c</term> |
48 <listitem> | 48 <listitem><para> |
49 <para> | 49 Load the configuration file, print a cannonical form |
50 Load the configuration file, print a cannonical form | 50 of the configuration on stdout, and exit. |
51 of the configuration on stdout, and exit. | 51 </para></listitem> |
52 </para> | |
53 </listitem> | |
54 </varlistentry> | 52 </varlistentry> |
55 <varlistentry> | 53 <varlistentry> |
56 <term>-s</term> | 54 <term>-s</term> |
57 <listitem> | 55 <listitem><para> |
58 <para> | 56 Stress test the configuration loading code by repeating |
59 Stress test the configuration loading code by repeating | 57 the load/free cycle in an infinite loop. |
60 the load/free cycle in an infinite loop. | 58 </para></listitem> |
61 </para> | |
62 </listitem> | |
63 </varlistentry> | 59 </varlistentry> |
64 <varlistentry> | 60 <varlistentry> |
65 <term>-d <replaceable class="parameter">n</replaceable></term> | 61 <term>-d <replaceable class="parameter">n</replaceable></term> |
66 <listitem> | 62 <listitem><para> |
67 <para> | 63 Set the debug level to <replaceable class="parameter">n</replaceable>. |
68 Set the debug level to <replaceable class="parameter">n</replaceable>. | 64 </para></listitem> |
69 </para> | |
70 </listitem> | |
71 </varlistentry> | 65 </varlistentry> |
72 <varlistentry> | 66 <varlistentry> |
73 <term>-e <replaceable class="parameter">from|to</replaceable></term> | 67 <term>-e <replaceable class="parameter">from|to</replaceable></term> |
74 <listitem> | 68 <listitem><para> |
75 <para> | 69 Print the results of looking up the from and to addresses in the |
76 Print the results of looking up the from and to addresses in the | 70 current configuration. The | character is used to separate the from and to |
77 current configuration. The | character is used to separate the from and to | 71 addresses in the argument to the -e switch. |
78 addresses in the argument to the -e switch. | 72 </para></listitem> |
79 </para> | |
80 </listitem> | |
81 </varlistentry> | 73 </varlistentry> |
82 <varlistentry> | 74 <varlistentry> |
83 <term>-r <replaceable class="parameter">local-domain-socket</replaceable></term> | 75 <term>-r <replaceable class="parameter">local-domain-socket</replaceable></term> |
84 <listitem> | 76 <listitem><para> |
85 <para> | 77 Set the local socket used for the connection to our own dns resolver processes. |
86 Set the local socket used for the connection to our own dns resolver processes. | 78 </para></listitem> |
87 </para> | |
88 </listitem> | |
89 </varlistentry> | 79 </varlistentry> |
90 <varlistentry> | 80 <varlistentry> |
91 <term>-p <replaceable class="parameter">sendmail-socket</replaceable></term> | 81 <term>-p <replaceable class="parameter">sendmail-socket</replaceable></term> |
92 <listitem> | 82 <listitem><para> |
93 <para> | 83 Set the socket used for the milter connection to sendmail. This is either |
94 Set the socket used for the milter connection to sendmail. This is either | 84 "inet:port@ip-address" or "local:local-domain-socket-file-name". |
95 "inet:port@ip-address" or "local:local-domain-socket-file-name". | 85 </para></listitem> |
96 </para> | |
97 </listitem> | |
98 </varlistentry> | 86 </varlistentry> |
99 <varlistentry> | 87 <varlistentry> |
100 <term>-t <replaceable class="parameter">timeout</replaceable></term> | 88 <term>-t <replaceable class="parameter">timeout</replaceable></term> |
101 <listitem> | 89 <listitem><para> |
102 <para> | 90 Set the timeout in seconds used for communication with sendmail. |
103 Set the timeout in seconds used for communication with sendmail. | 91 </para></listitem> |
104 </para> | |
105 </listitem> | |
106 </varlistentry> | 92 </varlistentry> |
107 </variablelist> | 93 </variablelist> |
108 </refsect1> | 94 </refsect1> |
109 | 95 |
110 <refsect1> | 96 <refsect1 id='usage.1'> |
111 <title>Usage</title> | 97 <title>Usage</title> |
112 <para><command>@PACKAGE@</command> -c</para> | 98 <para><command>@PACKAGE@</command> -c</para> |
113 <para><command>@PACKAGE@</command> -s</para> | 99 <para><command>@PACKAGE@</command> -s</para> |
114 <para><command>@PACKAGE@</command> -d 2</para> | 100 <para><command>@PACKAGE@</command> -e 'someone@aol.com|localname@mydomain.tld'</para> |
115 <para><command>@PACKAGE@</command> -e'someone@aol.com|localname@mydomain.tld'</para> | 101 <para><command>@PACKAGE@</command> -d 10 -r resolver.sock -p local:dnsbl.sock</para> |
116 <para><command>@PACKAGE@</command> -d 10 -r /var/run/dnsbl/dnsbl.resolver.sock -p local:/var/run/dnsbl/dnsbl.sock</para> | 102 </refsect1> |
103 | |
104 <refsect1 id='installation.1'> | |
105 <title>Installation</title> | |
106 <para> | |
107 This is now a standard GNU autoconf/automake installation, so the normal | |
108 "./configure; make; su; make install" works. "make chkconfig" will | |
109 setup the init.d runlevel scripts. Alternatively, you can use the | |
110 source or binary RPMs at <ulink | |
111 url="http://www.five-ten-sg.com/@PACKAGE@/packages">http://www.five-ten-sg.com/@PACKAGE@/packages</ulink>. | |
112 </para> | |
113 <para> | |
114 Note that this has ONLY been tested on Linux, specifically RedHat Linux. | |
115 In particular, this milter makes no attempt to understand IPv6. Your | |
116 mileage will vary. You will need at a minimum a C++ compiler with a | |
117 minimally thread safe STL implementation. The distribution includes a | |
118 test.cpp program. If it fails this milter won't work. If it passes, | |
119 this milter might work. | |
120 </para> | |
121 <para> | |
122 Modify your sendmail.mc by removing all the "FEATURE(dnsbl" lines, add | |
123 the following line in your sendmail.mc and rebuild the .cf file | |
124 </para> | |
125 <para><screen>INPUT_MAIL_FILTER(`dnsbl', `S=local:/var/run/dnsbl/dnsbl.sock, F=T, T=C:30s;S:5m;R:5m;E:5m')</screen></para> | |
126 <para> | |
127 Modify the default <citerefentry> | |
128 <refentrytitle>@PACKAGE@.conf</refentrytitle> <manvolnum>5</manvolnum> | |
129 </citerefentry> configuration. | |
130 </para> | |
131 </refsect1> | |
132 | |
133 <refsect1 id='configuration.1'> | |
134 <title>Configuration</title> | |
135 <para> | |
136 The configuration file is documented in <citerefentry> | |
137 <refentrytitle>@PACKAGE@.conf</refentrytitle> <manvolnum>5</manvolnum> | |
138 </citerefentry>. Any change to the config file, or any file included | |
139 from that config file, will cause it to be reloaded within three | |
140 minutes. | |
141 </para> | |
117 </refsect1> | 142 </refsect1> |
118 | 143 |
119 <refsect1 id='introduction.1'> | 144 <refsect1 id='introduction.1'> |
120 <title>Introduction</title> | 145 <title>Introduction</title> |
121 <para> | 146 <para> |
156 to your /etc/mail/virtusertable since otherwise sendmail will reject | 181 to your /etc/mail/virtusertable since otherwise sendmail will reject |
157 that message. | 182 that message. |
158 </para> | 183 </para> |
159 </refsect1> | 184 </refsect1> |
160 | 185 |
161 <refsect1 id='todo.1'> | 186 <refsect1 id='dcc.1'> |
162 <title>DCC Issues</title> | 187 <title>DCC Issues</title> |
163 <para> | 188 <para> |
164 If you are also using the <ulink | 189 If you are also using the <ulink |
165 url="http://www.rhyolite.com/anti-spam/dcc/">DCC</ulink> milter, there | 190 url="http://www.rhyolite.com/anti-spam/dcc/">DCC</ulink> milter, there |
166 are a few considerations. You may need to whitelist senders from the | 191 are a few considerations. You may need to whitelist senders from the |
197 be appropriately tagged and used only for the domains controlled by each | 222 be appropriately tagged and used only for the domains controlled by each |
198 of those clients. | 223 of those clients. |
199 </para> | 224 </para> |
200 </refsect1> | 225 </refsect1> |
201 | 226 |
202 <refsect1 id='todo.1'> | 227 <refsect1 id='definitions.1'> |
203 <title>Definitions</title> | 228 <title>Definitions</title> |
204 <para> | 229 <para> |
205 CONTEXT - a collection of parameters that defines the filtering context | 230 CONTEXT - a collection of parameters that defines the filtering context |
206 to be used for a collection of envelope recipient addresses. The | 231 to be used for a collection of envelope recipient addresses. The |
207 context includes such things as the list of DNSBLs to be used, and the | 232 context includes such things as the list of DNSBLs to be used, and the |
217 DNSBL-LIST - a named list of DNSBLs that will be used for specific | 242 DNSBL-LIST - a named list of DNSBLs that will be used for specific |
218 recipients or recipient domains. | 243 recipients or recipient domains. |
219 </para> | 244 </para> |
220 </refsect1> | 245 </refsect1> |
221 | 246 |
222 <refsect1 id='todo.1'> | 247 <refsect1 id='filtering.1'> |
223 <title>Filtering Procedure</title> | 248 <title>Filtering Procedure</title> |
224 <para> | 249 <para> |
225 If the client has authenticated with sendmail, the mail is accepted, the | 250 If the client has authenticated with sendmail, the mail is accepted, the |
226 filtering contexts are not used, the dns lists are not checked, and the | 251 filtering contexts are not used, the dns lists are not checked, and the |
227 body content is not scanned. Otherwise, we follow these steps for each | 252 body content is not scanned. Otherwise, we follow these steps for each |
228 recipient. | 253 recipient. |
229 </para> | 254 </para> |
230 <orderedlist> | 255 <orderedlist> |
231 <listitem> | 256 <listitem><para> |
232 The envelope to email address is used to find an initial filtering | 257 The envelope to email address is used to find an initial filtering |
233 context. We first look for a context that specified the full email | 258 context. We first look for a context that specified the full email |
234 address in the env_to statement. If that is not found, we look for a | 259 address in the env_to statement. If that is not found, we look for a |
235 context that specified the entire domain name of the envelope recipient | 260 context that specified the entire domain name of the envelope recipient |
236 in the env_to statement. If that is not found, we look for a context | 261 in the env_to statement. If that is not found, we look for a context |
237 that specified the user@ part of the envelope recipient in the env_to | 262 that specified the user@ part of the envelope recipient in the env_to |
238 statement. If that is not found, we use the first top level context | 263 statement. If that is not found, we use the first top level context |
239 defined in the config file. | 264 defined in the config file. |
240 </listitem> | 265 </para></listitem> |
241 <listitem> | 266 <listitem><para> |
242 The initial filtering context may redirect to a child context based on | 267 The initial filtering context may redirect to a child context based on |
243 the values in the initial context's env_from statement. We look for [1) | 268 the values in the initial context's env_from statement. We look for [1) |
244 the full envelope from email address, 2) the domain name part of the | 269 the full envelope from email address, 2) the domain name part of the |
245 envelope from address, 3) the user@ part of the envelope from address] | 270 envelope from address, 3) the user@ part of the envelope from address] |
246 in that context's env_from statement, with values that point to a child | 271 in that context's env_from statement, with values that point to a child |
247 context. If such an entry is found, we switch to that child filtering | 272 context. If such an entry is found, we switch to that child filtering |
248 context. | 273 context. |
249 </listitem> | 274 </para></listitem> |
250 <listitem> | 275 <listitem><para> |
251 We lookup [1) the full envelope from email address, 2) the domain name | 276 We lookup [1) the full envelope from email address, 2) the domain name |
252 part of the envelope from address, 3) the user@ part of the envelope | 277 part of the envelope from address, 3) the user@ part of the envelope |
253 from address] in the filtering context env_from statement. That results | 278 from address] in the filtering context env_from statement. That results |
254 in one of (white, black, unknown, inherit). | 279 in one of (white, black, unknown, inherit). |
255 </listitem> | 280 </para></listitem> |
256 <listitem> | 281 <listitem><para> |
257 If the answer is black, mail to this recipient is rejected with "no such | 282 If the answer is black, mail to this recipient is rejected with "no such |
258 user", and the dns lists are not checked. | 283 user", and the dns lists are not checked. |
259 </listitem> | 284 </para></listitem> |
260 <listitem> | 285 <listitem><para> |
261 If the answer is white, mail to this recipient is accepted and the dns | 286 If the answer is white, mail to this recipient is accepted and the dns |
262 lists are not checked. | 287 lists are not checked. |
263 </listitem> | 288 </para></listitem> |
264 <listitem> | 289 <listitem><para> |
265 If the answer is unknown, we don't reject yet, but the dns lists will be | 290 If the answer is unknown, we don't reject yet, but the dns lists will be |
266 checked, and the content may be scanned. | 291 checked, and the content may be scanned. |
267 <listitem> | 292 </para></listitem> |
293 <listitem><para> | |
268 If the answer is inherit, we repeat the envelope from search in the | 294 If the answer is inherit, we repeat the envelope from search in the |
269 parent context. | 295 parent context. |
270 </listitem> | 296 </para></listitem> |
271 <listitem> | 297 <listitem><para> |
272 The dns lists specified in the filtering context are checked and the | 298 The dns lists specified in the filtering context are checked and the |
273 mail is rejected if any list has an A record for the standard dns based | 299 mail is rejected if any list has an A record for the standard dns based |
274 lookup scheme (reversed octets of the client followed by the dns | 300 lookup scheme (reversed octets of the client followed by the dns |
275 suffix). | 301 suffix). |
276 </listitem> | 302 </para></listitem> |
277 <listitem> | 303 <listitem><para> |
278 If the mail has not been accepted or rejected yet, we look for a | 304 If the mail has not been accepted or rejected yet, we look for a |
279 verification context, which is the closest ancestor of the filtering | 305 verification context, which is the closest ancestor of the filtering |
280 context that both specifies a verification host, and which covers the | 306 context that both specifies a verification host, and which covers the |
281 envelope to address. If we find such a verification context, and the | 307 envelope to address. If we find such a verification context, and the |
282 verification host is not our own hostname, we open an smtp conversation | 308 verification host is not our own hostname, we open an smtp conversation |
283 with that verification host. The current envelope from and recipient to | 309 with that verification host. The current envelope from and recipient to |
284 values are passed to that verification host. If we receive a 5xy | 310 values are passed to that verification host. If we receive a 5xy |
285 response those commands, we reject the current recipient with "no such | 311 response those commands, we reject the current recipient with "no such |
286 user". | 312 user". |
287 </listitem> | 313 </para></listitem> |
288 <listitem> | 314 <listitem><para> |
289 If the mail has not been accepted or rejected yet, and the filtering | 315 If the mail has not been accepted or rejected yet, and the filtering |
290 context enables content filtering, and this is the first such recipient | 316 context enables content filtering, and this is the first such recipient |
291 in this smtp transaction, we set the content filtering parameters from | 317 in this smtp transaction, we set the content filtering parameters from |
292 this context, and enable content filtering for the body of this message. | 318 this context, and enable content filtering for the body of this message. |
293 </listitem> | 319 </para></listitem> |
294 </orderedlist> | 320 </orderedlist> |
295 <para> | 321 <para> |
296 If content filtering is enabled for this body, the mail text is decoded | 322 If content filtering is enabled for this body, the mail text is decoded |
297 (uuencode, base64, mime, html entity, url encodings), scanned for HTTP | 323 (uuencode, base64, mime, html entity, url encodings), scanned for HTTP |
298 and HTTPS URLs, and the first <configurable> host names are | 324 and HTTPS URLs, and the first <configurable> host names are |
303 the mail is rejected. We also scan for excessive bad html tags, and if | 329 the mail is rejected. We also scan for excessive bad html tags, and if |
304 a <configurable> limit is exceeded, the mail is rejected. | 330 a <configurable> limit is exceeded, the mail is rejected. |
305 </para> | 331 </para> |
306 </refsect1> | 332 </refsect1> |
307 | 333 |
308 <refsect1> | 334 <refsect1 id='access.1'> |
309 <title>Sendmail access vs. DNSBL</title> | 335 <title>Sendmail access vs. DNSBL</title> |
310 <para> | 336 <para> |
311 With the standard sendmail.mc dnsbl FEATURE, the dnsbl checks may be | 337 With the standard sendmail.mc dnsbl FEATURE, the dnsbl checks may be |
312 suppressed by entries in the /etc/mail/access database. For example, | 338 suppressed by entries in the /etc/mail/access database. For example, |
313 suppose you control a /18 of address space, and have allocated some /24s | 339 suppose you control a /18 of address space, and have allocated some /24s |
314 to some clients. You have access entries like | 340 to some clients. You have access entries like |
315 <screen> | 341 <literallayout class="monospaced"><![CDATA[ |
316 192.168.4 OK | 342 192.168.4 OK |
317 192.168.17 OK | 343 192.168.17 OK]]></literallayout> |
318 </screen> | |
319 </para> | 344 </para> |
320 <para> | 345 <para> |
321 to allow those clients to smarthost thru your mail server. Now if one | 346 to allow those clients to smarthost thru your mail server. Now if one |
322 of those clients happens get infected with a virus that turns a machine | 347 of those clients happens get infected with a virus that turns a machine |
323 into an open proxy, and their 192.168.4.45 lands on the SBL-XBL, you | 348 into an open proxy, and their 192.168.4.45 lands on the SBL-XBL, you |
340 these directions</ulink> helpful for setting up smtp-auth if you are on | 365 these directions</ulink> helpful for setting up smtp-auth if you are on |
341 RH Linux. | 366 RH Linux. |
342 </para> | 367 </para> |
343 </refsect1> | 368 </refsect1> |
344 | 369 |
345 <refsect1> | 370 <refsect1 id='performance.1'> |
346 <title>Installation and configuration</title> | |
347 <para> | |
348 This is a standard GNU autoconf/automake installation, so the normal | |
349 <screen> | |
350 ./configure | |
351 make | |
352 su | |
353 make install | |
354 </screen> | |
355 works. "make chkconfig" will setup the init.d runlevel scripts. | |
356 </para> | |
357 <para> | |
358 Note that this has ONLY been tested on Linux, specifically RedHat Linux. | |
359 In particular, this milter makes no attempt to understand IPv6. Your | |
360 mileage will vary. You will need at a minimum a C++ compiler with a | |
361 minimally thread safe STL implementation. The distribution includes a | |
362 test.cpp program. If it fails this milter won't work. If it passes, | |
363 this milter might work. | |
364 </para> | |
365 <para> | |
366 Modify your sendmail.mc by removing all the "FEATURE(dnsbl" lines, add | |
367 the following line in your sendmail.mc and rebuild the .cf file | |
368 </para> | |
369 <para> | |
370 <screen> | |
371 INPUT_MAIL_FILTER(`dnsbl', `S=local:/var/run/dnsbl/dnsbl.sock, F=T, T=C:30s;S:5m;R:5m;E:5m') | |
372 </screen> | |
373 </para> | |
374 <para> | |
375 Modify the default <citerefentry> | |
376 <refentrytitle>@PACKAGE@.conf</refentrytitle> <manvolnum>5</manvolnum> | |
377 </citerefentry> configuration. | |
378 </para> | |
379 | |
380 | |
381 <refsect1 id='todo.1'> | |
382 <title>Performance Issues</title> | 371 <title>Performance Issues</title> |
383 <para> | 372 <para> |
384 Consider a high volume high performance machine running sendmail. Each | 373 Consider a high volume high performance machine running sendmail. Each |
385 sendmail process can do its own dns resolution. Typically, such dns | 374 sendmail process can do its own dns resolution. Typically, such dns |
386 resolver libraries are not thread safe, and so must be protected by some | 375 resolver libraries are not thread safe, and so must be protected by some |
407 course that steady state is very unlikely to happen. | 396 course that steady state is very unlikely to happen. |
408 </para> | 397 </para> |
409 </refsect1> | 398 </refsect1> |
410 | 399 |
411 | 400 |
412 <refsect1 id='todo.1'> | 401 <refsect1 id='rejected.1'> |
413 <title>Rejected Ideas</title> | 402 <title>Rejected Ideas</title> |
414 <para> | 403 <para> |
415 The following ideas have been considered and rejected. | 404 The following ideas have been considered and rejected. |
416 </para> | 405 </para> |
417 <para> | 406 <para> |
418 Add max_recipients for each mail domain to the configuration. | 407 Add max_recipients setting to the context configuration. Recipients in |
419 Recipients in excess of that limit will be rejected, and all the | 408 excess of that limit will be rejected, and all the non-whitelisted |
420 recipients in that domain will be removed if there are some other | 409 recipients will be removed. Current spammers *very* rarely send more |
421 whitelisted recipients. Current spammers *very* rarely send more than | 410 than ten recipients in a single smtp transaction, so this won't stop any |
422 ten recipients in a single smtp transaction, so this won't stop any | |
423 significant amount of spam. | 411 significant amount of spam. |
424 </para> | 412 </para> |
425 <para> | 413 <para> |
426 Add poison addresses to the configuration. If any recipient is | 414 Add poison addresses to the configuration. If any recipient is |
427 poison, all recipients are rejected even if they would be whitelisted, | 415 poison, all recipients are rejected even if they would be whitelisted, |
452 Add a per-context option to reject mail if the number of digits in | 440 Add a per-context option to reject mail if the number of digits in |
453 the reverse dns client name exceeds some threshold. | 441 the reverse dns client name exceeds some threshold. |
454 </para> | 442 </para> |
455 </refsect1> | 443 </refsect1> |
456 | 444 |
457 <refsect1> | 445 <refsect1 id='copyright.1'> |
458 <title>Configuration</title> | |
459 <para> | |
460 The configuration file is documented in <citerefentry> | |
461 <refentrytitle>@PACKAGE@.conf</refentrytitle> <manvolnum>5</manvolnum> | |
462 </citerefentry>. Any change to the config file, or any file included | |
463 from that config file, will cause it to be reloaded within three | |
464 minutes. | |
465 </para> | |
466 </refsect1> | |
467 | |
468 <refsect1> | |
469 <title>Copyright</title> | 446 <title>Copyright</title> |
470 <para> | 447 <para> |
471 Copyright (C) 2005 by 510 Software Group <carl@five-ten-sg.com> | 448 Copyright (C) 2005 by 510 Software Group <carl@five-ten-sg.com> |
472 </para> | 449 </para> |
473 <para> | 450 <para> |
481 with this program; see the file COPYING. If not, please write to the | 458 with this program; see the file COPYING. If not, please write to the |
482 Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. | 459 Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
483 </para> | 460 </para> |
484 </refsect1> | 461 </refsect1> |
485 | 462 |
486 <refsect1> | 463 <refsect1 id='version.1'> |
464 <title>CVS Version</title> | |
487 <para> | 465 <para> |
488 $Id$ | 466 $Id$ |
489 </para> | 467 </para> |
490 </refsect1> | 468 </refsect1> |
491 </refentry> | 469 </refentry> |
502 <refmiscinfo>@PACKAGE@ @VERSION@</refmiscinfo> | 480 <refmiscinfo>@PACKAGE@ @VERSION@</refmiscinfo> |
503 </refmeta> | 481 </refmeta> |
504 | 482 |
505 <refnamediv id='name.5'> | 483 <refnamediv id='name.5'> |
506 <refname>@PACKAGE@.conf</refname> | 484 <refname>@PACKAGE@.conf</refname> |
507 <refpurpose>configuration file for @PACKAGE@</refpurpose> | 485 <refpurpose>configuration file for @PACKAGE@ sendmail milter</refpurpose> |
508 </refnamediv> | 486 </refnamediv> |
509 | 487 |
510 <refsynopsisdiv id='synopsis.5'> | 488 <refsynopsisdiv id='synopsis.5'> |
511 <title>Synopsis</title> | 489 <title>Synopsis</title> |
512 <cmdsynopsis> | 490 <cmdsynopsis> |
520 specified by this partial bnf description.</para> | 498 specified by this partial bnf description.</para> |
521 | 499 |
522 <literallayout class="monospaced"><![CDATA[ | 500 <literallayout class="monospaced"><![CDATA[ |
523 CONFIG = {CONTEXT ";"}+ | 501 CONFIG = {CONTEXT ";"}+ |
524 CONTEXT = "context" NAME "{" {STATEMENT}+ "}" | 502 CONTEXT = "context" NAME "{" {STATEMENT}+ "}" |
525 STATEMENT = (DNSBL | DNSBLLIST | CONTENT | ENV-TO | VERIFY | CONTEXT | ENV-FROM) ";" | 503 STATEMENT = (DNSBL | DNSBLLIST | CONTENT | ENV-TO | VERIFY | |
504 CONTEXT | ENV-FROM) ";" | |
526 | 505 |
527 DNSBL = "dnsbl" NAME DNSPREFIX ERROR-MSG | 506 DNSBL = "dnsbl" NAME DNSPREFIX ERROR-MSG |
528 | 507 |
529 DNSBLLIST = "dnsbl_list" {NAME}+ | 508 DNSBLLIST = "dnsbl_list" {NAME}+ |
530 | 509 |
531 CONTENT = "content" ("on" | "off") "{" {CONTENT-ST}+ "}" | 510 CONTENT = "content" ("on" | "off") "{" {CONTENT-ST}+ "}" |
532 CONTENT-ST = (FILTER | IGNORE | TLD | HTML-TAGS | HTML-LIMIT | HOST-LIMIT) ";" | 511 CONTENT-ST = (FILTER | IGNORE | TLD | HTML-TAGS | HTML-LIMIT | |
512 HOST-LIMIT) ";" | |
533 FILTER = "filter" DNSPREFIX ERROR-MSG | 513 FILTER = "filter" DNSPREFIX ERROR-MSG |
534 IGNORE = "ignore" "{" {HOSTNAME [";"]}+ "}" | 514 IGNORE = "ignore" "{" {HOSTNAME [";"]}+ "}" |
535 TLD = "tld" "{" {TLD [";"]}+ "}" | 515 TLD = "tld" "{" {TLD [";"]}+ "}" |
536 HTML-TAGS = "html_tags" "{" {HTMLTAG [";"]}+ "}" | 516 HTML-TAGS = "html_tags" "{" {HTMLTAG [";"]}+ "}" |
537 ERROR-MSG = string containing exactly two %s replacement tokens for the client ip address | 517 ERROR-MSG = string containing exactly two %s replacement tokens |
518 for the client ip address | |
538 | 519 |
539 HTML-LIMIT = "html_limit" ("on" INTEGER ERROR-MSG | "off") | 520 HTML-LIMIT = "html_limit" ("on" INTEGER ERROR-MSG | "off") |
540 | 521 |
541 HOST-LIMIT = "host_limit" ("on" INTEGER ERROR-MSG | "off" | "soft" INTEGER) | 522 HOST-LIMIT = "host_limit" ("on" INTEGER ERROR-MSG | "off" | |
523 "soft" INTEGER) | |
542 | 524 |
543 ENV-TO = "env_to" "{" {(TO-ADDR | DCC-TO)}+ "}" | 525 ENV-TO = "env_to" "{" {(TO-ADDR | DCC-TO)}+ "}" |
544 TO-ADDR = ADDRESS [";"] | 526 TO-ADDR = ADDRESS [";"] |
545 DCC-TO = "dcc_to" ("ok" | "many") "{" DCCINCLUDEFILE "}" ";" | 527 DCC-TO = "dcc_to" ("ok" | "many") "{" DCCINCLUDEFILE "}" ";" |
546 | 528 |
677 spammer@example.com black; | 659 spammer@example.com black; |
678 }; | 660 }; |
679 };]]></literallayout> | 661 };]]></literallayout> |
680 </refsect1> | 662 </refsect1> |
681 | 663 |
682 <refsect1> | 664 <refsect1 id='version.5'> |
665 <title>CVS Version</title> | |
683 <para> | 666 <para> |
684 $Id$ | 667 $Id$ |
685 </para> | 668 </para> |
686 </refsect1> | 669 </refsect1> |
687 | 670 |