New with this version: * Updated from more recent version to work properly and to bring things current. * Add Bennett Todd's preforking and option-parsing code from smtpproxy. See notes below for more details. * Documentation appropriately updated. NOTE: Startup of the script has changed. The script now requires three parameters before the it will start, notably listening IP and port, next-hop server and port, and e-mail address to send all messages marked "positive" to (which may be per-user overridable in the future). The minimum syntax is as follows: spamproxyd srdaddr:srcport dstaddr:dstport spamaddr@example.com If any of the three required parameters are missing, the script will error out with the syntax and show edited-in defaults an examples. You can also specify the size of the process pool (in number of preforked child processes) as well as the low- and high-water-marks of the number of messages each child may process before being reaped and replaced. The in-script values are ideal for my own production system, currently a Pentium Pro 200 with 64 megabytes of RAM running Debian GNU/Linux Woody which already does quite a bit more than just handle e-mail. Best thing to do is to play with these settings then throw a bunch of mixed mail at it. As always, YMMV. Things are still quite rough, but this is a marked improvement from the previous version, which when left running for an extended period of time, would consume an enormous amount of memory depending on the size of the largest messages passed through it. Discarding the process after a certain number of messages processed helps this situation enormously. Preforking also allows the script to handle more messages per unit time, allowing the script to be bit more scalable, a la Apache. Many thanks go to Bennett Todd for the code which makes this possible. As always, any comments and suggestions for improvement would be greatly suggested. --Ian R. Justman 02/26/2002