1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>SpamPD - Spam Proxy Daemon</title>
<link rev="made" href="mailto:root@localhost" />
</head>
<body style="background-color: white">
<table border="0" width="100%" cellspacing="0" cellpadding="3">
<tr><td class="block" style="background-color: #cccccc" valign="middle">
<big><strong><span class="block"> SpamPD - Spam Proxy Daemon</span></strong></big>
</td></tr>
</table>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">Synopsis</a></li>
<li><a href="#description">Description</a></li>
<li><a href="#requires">Requires</a></li>
<li><a href="#operation">Operation</a></li>
<li><a href="#upgrading">Upgrading</a></li>
<li><a href="#installation">Installation</a></li>
<ul>
<li><a href="#postfixspecific_notes">Postfix-specific Notes</a></li>
</ul>
<li><a href="#options">Options</a></li>
<ul>
<li><a href="#deprecated_options">Deprecated Options</a></li>
</ul>
<li><a href="#examples">Examples</a></li>
<li><a href="#credits">Credits</a></li>
<ul>
<li><a href="#code_contributors__in_order_of_appearance__">Code Contributors (in order of appearance):</a></li>
</ul>
<li><a href="#copyright__license__and_disclaimer">Copyright, License, and Disclaimer</a></li>
<li><a href="#bugs">Bugs</a></li>
<li><a href="#to_do">To Do</a></li>
<li><a href="#see_also">See Also</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="name">NAME</a></h1>
<p>SpamPD - Spam Proxy Daemon (version 2.2)</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="synopsis">Synopsis</a></h1>
<p><strong>spampd</strong>
[<strong>--host=host[:port]</strong>]
[<strong>--relayhost=hostname[:port]</strong>]
[<strong>--user|u=username</strong>]
[<strong>--group|g=groupname</strong>]
[<strong>--children|c=n</strong>]
#[<strong>--maxchildren|mc=n</strong>]
[<strong>--maxrequests=n</strong>]
[<strong>--childtimeout=n</strong>]
[<strong>--satimeout=n</strong>]
[<strong>--pid|p=filename</strong>]
[<strong>--nodetach</strong>]
[<strong>--logsock=inet|unix</strong>]
[<strong>--maxsize=n</strong>]
[<strong>--dose</strong>]
[<strong>--tagall|a</strong>]
[<strong>--log-rules-hit|rh</strong>]
[<strong>--set-envelope-headers|seh</strong>]
[<strong>--set-envelope-from|sef</strong>]
[<strong>--auto-whitelist|aw</strong>]
[<strong>--local-only|L</strong>]
[<strong>--debug|d</strong>]</p>
<p><strong>spampd</strong> <strong>--help</strong></p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="description">Description</a></h1>
<p><em>spampd</em> is an SMTP/LMTP proxy that marks (or tags) spam using
SpamAssassin (http://www.SpamAssassin.org/). The proxy is designed
to be transparent to the sending and receiving mail servers and at no point
takes responsibility for the message itself. If a failure occurs within
<em>spampd</em> (or SpamAssassin) then the mail servers will disconnect and the
sending server is still responsible for retrying the message for as long
as it is configured to do so.</p>
<p><em>spampd</em> uses SpamAssassin to modify (tag) relayed messages based on
their spam score, so all SA settings apply. This is described in the SA
documentation. <em>spampd</em> will by default only tell SA to tag a
message if it exceeds the spam threshold score, however you can have
it rewrite all messages passing through by adding the --tagall option
(see SA for how non-spam messages are tagged).</p>
<p><em>spampd</em> logs all aspects of its operation to syslog(8), using the
mail syslog facility.</p>
<p>The latest version can be found at
<a href="http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm">http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm</a>.</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="requires">Requires</a></h1>
<p>Perl modules:</p>
<dl>
<dt><strong><a name="item_mail_3a_3aspamassassin"><strong>Mail::SpamAssassin</strong></a></strong><br />
</dt>
<dt><strong><a name="item_net_3a_3aserver_3a_3apreforksimple"><strong>Net::Server::PreForkSimple</strong></a></strong><br />
</dt>
<dt><strong><a name="item_io_3a_3afile"><strong>IO::File</strong></a></strong><br />
</dt>
<dt><strong><a name="item_io_3a_3asocket"><strong>IO::Socket</strong></a></strong><br />
</dt>
<dt><strong><a name="item_hires"><strong>Time::HiRes</strong> (not actually required but recommended)</a></strong><br />
</dt>
</dl>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="operation">Operation</a></h1>
<p><em>spampd</em> is meant to operate as an S/LMTP mail proxy which passes
each message through SpamAssassin for analysis. Note that <em>spampd</em>
does not do anything other than check for spam, so it is not suitable as
an anti-relay system. It is meant to work in conjunction with your
regular mail system. Typically one would pipe any messages they wanted
scanned through <em>spampd</em> after initial acceptance by your MX host.
This is especially useful for using Postfix's (http://www.postfix.org)
advanced content filtering mechanism, although certainly not limited to
that application.</p>
<p>Please re-read the second sentence in the above paragraph. You should NOT
enable <em>spampd</em> to listen on a public interface (IP address) unless you
know exactly what you're doing! It is very easy to set up an open relay this
way.</p>
<p>Here are some simple examples (square brackets in the ``diagrams'' indicate
physical machines):</p>
<p><strong>Running between firewall/gateway and internal mail server</strong></p>
<p>The firewall/gateway MTA would be configured to forward all of its mail
to the port that <em>spampd</em> listens on, and <em>spampd</em> would relay its
messages to port 25 of your internal server. <em>spampd</em> could either
run on its own host (and listen on any port) or it could run on either
mail server (and listen on any port except port 25).</p>
<pre>
Internet -> [ MX gateway (@inter.net.host:25) ->
spampd (@localhost:2025) ] ->
Internal mail (@private.host.ip:25)</pre>
<p><strong>Using Postfix advanced content filtering</strong></p>
<p>Please see the <em>FILTER_README</em> that came with the Postfix distribution. You
need to have a version of Postfix which supports this (ideally v.2 and up).</p>
<pre>
Internet -> [ Postfix (@inter.net.host:25) ->
spampd (@localhost:10025) ->
Postfix (@localhost:10026) ] -> final delivery</pre>
<p>Note that these examples only show incoming mail delivery. Since it is
usually unnecessary to scan mail coming from your network (right?),
it may be desirable to set up a separate outbound route which bypasses
<em>spampd</em>.</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="upgrading">Upgrading</a></h1>
<p>If upgrading from a version prior to 2.2, please note that the --add-sc-header
option is no longer supported. Use SAs built-in header manipulation features
instead (as of SA v2.6).</p>
<p>Upgrading from version 1 simply involves replacing the <em>spampd</em> program file
with the latest one. Note that the <em>dead-letters</em> folder is no longer being
used and the --dead-letters option is no longer needed (though no errors are
thrown if it's present). Check the <a href="#options">Options</a> list below for a full list of new
and deprecated options. Also be sure to check out the change log.</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="installation">Installation</a></h1>
<p><em>spampd</em> can be run directly from the command prompt if desired. This is
useful for testing purposes, but for long term use you probably want to put
it somewhere like /usr/bin or /usr/local/bin and execute it at system startup.
For example on Red Hat-style Linux system one can use a script in
/etc/rc.d/init.d to start <em>spampd</em> (a sample script is available on the
<em>spampd</em> Web page @ <a href="http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm).">http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm).</a></p>
<p>The options all have reasonable defaults, especially for a Postfix-centric
installation. You may want to specify the --children option if you have an
especially beefy or weak server box because <em>spampd</em> is a memory-hungry
program. Check the <a href="#options">Options</a> for details on this and all other parameters.</p>
<p>Note that <em>spampd</em> <strong>replaces</strong> <em>spamd</em> from the <em>SpamAssassin</em> distribution
in function. You do not need to run <em>spamd</em> in order for <em>spampd</em> to work.
This has apparently been the source of some confusion, so now you know.</p>
<p>
</p>
<h2><a name="postfixspecific_notes">Postfix-specific Notes</a></h2>
<p>Here is a typical setup for Postfix ``advanced'' content filtering as described
in the <em>FILTER_README</em> that came with the Postfix distribution (which you
really need to read):</p>
<p><em>/etc/postfix/master.cf</em>:
</p>
<pre>
smtp inet n - y - - smtpd
-o content_filter=smtp:localhost:10025
-o myhostname=mx.example.com</pre>
<pre>
localhost:10026 inet n - n - 10 smtpd
-o content_filter=
-o myhostname=mx-int.example.com</pre>
<p>The first entry is the main public-facing MTA which uses localhost:10025
as the content filter for all mail. The second entry receives mail from
the content filter and does final delivery. Both smtpd instances use
the same Postfix <em>main.cf</em> file. <em>spampd</em> is the process that listens on
localhost:10025 and then connects to the Postfix listener on localhost:10026.
Note that the <code>myhostname</code> options must be different between the two instances,
otherwise Postfix will think it's talking to itself and abort sending.</p>
<p>For the above example you can simply start <em>spampd</em> like this:</p>
<pre>
spampd --host=localhost:10025 --relayhost=localhost:10026</pre>
<p><em>FILTER_README</em> from the Postfix distro has more details and examples of
various setups, including how to skip the content filter for outbound mail.</p>
<p>Another tip for Postfix when considering what timeout values to use for
--childtimout and --satimeout options is the following command:</p>
<p><code># postconf | grep timeout</code></p>
<p>This will return a list of useful timeout settings and their values. For
explanations see the relevant <code>man</code> page (smtp, smtpd, lmtp). By default
<em>spampd</em> is set up for the default Postfix timeout values.</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="options">Options</a></h1>
<dl>
<dt><strong><a name="item__2d_2dhost_3dip_5b_3aport_5d_or_hostname_5b_3aport"><strong>--host=ip[:port] or hostname[:port]</strong></a></strong><br />
</dt>
<dd>
Specifies what hostname/IP and port <em>spampd</em> listens on. By default, it listens
on 127.0.0.1 (localhost) on port 10025.
</dd>
<dd>
<p><strong>Important!</strong> You should NOT enable <em>spampd</em> to listen on a
public interface (IP address) unless you know exactly what you're doing!</p>
</dd>
<p></p>
<dt><strong><a name="item__2d_2dport_3dn"><strong>--port=n</strong></a></strong><br />
</dt>
<dd>
Specifies what port <em>spampd</em> listens on. By default, it listens on
port 10025. This is an alternate to using the above --host=ip:port notation.
</dd>
<p></p>
<dt><strong><a name="item__2d_2drelayhost_3dip_5b_3aport_5d_or_hostname_5b_3"><strong>--relayhost=ip[:port] or hostname[:port]</strong></a></strong><br />
</dt>
<dd>
Specifies the hostname/IP where <em>spampd</em> will relay all
messages. Defaults to 127.0.0.1 (localhost). If the port is not provided, that
defaults to 25.
</dd>
<p></p>
<dt><strong><a name="item__2d_2drelayport_3dn"><strong>--relayport=n</strong></a></strong><br />
</dt>
<dd>
Specifies what port <em>spampd</em> will relay to. Default is 25. This is an
alternate to using the above --relayhost=ip:port notation.
</dd>
<p></p>
<dt><strong><a name="item__2d_2duser_3dusername_or__2d_2du_3dusername"><strong>--user=username</strong> or <strong>--u=username</strong></a></strong><br />
</dt>
<dt><strong><a name="item__2d_2dgroup_3dgroupname_or__2d_2dg_3dgroupname"><strong>--group=groupname</strong> or <strong>--g=groupname</strong></a></strong><br />
</dt>
<dd>
Specifies the user and group that the proxy will run as. Default is
<em>mail</em>/<em>mail</em>.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dchildren_3dn_or__2d_2dc_3dn"><strong>--children=n</strong> or <strong>--c=n</strong></a></strong><br />
</dt>
<dd>
Number of child servers to start and maintain (where n > 0). Each child will
process up to --maxrequests (below) before exiting and being replaced by
another child. Keep this number low on systems w/out a lot of memory.
Default is 5 (which seems OK on a 512MB lightly loaded system). Note that
there is always a parent process running, so if you specify 5 children you
will actually have 6 <em>spampd</em> processes running.
</dd>
<dd>
<p>You may want to set your origination mail server to limit the
number of concurrent connections to <em>spampd</em> to match this setting (for
Postfix this is the <code>xxxx_destination_concurrency_limit</code> setting where
'xxxx' is the transport being used, usually 'smtp', and the default is 100).</p>
</dd>
<p></p>
<dt><strong><a name="item__2d_2dmaxrequests_3dn"><strong>--maxrequests=n</strong></a></strong><br />
</dt>
<dd>
<em>spampd</em> works by forking child servers to handle each message. The
<strong>maxrequests</strong> parameter specifies how many requests will be handled
before the child exits. Since a child never gives back memory, a large
message can cause it to become quite bloated; the only way to reclaim
the memory is for the child to exit. The default is 20.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dchildtimeout_3dn"><strong>--childtimeout=n</strong></a></strong><br />
</dt>
<dd>
This is the number of seconds to allow each child server before it times out
a transaction. In an S/LMTP transaction the timer is reset for every command.
This timeout includes time it would take to send the message data, so it should
not be too short. Note that it's more likely the origination or destination
mail servers will timeout first, which is fine. This is just a ``sane'' failsafe.
Default is 360 seconds (6 minutes).
</dd>
<p></p>
<dt><strong><a name="item__2d_2dsatimeout_3dn"><strong>--satimeout=n</strong></a></strong><br />
</dt>
<dd>
This is the number of seconds to allow for processing a message with
SpamAssassin (including feeding it the message, analyzing it, and adding
the headers/report if necessary).
This should be less than your origination and destination servers' timeout
settings for the DATA command. For Postfix the default is 300 seconds in both
cases (smtp_data_done_timeout and smtpd_timeout). In the event of timeout
while processing the message, the problem is logged and the message is passed
on anyway (w/out spam tagging, obviously). To fail the message with a temp
450 error, see the --dose (die-on-sa-errors) option, below.
Default is 285 seconds.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dpid_3dfilename_or__2d_2dp_3dfilename"><strong>--pid=filename</strong> or <strong>--p=filename</strong></a></strong><br />
</dt>
<dd>
Specifies a filename where <em>spampd</em> will write its process ID so
that it is easy to kill it later. The directory that will contain this
file must be writable by the <em>spampd</em> user. The default is
<em>/var/run/spampd.pid</em>.
</dd>
<p></p>
<dt><strong><a name="item_inet"><strong>--logsock=unix or inet</strong> <code>(new in v2.20)</code></a></strong><br />
</dt>
<dd>
Syslog socket to use. May be either ``unix'' of ``inet''. Default is ``unix''
except on HP-UX and SunOS (Solaris) systems which seem to prefer ``inet''.
</dd>
<p></p>
<dt><strong><a name="item_nodetach"><strong>--nodetach</strong> <code>(new in v2.20)</code></a></strong><br />
</dt>
<dd>
If this option is given spampd won't detach from the console and fork into the
background. This can be useful for running under control of some daemon
management tools or when configured as a win32 service under cygrunsrv's
control.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dmaxsize_3dn"><strong>--maxsize=n</strong></a></strong><br />
</dt>
<dd>
The maximum message size to send to SpamAssassin, in KBytes. By default messages
over 64KB are not scanned at all, and an appropriate message is logged
indicating this. The size includes headers and attachments (if any).
</dd>
<p></p>
<dt><strong><a name="item__2d_2ddose"><strong>--dose</strong></a></strong><br />
</dt>
<dd>
Acronym for (d)ie (o)n (s)pamAssassin (e)rrors. By default if <em>spampd</em>
encounters a problem with processing the message through Spam Assassin (timeout
or other error), it will still pass the mail on to the destination server. If
you specify this option however, the mail is instead rejected with a temporary
error (code 450, which means the origination server should keep retrying to send
it). See the related --satimeout option, above.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dtagall_or__2d_2da"><strong>--tagall</strong> or <strong>--a</strong></a></strong><br />
</dt>
<dd>
Tells <em>spampd</em> to have SpamAssassin add headers to all scanned mail,
not just spam. By default <em>spampd</em> will only rewrite messages which
exceed the spam threshold score (as defined in the SA settings). Note that
for this option to work as of SA-2.50, the <em>always_add_report</em> and/or
<em>always_add_headers</em> settings in your SpamAssassin <em>local.cf</em> need to be
set to 1/true.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dlog_2drules_2dhit_or__2d_2drh"><strong>--log-rules-hit</strong> or <strong>--rh</strong></a></strong><br />
</dt>
<dd>
Logs the names of each SpamAssassin rule which matched the message being
processed. This list is returned by SA.
</dd>
<p></p>
<dt><strong><a name="item_seh"><strong>--set-envelope-headers</strong> or <strong>--seh</strong> <code>(new in v2.30)</code></a></strong><br />
</dt>
<dd>
Turns on addition of X-Envelope-To and X-Envelope-From headers to the mail
being scanned before it is passed to SpamAssassin. The idea is to help SA
process any blacklist/whitelist to/from directives on the actual
sender/recipients instead of the possibly bogus envelope headers. This
potentially exposes the list of all recipients of that mail (even BCC'ed ones).
Therefore usage of this option is discouraged.
</dd>
<dd>
<p><em>NOTE</em>: Even though spampd tries to prevent this leakage by removing the
X-Envelope-To header after scanning, SpamAssassin itself might add headers
itself which report one or more of the recipients which had been listed in
this header.</p>
</dd>
<p></p>
<dt><strong><a name="item_sef"><strong>--set-envelope-from</strong> or <strong>--sef</strong> <code>(new in v2.30)</code></a></strong><br />
</dt>
<dd>
Same as above option but only enables the addition of X-Envelope-From header.
For those that don't feel comfortable with the possible information exposure
of X-Envelope-To. The above option overrides this one.
</dd>
<p></p>
<dt><strong><a name="item__2d_2dauto_2dwhitelist_or__2d_2daw"><strong>--auto-whitelist</strong> or <strong>--aw</strong></a></strong><br />
</dt>
<dd>
This option is no longer relevant with SA version 3.0 and above, which
controls auto whitelist use via local.cf settings.
</dd>
<dd>
<p>For SA version < 3.0, turns on the SpamAssassin global whitelist feature.
See the SA docs. Note that per-user whitelists are not available.</p>
</dd>
<p></p>
<dt><strong><a name="item__2d_2dlocal_2donly_or__2d_2dl"><strong>--local-only</strong> or <strong>--L</strong></a></strong><br />
</dt>
<dd>
Turn off all SA network-based tests (DNS, Razor, etc).
</dd>
<p></p>
<dt><strong><a name="item__2d_2ddebug_or__2d_2dd"><strong>--debug</strong> or <strong>--d</strong></a></strong><br />
</dt>
<dd>
Turns on SpamAssassin debug messages which print to the system mail log
(same log as spampd will log to). Also turns on more verbose logging of
what spampd is doing (new in v2). Also increases log level of Net::Server
to 4 (debug), adding yet more info (but not too much) (new in v2.2).
</dd>
<p></p>
<dt><strong><a name="item__2d_2dhelp_or__2d_2dh"><strong>--help</strong> or <strong>--h</strong></a></strong><br />
</dt>
<dd>
Prints usage information.
</dd>
<p></p></dl>
<p>
</p>
<h2><a name="deprecated_options">Deprecated Options</a></h2>
<p>The following options are no longer used but still accepted for backwards
compatibility with prevoius <em>spampd</em> versions:</p>
<dl>
<dt><strong><a name="item__2d_2ddead_2dletters"><strong>--dead-letters</strong></a></strong><br />
</dt>
<dt><strong><a name="item__2d_2dheloname"><strong>--heloname</strong></a></strong><br />
</dt>
<dt><strong><a name="item__2d_2dstop_2dat_2dthreshold"><strong>--stop-at-threshold</strong></a></strong><br />
</dt>
<dt><strong><a name="item__2d_2dadd_2dsc_2dheader"><strong>--add-sc-header</strong></a></strong><br />
</dt>
<dt><strong><a name="item__2d_2dhostname"><strong>--hostname</strong></a></strong><br />
</dt>
</dl>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="examples">Examples</a></h1>
<dl>
<dt><strong><a name="item_running_between_firewall_2fgateway_and_internal_ma">Running between firewall/gateway and internal mail server</a></strong><br />
</dt>
<dd>
<em>spampd</em> listens on port 10025 on the same host as the internal mail server.
</dd>
<dd>
<pre>
spampd --host=192.168.1.10</pre>
</dd>
<dd>
<p>Same as above but <em>spampd</em> runs on port 10025 of the same host as
the firewall/gateway and passes messages on to the internal mail server
on another host.</p>
</dd>
<dd>
<pre>
spampd --relayhost=192.168.1.10</pre>
</dd>
<p></p>
<dt><strong><a name="item_using_postfix_advanced_content_filtering_example_a">Using Postfix advanced content filtering example
and the SA auto-whitelist feature</a></strong><br />
</dt>
<dd>
<pre>
spampd --port=10025 --relayhost=127.0.0.1:10026 --auto-whitelist</pre>
</dd>
</dl>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="credits">Credits</a></h1>
<p><em>spampd</em> is written and maintained by Maxim Paperno <<a href="mailto:MPaperno@WorldDesign.com">MPaperno@WorldDesign.com</a>>.
See <a href="http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm">http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm</a> for latest info.</p>
<p><em>spampd</em> v2 uses two Perl modules by Bennett Todd and Copyright (C) 2001 Morgan
Stanley Dean Witter. These are distributed under the GNU GPL (see
module code for more details). Both modules have been slightly modified
from the originals and are included in this file under new names.</p>
<p>Also thanks to Bennett Todd for the example smtpproxy script which helped create
this version of <em>spampd</em>. See <a href="http://bent.latency.net/smtpprox/">http://bent.latency.net/smtpprox/</a> .</p>
<p><em>spampd</em> v1 was based on code by Dave Carrigan named <em>assassind</em>. Trace
amounts of his code or documentation may still remain. Thanks to him for the
original inspiration and code. See <a href="http://www.rudedog.org/assassind/">http://www.rudedog.org/assassind/</a> .</p>
<p>Also thanks to <em>spamd</em> (included with SpamAssassin) and
<em>amavisd-new</em> (http://www.ijs.si/software/amavisd/) for some tricks.</p>
<p>Various people have contributed patches, bug reports, and ideas, all of whom
I would like to thank. I have tried to include credits in code comments and
in the change log, as appropriate.
</p>
<p>
</p>
<h2><a name="code_contributors__in_order_of_appearance__">Code Contributors (in order of appearance):</a></h2>
<pre>
Kurt Andersen
Roland Koeckel
Urban Petry
Sven Mueller
</pre>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="copyright__license__and_disclaimer">Copyright, License, and Disclaimer</a></h1>
<p><em>spampd</em> is Copyright (c) 2002 by World Design Group, Inc. and Maxim Paperno.
</p>
<p>Portions are Copyright (C) 2001 Morgan Stanley Dean Witter as mentioned above
in the Credits section.
</p>
<pre>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
</pre>
<pre>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
</pre>
<pre>
The GNU GPL can be found at <a href="http://www.fsf.org/copyleft/gpl.html">http://www.fsf.org/copyleft/gpl.html</a>
</pre>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="bugs">Bugs</a></h1>
<p>None known. Please report any to <a href="mailto:MPaperno@WorldDesign.com.">MPaperno@WorldDesign.com.</a>
</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="to_do">To Do</a></h1>
<p>Figure out how to use Net::Server::PreFork because it has cool potential for
load management. I tried but either I'm missing something or PreFork is
somewhat broken in how it works. If anyone has experience here, please let
me know.
</p>
<p>Add configurable option for rejecting mail outright based on spam score.
It would be nice to make this program safe enough to sit in front of a mail
server such as Postfix and be able to reject mail before it enters our systems.
The only real problem is that Postfix will see localhost as the connecting
client, so that disables any client-based checks Postfix can do and creates a
possible relay hole if localhost is trusted.
</p>
<p>
<a href="#__index__"><small>[Back to top]</small></a>
</p>
<hr />
<h1><a name="see_also">See Also</a></h1>
<p>perl(1), Spam::Assassin(3), <a href="http://www.spamassassin.org/">http://www.spamassassin.org/</a>,
<a href="http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm">http://www.WorldDesign.com/index.cfm/rd/mta/spampd.htm</a>
</p>
<p><a href="#__index__"><small>[Back to top]</small></a></p>
<table border="0" width="100%" cellspacing="0" cellpadding="3">
<tr><td class="block" style="background-color: #cccccc" valign="middle">
<big><strong><span class="block"> SpamPD - Spam Proxy Daemon</span></strong></big>
</td></tr>
</table>
</body>
</html>
|