spamd - daemonized version of spamassassin
spamd [options]
Options:
-l, --allow-tell Allow learning/reporting -c, --create-prefs Create user preferences files -C path, --configpath=path Path for default config files --siteconfigpath=path Path for site configs -d, --daemonize Daemonize -h, --help Print usage message. -i [ipaddr], --listen-ip=ipaddr Listen on the IP ipaddr -p port, --port=port Listen on specified port -m num, --max-children=num Allow maximum num children --min-children=num Allow minimum num children --min-spare=num Lower limit for number of spare children --max-spare=num Upper limit for number of spare children --max-conn-per-child=num Maximum connections accepted by child before it is respawned --round-robin Use traditional prefork algorithm --timeout-tcp=secs Connection timeout for client headers --timeout-child=secs Connection timeout for message checks -q, --sql-config Enable SQL config (only useful with -x) -Q, --setuid-with-sql Enable SQL config (only useful with -x, enables use of -H) --ldap-config Enable LDAP config (only useful with -x) --setuid-with-ldap Enable LDAP config (only useful with -x, enables use of -H) --virtual-config-dir=dir Enable pattern based Virtual configs (needs -x) -r pidfile, --pidfile Write the process id to pidfile -s facility, --syslog=facility Specify the syslog facility --syslog-socket=type How to connect to syslogd -u username, --username=username Run as username -g groupname, --groupname=groupname Run as groupname -v, --vpopmail Enable vpopmail config -x, --nouser-config Disable user config files --auth-ident Use ident to authenticate spamc user --ident-timeout=timeout Timeout for ident connections -A host,..., --allowed-ips=..,.. Limit ip addresses which can connect -D, --debug[=areas] Print debugging messages (for areas) -L, --local Use local tests only (no DNS) -P, --paranoid Die upon user errors -H [dir], --helper-home-dir[=dir] Specify a different HOME directory --ssl Run an SSL server --server-key keyfile Specify an SSL keyfile --server-cert certfile Specify an SSL certificate --socketpath=path Listen on given UNIX domain socket --socketowner=name Set UNIX domain socket file's owner --socketgroup=name Set UNIX domain socket file's group --socketmode=mode Set UNIX domain socket file's mode
The purpose of this program is to provide a daemonized version of the spamassassin executable. The goal is improving throughput performance for automated mail checking.
This is intended to be used alongside spamc
, a fast, low-overhead C client
program.
See the README file in the spamd
directory of the SpamAssassin distribution
for more details.
Note: Although spamd
will check per-user config files for every message, any
changes to the system-wide config files will require either restarting spamd
or forcing it to reload itself via SIGHUP for the changes to take effect.
Note: If spamd
receives a SIGHUP, it internally reloads itself, which
means that it will change its pid and might not restart at all if its
environment changed (ie. if it can't change back into its own directory). If
you plan to use SIGHUP, you should always start spamd
with the -r
switch to know its current pid.
Options of the long form can be shortened as long as they remain unambiguous. (i.e. --dae can be used instead of --daemonize) Also, boolean options (like --user-config) can be negated by adding no (--nouser-config), however, this is usually unnecessary.
Note that spamd always trusts the username passed in (unless
--auth-ident is used) so clients could maliciously learn messages
for other users. (This is not ususally a concern with an SQL Bayes
store as users will typically have read-write access directly to the
database, and can also use sa-learn
with the -u option to
achieve the same result.)
/usr/share/spamassassin
or similar).
/etc/mail/spamassassin
or similar).
If your spamc client does not support sending the User:
header,
like exiscan
, then the SQL username used will always be nobody.
--sql-config
,
only it is using an LDAP server.
--setuid-with-sql
, only it is using an LDAP server.
@
sign.@
sign.So for example, if /vhome/users/%u/spamassassin
is specified, and spamc
sends a virtual username of jm@example.com
, the directory
/vhome/users/jm@example.com/spamassassin
will be used.
The set of characters allowed in the virtual username for this path are restricted to:
A-Z a-z 0-9 - + _ . , @ =
All others will be replaced by underscores (_
).
This path must be a writable directory. It will be created if it does not
already exist. If a file called user_prefs exists in this directory (note:
not in a .spamassassin
subdirectory!), it will be loaded as the user's
preferences. The Bayes databases for that user will be stored in this directory.
Note that this requires that -x is used, and cannot be combined with SQL- or LDAP-based configuration.
The pattern must expand to an absolute directory when spamd is running daemonized (-d).
Currently, use of this without -u is not supported.
stderr
is specified,
output will be written to stderr. (This is useful if you're running spamd
under the daemontools
package.) With a facility of file
, all output
goes to spamd.log. facility is interpreted as a file name to log to if it
contains any characters except a-z and 0-9. null
disables logging completely
(used internally).
Examples: | |
spamd -s mail # use syslog, facility mail (default) | |
spamd -s ./mail # log to file ./mail | |
spamd -s stderr 2>/dev/null # log to stderr, throw messages away | |
spamd -s null # the same as above | |
spamd -s file # log to file ./spamd.log | |
spamd -s /var/log/spamd.log # log to file /var/log/spamd.log |
If logging to a file is enabled and that log file is rotated, the spamd server must be restarted with a SIGHUP. (If the log file is just truncated, this is not needed but still recommended.)
Note that logging to a file does not use locking, so you cannot intermix logging from spamd and other processes into the same file. If you want to mix logging like this, use syslog instead.
If you use syslog logging, it is essential to send a SIGHUP to the spamd daemon when you restart the syslogd daemon. (This is due to a shortcoming in Perl's syslog handling, where the disappearance of the connection to the syslogd is considered a fatal error.)
unix
,
inet
or none
. The default is to try unix
first, falling back to
inet
if perl detects errors in its unix
support.
Some platforms, or versions of perl, are shipped with dysfunctional versions of the Sys::Syslog package which do not support some socket types, so you may need to set this. If you get error messages regarding __PATH_LOG or similar from spamd, try changing this setting.
The socket type file
is used internally and should not be specified. Use
the -s
switch instead.
setuid()
to the user running spamc
, if spamd
is running
as root.
Note: ``--username=root'' is not a valid option. If specified, spamd
will
exit with a fatal error on startup.
off(on)
reading of per-user configuration files (user_prefs) from the
user's home directory. The default behaviour is to read per-user
configuration from the user's home directory.
This option does not disable or otherwise influence the SQL, LDAP or Virtual Config Dir settings.
-A 10.11.12.13 -- only allow connections from 10.11.12.13
.
-A 10.11.12.13,10.11.12.14 -- only allow connections from 10.11.12.13
and
10.11.12.14
.
-A 10.200.300.0/24 -- allow connections from any machine in the range
10.200.300.*
.
-A 10. -- allow connections from any machine in the range 10.*.*.*
.
By default, connections are only accepted from localhost [127.0.0.1].
spamassassin -D bayes,learn,dns
Higher priority informational messages that are suitable for logging in normal circumstances are available with an area of ``info''.
For more information about which areas (also known as channels) are available, please see the documentation at:
C<http://wiki.apache.org/spamassassin/DebugChannels>
-L
flag to spamassassin(1)
.
Incoming connections can still occur if all of the children are busy,
however those connections will be queued waiting for a free child.
The minimum value is 1
, the default value is 5
.
Please note that there is a OS specific maximum of connections that can be
queued (Try perl -MSocket -e'print SOMAXCONN'
to find this maximum).
Note that if you run too many servers for the amount of free RAM available, you run the danger of hurting performance by causing a high swap load as server processes are swapped in and out continually.
1
, the default value is 1
. If you have lots of free RAM, you may want to
increase this.
1
.
2
.
1
, the default value is 200
.
spamd
will attempt to keep a small number of ``hot'' child
processes as busy as possible, and keep any others as idle as possible, using
something similar to the Apache httpd server scaling algorithm. This is
accomplished by the master process coordinating the activities of the children.
This switch will disable this scaling algorithm, and the behaviour seen in
the 3.0.x versions will be used instead, where all processes receive an
equal load and no scaling takes place.
1
,
the default value is 30
, and a value of 0
will disable socket
timeouts completely.
1
, the default
value is 300
, and a value of 0
will disable child timeouts completely.
Warning: the Perl support on BSD platforms for UNIX domain sockets seems to have a bug regarding paths of over 100 bytes or so (SpamAssassin bug 4380). If you see a 'could not find newly-created UNIX socket' error message, and the path appears truncated, this may be the cause. Try using a shorter path to the socket.
root
, and if -u
is used, that user should have write permissions to unlink the file
later, for when the spamd
server is killed.
--socketowner
for notes on ownership and permissions.
-u
is
used, that user should have write permissions to unlink the file later, for
when the spamd
server is killed.
spamc(1)
spamassassin(1)
Mail::SpamAssassin::Conf(3)
Mail::SpamAssassin(3)
Mail::SpamAssassin
The SpamAssassin(tm)
Project (http://spamassassin.apache.org/)
SpamAssassin is distributed under the Apache License, Version 2.0, as
described in the file LICENSE
included with the distribution.