Skip to content

Commit 53210b0

Browse files
committed
Initial commit
0 parents  commit 53210b0

File tree

5 files changed

+728
-0
lines changed

5 files changed

+728
-0
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
release
2+
.project
3+
settings.xml
4+
.settings
5+
Thumbs.db

changelog.txt

+214
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
SpamPD Change Log
2+
-----------------
3+
4+
2.40 (10-Jan-09)
5+
6+
- New config option to load a specific configuration file after the default
7+
local.cf file, thereby overriding any settings therein. The new option is
8+
--saconfig=filename. Thanks to Sven Mueller for code and Bernd Zeimetz for
9+
bringing it up. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=344373)
10+
11+
- Integrated code by Alexander Wirt to introduce a parameter which
12+
sets a proper home directory (--homedir=path) and also cleans up the
13+
environment before backgrounding.
14+
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=421100)
15+
* NOTE: * default homedir is /var/spool/spamassassin/spampd which needs to be
16+
writable by the user spampd is running as. Previously, some files like the
17+
auto-whitelist were written to the .spamassassin folder inside the users home
18+
directory who started spampd, typically root.
19+
20+
- Integrated fix from Vladislav Kurz for LMTP multi-line response after DATA
21+
is sent. (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=395355)
22+
23+
- Yet another fix for older Net::Server versions (<= 0.87) dying when logging
24+
a % character to Sys::Syslog. This also fixes the bug in 2.30 that logs "%s"
25+
instead of the actual messages on some system.
26+
27+
- Fixed bug with temp files sticking around until spampd child exists,
28+
introduced when SA 3.0 was released
29+
(https://issues.apache.org/SpamAssassin/show_bug.cgi?id=5444).
30+
Thanks to Simon Matter for bringing this to my attention.
31+
32+
########
33+
34+
2.30 (31-Oct-05)
35+
- Another, hopefully final, fix for the Sys::Syslog issue of % signs in the log
36+
string. Fixes possible DoS vulnerability. Thanks to Sven Mueller and Florian
37+
Weimer for the solution.
38+
- Added new options for adding X-Envelope-From and (optionally) X-Envelope-To
39+
headers to messages before SA processing. The idea is to help SA process any
40+
blacklist/whitelist to/from directives on the actual sender/recipients instead
41+
of the possibly bogus envelope headers. Use --seh or --set-envelope-headers
42+
to enable setting both headers, or use --sef or --set-envelope-from to enable
43+
only X-Envelope-From. If added, spampd attempts to remove the X-Envelope-To
44+
header after SA processing to preserve BCC recipient anonymity, but enabling
45+
this header may still expose recipient information. See man page for more
46+
details. This patch was originally submitted by Sven Mueller, was slightly
47+
modified, and the --sef option was added.
48+
49+
########
50+
51+
2.21 (23-Oct-05) (unreleased)
52+
- fixed SA version check on alphanumeric version strings. Stops the annoying
53+
Perl warning messages in the mail log. Thanks to Sven Mueller for the fix.
54+
55+
########
56+
57+
2.20 (05-Oct-04)
58+
- added support for SpamAssassin version 3. spampd should now support all
59+
SA versions (tested with 2.6.3 and 3.0.0).
60+
- removed --add-sc-header feature. It is now redundant with SA v2.6 ability
61+
to (almost fully) customize headers, which v3 improves on. If anyone
62+
really needs this feature, please let me know.
63+
- added --nodetach option to prevent daemon process backgrounding. Patch
64+
provided by Urban Petry. Can be useful for win32/cygwin.
65+
- if --debug is specified, Net::Server log level is increased to 4 (debug)
66+
to provide some more info in the log (can be useful for diagnosing
67+
user/permission issues). Thanks to Urban Petry for idea.
68+
- the message sender (From header) is now included in the log along with message
69+
ID, recipient, and scoring info. Thanks to Roland Koeckel for the patch.
70+
71+
########
72+
73+
2.13 (24-Nov-03)
74+
- SA debug messages redirected from STDERR (warn) to syslog. Thanks to Roland
75+
Koeckel for the suggestion.
76+
77+
########
78+
79+
2.12 (15-Nov-03)
80+
- fixed bug related to Sys::Syslog where we needed to escape % signs in
81+
Message IDs. Thanks to Jeffrey W. Collyer and Yann Grossel for the bug reports.
82+
- minor performance improvement in SpamPD::Client using buffered write to send
83+
message data. Thanks to Sam Horrocks for the tip.
84+
- fixed error condition when an error response ([4|5]xx) was returned after a
85+
DATA command was sent. Thanks to Rodrigo Ventura for bug reports about this.
86+
87+
########
88+
89+
2.11 (15-Jul-03):
90+
- fix for occasional corrupted message headers which caused blank messages
91+
(seemed to have only affected certain malformed spam mail).
92+
- added --logsock option for syslog socket. Defaults to 'unix' except for
93+
HP-UX and SunOS (Solaris) which I'm told prefer 'inet'.
94+
95+
########
96+
97+
2.10 (01-Jul-03):
98+
- added optional 'X-Spam-Checked-By: {hostname}' header, where {hostname} is,
99+
theoretically, the name of the machine doing the message scanning. New
100+
options --add-sc-header and --hostname=name control this behavior.
101+
102+
########
103+
104+
2.00 (10-Jun-03):
105+
- major rewrite of how mail is handled internally. spampd now takes no
106+
responsibility for the mail at any point, instead acting as a transparent
107+
proxy between the originating and the destination servers. That is, the
108+
servers speak to each other through spampd so final mail delivery
109+
occurs only when the destination server acknowledges receipt of the data.
110+
Idea based on smtpprox by Bennett Todd (http://bent.latency.net/smtpprox/).
111+
Unfortunately this breaks the ability to redirect the mail based on spam
112+
score, since scoring happens after all recipients have been specified and
113+
accepted. But, it is much cleaner and safer than the previous method.
114+
115+
- new architecture doesn't store the mail data in memory any more. Message
116+
is still written to memory before scanning by SpamAssassin, but messages
117+
larger than the --maxsize to be scanned won't eat up a bunch of memory.
118+
From smtpprox documentation by Bennet Todd:
119+
"it [spampd] stores the body of the message in an unlinked file
120+
under /tmp, which should be a tmpfs; this prevents the allocation
121+
overhead associated with large strings (often 2-3x) and ensures that
122+
space will be returned to the OS as soon as it's not needed."
123+
124+
- as a bonus feature, LMTP is now supported by virtue of spampd's transparency.
125+
126+
- added a timeout check around the socket operations as suggested in the
127+
Net::Server docs. Added new parameter to control this: --childtimeout=n
128+
where n is number of seconds.
129+
130+
- added a timeout check around the message processing (spam checking) routines
131+
to guard against a SpamAssassin hang. Added new parameter to control
132+
this: --satimeout=n where n is number of seconds. If a timeout (or error)
133+
occurs while processing, the mail is still passed on unless the new --dose
134+
(die-on-sa-errors) paramater is given.
135+
136+
- added --children=n parameter to specify how many child
137+
servers to spawn and maintain. Default is 5 children (plus
138+
one parent).
139+
140+
- now uses Net::Server::PreForkSimple instead of PreFork. (Tried utilizing the
141+
advanced children pool features of PreFork but either couldn't figure it out
142+
or they're kinda broken. If anyone has experience here, please let me know.)
143+
144+
- improved logging including the Message-ID, recipients, 100ths precision
145+
on spam score, processing time, and file size. Logging format now better
146+
resembles that of spamd (which hopefully means spamd log analysis tools can be
147+
made to work with spampd easily).
148+
149+
- removed dependencies on Net::SMTP, Net::SMTP::Server::Client, and Error
150+
modules.
151+
152+
- host/port and relay host/port can both be specified as xx.xx.xx.xx:nn in
153+
the --host and --relayhost parameters, or as individual parameters (--host,
154+
--port, --relayhost, --relayport).
155+
156+
# The next 3 items are ideas/patches by
157+
# Kurt Andersen,
158+
# Agilent Technologies Postmaster
159+
# Global Messaging Team, Agilent Technologies
160+
161+
- added optional support for Time::HiRes for more accurate processing time
162+
reporting in the log (automatically loaded if Time::HiRes is available).
163+
164+
- added optional logging of which SA rules matched a message. New option is
165+
--log-rules-hit or --rh for short.
166+
167+
- Added auto HPUX OS detection for syslog loggging
168+
"(for some reason HPUX chokes on using the 'unix' socket type)."
169+
170+
# Thanks Kurt!
171+
172+
- added much more verbose spampd logging when using the --debug option.
173+
174+
- 3 parameters are now deprecated but accepted for backwards compatability:
175+
--dead-letters, --heloname, and --stop-at-threshold
176+
177+
- added shorthand choice for some options:
178+
--aw for --auto-whitelist; --L for --local-only; --a for --tagall
179+
--u for --user; --g for --group; --p for --pid
180+
--d for --debug; --h for --help;
181+
182+
- documentation updates
183+
184+
- licensing change due to use of Bennet Todd's code (to GNU GPL from Perl
185+
Artistic).
186+
187+
########
188+
189+
1.0.2 (13-Apr-03):
190+
- added 'local-only' parameter to pass on to SA which turns off all
191+
network-based tests (DNS, Razor, etc).
192+
193+
########
194+
195+
1.0.1 (3-Feb-03):
196+
- fixed minor but substantial bug preventing child processes
197+
from exiting properly since the counter wasn't being incremented (d'oh!).
198+
Thanks to Mark Blackman for pointing this out.
199+
200+
- fixed typo in pod docs (Thx to James Sizemore for pointing out)
201+
202+
########
203+
204+
Changes to assassind (1.0.0 initial release of spampd - May 2002):
205+
A different message rewriting method (using
206+
Mail::SpamAssassin::NoMailAudit instead of Dave Carrigan's
207+
custom headers and Mail::Audit);
208+
Adding more options for message handling, network/protocol options,
209+
some options to pass on to SpamAssassin (such as whitelist usage);
210+
More orientation to being used as a content filter for the
211+
Postfix MTA, mostly by changing some default values;
212+
Documentation changes;
213+
214+
## EOF ##

misc/spampd-rh-rc-script.sh

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/sh
2+
#
3+
# This script starts and stops the spampd daemon
4+
#
5+
# chkconfig: 2345 80 30
6+
#
7+
# description: spampd is a daemon process which uses SpamAssassin to check
8+
# email messages for SPAM.
9+
10+
# Source function library.
11+
. /etc/rc.d/init.d/functions
12+
13+
# Source networking configuration.
14+
. /etc/sysconfig/network
15+
16+
# Check that networking is up.
17+
[ ${NETWORKING} = "no" ] && exit 0
18+
19+
[ -f /usr/bin/spampd -o -f /usr/local/bin/spampd ] || exit 0
20+
PATH=$PATH:/usr/bin:/usr/local/bin
21+
22+
# See how we were called.
23+
case "$1" in
24+
start)
25+
# Start daemon.
26+
echo -n "Starting spampd: "
27+
daemon spampd --port=10025 --relayhost=127.0.0.1:25 --tagall --auto-whitelist
28+
RETVAL=$?
29+
touch /var/lock/spampd
30+
echo
31+
;;
32+
stop)
33+
# Stop daemons.
34+
echo -n "Shutting down spampd: "
35+
killproc spampd
36+
RETVAL=$?
37+
rm -f /var/lock/spampd
38+
echo
39+
;;
40+
restart)
41+
$0 stop
42+
$0 start
43+
;;
44+
status)
45+
status spampd
46+
;;
47+
*)
48+
echo "Usage: $0 {start|stop|restart|status}"
49+
exit 1
50+
esac
51+
52+
exit 0

readme.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# SpamPD
2+
3+
<span style="color: red">NOTE: please see Download section for official release versions. The repository version IS NOT THOUROUGHLY TESTED.</span>
4+
5+
spampd is a program used within an e-mail delivery system to scan messages for possible Unsolicited Commercial E-mail (UCE, aka spam) content.
6+
It uses an excellent program called SpamAssassin (SA) to do the actual message scanning. spampd acts as a transparent SMTP/LMTP proxy between
7+
two mail servers, and during the transaction it passes the mail through SA. If SA decides the mail could be spam, then spampd will ask SA to
8+
add some headers and a report to the message indicating it's spam and why. spampd is written in Perl and should theoretically run on any
9+
platform supported by Perl and SpamAssassin.
10+
11+
More information is available at <a href="http://www.worlddesign.com/index.cfm/page/rd/mta/spampd.htm">here</a>.
12+

0 commit comments

Comments
 (0)