spamdyke Documentation
This file is updated with each version of spamdyke to reflect the latest features and behavior. If you need documentation for an older version, each version's README file is included in the download package for that version.
This document applies to spamdyke version 4.0.3.
- About spamdyke
- Support
- How spamdyke works: When a message is not blocked
- How spamdyke works: When a message is blocked
- Usage
- Configuration Files
- Configuration Directories
- Configuration Tests
- Log Messages
- SMTP Error Codes
- Logging All Data
- Permissions
- DNS Queries
- Filter Levels
- TLS
- SMTP AUTH
- Relaying
- Reverse DNS
- Blacklists
- DNS RBLs
- DNS RHSBLs
- Whitelists
- Rejecting Senders and Recipients
- DNS Whitelists
- Whitelisting Senders and Recipients
- Graylisting / Greylisting
- Earlytalkers
- Limiting Numbers of Recipients
- Timeouts
- Extra Utilities
Other Documentation
- The following additional documents are available:
- Installation instructions: INSTALL.txt
- Upgrading instructions: UPGRADING.txt
- Frequently Asked Questions: FAQ.html
- Change log: Changelog.txt
- To-do list: TODO.txt
- Upgrading instructions: UPGRADING.txt
About spamdyke
help
version
spamdyke is a filter for monitoring and intercepting incoming SMTP connections to a qmail server. It acts as a transparent middleman, observing the conversation without interference unless it sees something it should block. Because it can silently monitor, it can also log mail traffic in several different ways.
spamdyke is ©2008 Sam Clippinger, samc (at) silence (dot) org. It is distributed under the GNU General Public License (version 2 only) from http://www.spamdyke.org/
The --help command line option will give a brief summary of the
available command line options. The --version command line option
will give just the version and copyright statement.
Support
spamdyke support is available from the spamdyke-users mailing list: www.spamdyke.org/mailman/listinfo/spamdyke-users.
The mailing list archives are searchable thanks to mail-archive.com: www.mail-archive.com/spamdyke-users@spamdyke.org.
All of the spamdyke documentation and downloadable files are available from the spamdyke website: www.spamdyke.org.If all else fails, email the author directly at samc (at) silence (dot) org.
How spamdyke works: When a message is not blocked
spamdyke works by acting as a middleman between qmail and the network (in Unix terms, it's a pipe). When no spamdyke filters are triggered and a message is delivered normally, spamdyke silently passes data in both directions. As the SMTP conversation takes place, spamdyke collects a few pieces of data (e.g. the sender and recipient addresses) so they can be logged.
spamdyke does modify the incoming message in one way. The SMTP protocol requires the remote sender to end every line with a two character terminator -- a carriage return and a line feed. Unlike most other mail servers, qmail chooses to strictly enforce this requirement. If a remote sender uses only a line feed to end a line (a typical and easy mistake to make), qmail will reject the message:
451 See http://pobox.com/~djb/docs/smtplf.html.
How spamdyke works: When a message is blocked
spamdyke's filters are described in detail below. When one of them is triggered, spamdyke moves in to block the incoming message.
First, it considers the enabled filters and waits until there is no way the client can avoid a rejection. For example, if authentication could take place but has not done so, spamdyke will wait to see if the remote sender authenticates. Authenticated or whitelisted connections are never filtered.
Next, once spamdyke is certain the message should be filtered, it cuts the connection between the remote sender and qmail. In the background, spamdyke closes the connection to qmail, so qmail will exit normally, believing the remote sender disconnected.
spamdyke continues sending responses to the remote server, just as qmail would have. Once the remote sender has identified the sender and recipient, spamdyke sends an error code and refuses to accept the message. The remote server disconnects, never knowing that spamdyke hijacked the conversation. spamdyke, meanwhile, uses the sender and recipient information it gathered to construct its log messages.
Usage
spamdyke's behavior is controlled through options given on the command line or in configuration files (or both).
On the command line, long options should be prefixed
with two hyphens (--). Some options have short versions, which
should be prefixed with one hyphen (-).
In a configuration file, only the long versions are valid and an equals sign must separate the value from the option. See Configuration Files for details.
For example, consider the max-recipients option, which restricts the
maximum number of recipients per message. On the command line, limiting the number
of recipients to 5 might look like this:
spamdyke --max-recipients 5 ...
spamdyke -a 5 ...
max-recipients=5
If the option's value contains spaces, it should be surrounded by quotes on the command line.
For example, consider the rejection-text-ip-blacklist option, which changes
the error message spamdyke sends if the remote server's IP address is blacklisted.
On the command line, changing the message might look like this:
spamdyke --rejection-text-ip-blacklist "Go away spammer" ...
rejection-text-ip-blacklist=Go away spammer
After all options are given, spamdyke expects the rest of its command line to contain the qmail command. For example:
spamdyke -a 5 /var/qmail/bin/qmail-smtpd
ERROR: Missing qmail-smtpd command
--) between the end of spamdyke's options and the qmail
command. For example:
spamdyke -a 5 -- /var/qmail/bin/qmail-smtpd
The following options are only valid on the command line:
| Long Version | Short Version | Parameter | Description |
config-test |
Tests the configuration as much as possible and reports any errors that can be discovered without actually accepting an incoming message.
Use this option with all other options that are given during normal operation. To check file permissions properly, use the run-as-user option.
See Configuration Tests for details. |
||
config-test-smtpauth-password |
PASSWORD |
While testing the configuration with config-test, run the commands given with
smtp-auth-command to test authentication
processing. Use PASSWORD as the authentication password. This option has no
effect unless config-test, config-test-smtpauth-username and
smtp-auth-command are given.
If config-test-smtpauth-password is given multiple times, spamdyke will use the last value it finds.
If config-test-smtpauth-password is not given, spamdyke will not test the authentication
command(s).
See Configuration Tests for details. |
|
config-test-smtpauth-username |
USERNAME |
While testing the configuration with config-test, run the commands given with
smtp-auth-command to test authentication
processing. Use USERNAME as the authentication username. This option has no
effect unless config-test, config-test-smtpauth-password and
smtp-auth-command are given.
If config-test-smtpauth-username is given multiple times, spamdyke will use the last value it finds.
If config-test-smtpauth-username is not given, spamdyke will not test the authentication
command(s).
See Configuration Tests for details. |
|
help |
h |
Displays a summary of spamdyke's options, then exits. | |
version |
v |
Displays the spamdyke version and copyright statement, then exits. |
The following options are valid on the command line and in configuration files. Some options are not valid in files within configuration directories; those options are noted below. See Configuration Directories for details.
| Long Version |
Short Version
(command line only) |
Parameter | Description |
access-file |
FILE |
Use FILE to determine if the remote host is allowed to connect and/or relay.
Only needed when using spamdyke to provide SMTP AUTH for an unpatched qmail
installation. Most often, FILE is /etc/tcp.smtp.
If access-file is given multiple times, each FILE is scanned (in the given order)
until a match is found.
If access-file is not given, spamdyke will not search any files for
relaying permission.
access-file is not valid within configuration directories.
See Relaying for details. |
|
config-dir |
DIR |
Search the directory structure starting at DIR for configuration files that
match the remote server's IP address, the remote server's rDNS name, the sender's email
address, the recipient's email address or any combination of the four criteria.
If config-dir is given multiple times, each DIR is scanned (in the given order)
until a match is found.
If config-dir is not given, spamdyke will not scan any directories for
configuration files.
config-dir is not valid within configuration directories.
See Configuration Directories for details. |
|
config-dir-search |
first, all-ip,
all-rdns, all-sender or all-recipient
|
Search the directory structure given by config-dir using the given
search rules.
If config-dir-search is given multiple times, the given values
are used in combination.
If config-dir-search is not given, spamdyke will use a value of first.
config-dir-search is not valid within configuration directories.
See Configuration Directories for details. |
|
config-file |
f |
FILE |
Read additional configuration options from FILE as though they were given on
the command line.
If config-file is given multiple times, each FILE is read in
the given order.
If config-file is not given, spamdyke will not read a configuration file.
See Configuration Files for details. |
connection-timeout-secs |
t |
SECS |
Forcibly disconnect after a total of SECS seconds, regardless of activity. A
value of 0 disables this feature.
If connection-timeout-secs is given multiple times, spamdyke will use the last value it finds.
If connection-timeout-secs is not given, spamdyke will not enforce a connection timeout.
connection-timeout-secs is not valid within configuration directories.
See Timeouts for details. |
dns-blacklist-entry |
x |
DNSRBL |
Check the remote server's IP address against the realtime blackhole list
DNSRBL. If it is found, the connection is rejected.
NOTE: Using more than a few DNS blacklists can cause serious performance problems.
If dns-blacklist-entry is given multiple times, spamdyke will check each given DNSRBL
for the remote server's IP address.
If dns-blacklist-entry and dns-blacklist-file are not given, spamdyke will not check any blackhole lists.
See DNS RBLs for details. |
dns-blacklist-file |
FILE |
Check the remote server's IP address against each of the realtime blackhole lists
listed in FILE. If it is found on any of the lists, the connection is rejected.
NOTE: Using more than a few DNS blacklists can cause serious performance problems.
If dns-blacklist-file is given multiple times, spamdyke will check each of the blackhole lists
listed in each of the files for the remote server's IP address until a match is found.
If dns-blacklist-entry and dns-blacklist-file are not given, spamdyke will not search any files for
blackhole lists.
See DNS RBLs for details. |
|
dns-level |
none, normal or aggressive |
none: Do not perform any DNS queries. All DNS-based filters will behave as
though no response was received from any nameserver.
normal: Send single DNS queries to one nameserver at a time and wait for
responses. This mimics the standard system resolver library's behavior.
aggressive: Send multiple DNS queries to multiple DNS servers simultaneously
to find answers as quickly as possible.
If dns-level is given multiple times, spamdyke will use the last value it finds.
If dns-level is not given, spamdyke will use a value of aggressive.
dns-level is not valid within configuration directories.
See DNS Queries for details. |
|
dns-max-retries-primary |
NUM |
Query the primary nameserver(s) NUM times before also querying the
secondary nameserver(s). If NUM is larger than the value of
dns-max-retries-total, the value of dns-max-retries-total
is used instead.
If dns-max-retries-primary is given multiple times, spamdyke will use the last value it finds.
If dns-max-retries-primary is not given, spamdyke will use a value of 1.
dns-max-retries-primary is not valid within configuration directories.
See DNS Queries for details. |
|
dns-max-retries-total |
NUM |
Send a maximum of NUM queries to any nameserver(s), primary or secondary.
If dns-max-retries-total is given multiple times, spamdyke will use the last value it finds.
If dns-max-retries-total is not given, spamdyke will use a value of 3.
dns-max-retries-total is not valid within configuration directories.
See DNS Queries for details. |
|
dns-server-ip |
IPADDRESS[:PORT] |
Use IPADDRESS as a secondary nameserver. If PORT is given, DNS
queries will be send to that port number.
If dns-server-ip is given multiple times, each of the given nameservers will
be queried.
If dns-server-ip and dns-server-ip-primary are not given, spamdyke
will read the list of nameservers from /etc/resolv.conf.
dns-server-ip is not valid within configuration directories.
See DNS Queries for details. |
|
dns-server-ip-primary |
IPADDRESS[:PORT] |
Use IPADDRESS as a primary nameserver. If PORT is given, DNS
queries will be send to that port number.
If dns-server-ip-primary is given multiple times, each of the given nameservers will
be queried before any secondary nameservers are queried.
If dns-server-ip and dns-server-ip-primary are not given, spamdyke
will read the list of nameservers from /etc/resolv.conf.
dns-server-ip-primary is not valid within configuration directories.
See DNS Queries for details. |
|
dns-timeout-secs |
SECS |
Do not take more than a total of SECS seconds to perform a DNS query, including all
of the retries.
If dns-timeout-secs is given multiple times, spamdyke will use the last value it finds.
If dns-timeout-secs is not given, spamdyke will use the value 30.
dns-timeout-secs is not valid within configuration directories.
See DNS Queries for details. |
|
dns-whitelist-entry |
DNSWHITELIST |
Check the remote server's IP address against the DNS whitelist DNSWHITELIST
(essentially a DNSRBL that contains whitelisted IPs). If it is found, all
filters are bypassed.
NOTE: Using more than a few DNS whitelists can cause serious performance problems.
If dns-whitelist-entry is given multiple times, spamdyke will check each given
DNSWHITELIST for the remote server's IP address.
If dns-whitelist-entry and dns-whitelist-file are not given,
spamdyke will not check any DNS whitelists.
See DNS Whitelists for details. |
|
dns-whitelist-file |
FILE |
Check the remote server's IP address against each of the DNS whitelists
(essentially a DNSRBL that contains whitelisted IPs) listed in FILE.
If it is found on any of the lists, all filters are bypassed.
NOTE: Using more than a few DNS whitelists can cause serious performance problems.
If dns-whitelist-file is given multiple times, spamdyke will check each
DNS whitelist listed in each given FILE for the remote server's IP address.
If dns-whitelist-entry and dns-whitelist-file are not given,
spamdyke will not check any DNS whitelists.
See DNS Whitelists for details. |
|
filter-level |
allow-all, normal, require-auth or reject-all |
allow-all: Allow all connections to bypass all filters, effectively whitelisting everything.
normal: Apply enabled filters according to the options on the command line and in the configuration file(s).
require-auth: Reject all connections that haven't authenticated using SMTP AUTH.
reject-all: Reject all connections, regardless of authentication or whitelists.
If filter-level is given multiple times, spamdyke will use the last value it finds.
If filter-level is not given, spamdyke will use a value of normal.
See Filter Levels for details. |
|
full-log-dir |
L |
DIR |
Log all SMTP data to files in DIR. This is handy for troubleshooting delivery
problems but it is not meant to be used long-term. This option imposes a performance
penalty!
If full-log-dir is given multiple times, spamdyke will use the last value it finds.
If full-log-dir is not given, spamdyke will not log all SMTP data.
full-log-dir is not valid within configuration directories.
See Logging All Data for details. |
graylist-dir |
g |
DIR |
Search for and create graylist files in directory structures within DIR.
This option has no effect unless graylist-level is given.
If graylist-dir is given multiple times, spamdyke will search each given directory in the given order for the
recipient's domain directory and stop when it finds the first one.
If graylist-dir is not given, spamdyke will not graylist connections.
See Graylisting / Greylisting for details. |
graylist-exception-ip-entry |
IPADDRESS |
Reverse the behavior of the graylist filter for remote servers whose IP
addresses match IPADDRESS. This option has no effect
unless graylist-level and graylist-dir are given.
If graylist-exception-ip-entry is given multiple times, spamdyke will match the remote server's IP address
against given IPADDRESS.
If graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry and
graylist-exception-rdns-file are not given, spamdyke will graylist each connection according to the
value of graylist-level.
See Graylisting / Greylisting for details. |
|
graylist-exception-ip-file |
FILE |
Reverse the behavior of the graylist filter for remote servers whose IP
addresses match entries in FILE. This option provides better
performance than graylist-exception-ip-entry for more than a few
entries. This option has no effect
unless graylist-level and graylist-dir are given.
If graylist-exception-ip-file is given multiple times, spamdyke will match the remote server's IP address
against each entry in each given FILE.
If graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry and
graylist-exception-rdns-file are not given, spamdyke will graylist each connection according to the
value of graylist-level.
See Graylisting / Greylisting for details. |
|
graylist-exception-rdns-dir |
DIR |
Reverse the behavior of the graylist filter for remote servers whose rDNS names
match files in DIR. This option provides much better performance
than graylist-exception-rdns-file for large numbers of entries.
This option has no effect
unless graylist-level and graylist-dir are given.
If graylist-exception-rdns-dir is given multiple times, spamdyke will
search each DIR for files that match the remote server's rDNS name.
If graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry and
graylist-exception-rdns-file are not given, spamdyke will graylist each connection according to the
value of graylist-level.
See Graylisting / Greylisting for details. |
|
graylist-exception-rdns-entry |
RDNSNAME |
Reverse the behavior of the graylist filter for remote servers whose rDNS names
match RDNSNAME. This option has no effect
unless graylist-level and graylist-dir are given.
If graylist-exception-rdns-entry is given multiple times, spamdyke will
match the remote server's rDNS name against each given RDNSNAME.
If graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry and
graylist-exception-rdns-file are not given, spamdyke will graylist each connection according to the
value of graylist-level.
See Graylisting / Greylisting for details. |
|
graylist-exception-rdns-file |
FILE |
Reverse the behavior of the graylist filter for remote servers whose rDNS names
match entries in FILE. This option provides better performance
than graylist-exception-rdns-entry for more than a few entries.
This option has no effect
unless graylist-level and graylist-dir are given.
If graylist-exception-rdns-file is given multiple times, spamdyke will
match the remote server's rDNS name against each entry in each given FILE.
If graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry and
graylist-exception-rdns-file are not given, spamdyke will graylist each connection according to the
value of graylist-level.
See Graylisting / Greylisting for details. |
|
graylist-level |
none,
always,
always-create-dir,
only or
only-create-dir |
none: Do not graylist any connections.
always: Graylist all connections that have an existing recipient domain directory,
except those that match one of the options
graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry or
graylist-exception-rdns-file.
If local-domains-entry or local-domains-file is not given,
this value has no effect.
always-create-dir: Graylist all connections
except those that match one of the options
graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry or
graylist-exception-rdns-file.
If the recipient's domain directory does not exist, create it.
If local-domains-entry or local-domains-file is not given,
this value has no effect.
only: Do not graylist any connections unless the recipient's domain directory exists and
the connection matches one of the options
graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry or
graylist-exception-rdns-file.
If local-domains-entry or local-domains-file is not given,
this value has no effect.
only-create-dir: Do not graylist any connections unless
it matches one of the options
graylist-exception-ip-entry,
graylist-exception-ip-file,
graylist-exception-rdns-dir,
graylist-exception-rdns-entry or
graylist-exception-rdns-file.
If the recipient's domain directory does not exist, create it.
If local-domains-entry or local-domains-file is not given,
this value has no effect.
If graylist-level is given multiple times, spamdyke will use the last value it finds.
If graylist-level is not given, spamdyke will use a value of none.
See Graylisting / Greylisting for details. |
|
graylist-max-secs |
M |
SECS |
Invalidate graylist entries after they are SECS seconds old.
A value of 0 prevents graylist entries from ever expiring.
Requires graylist-dir and graylist-level.
If graylist-max-secs is given multiple times, spamdyke will use the last value it finds.
If graylist-max-secs is not given, spamdyke will use a value of 0.
See Graylisting / Greylisting for details. |
graylist-min-secs |
m |
SECS |
Require a graylist entry to be present for SECS seconds before allowing
incoming mail.
A value of 0 will not require any delay; mail will be accepted in any connection
immediately after the initial graylisting.
Requires graylist-dir and graylist-level.
If graylist-min-secs is given multiple times, spamdyke will use the last value it finds.
If graylist-min-secs is not given, spamdyke will use a value of 0.
See Graylisting / Greylisting for details. |
greeting-delay-secs |
e |
SECS |
Delay sending the SMTP greeting banner SECS seconds to see if the remote server
begins sending data early. If it does, the connection is rejected.
If greeting-delay-secs is given multiple times, spamdyke will use the last value it finds.
If greeting-delay-secs is not given, spamdyke will use a value of 0.
See Earlytalkers for details. |
hostname |
NAME |
Use NAME as the fully qualified domain name of this host. This value is only
used to create an encrypted challenge during SMTP AUTH challenge-response protocols.
If hostname is given multiple times, spamdyke will use the last value it finds.
If hostname, hostname-command and hostname-file are
not given, spamdyke will search for the host's name in the environment or will use a default name.
hostname is not valid within configuration directories.
See SMTP AUTH for details. |
|
hostname-command |
COMMAND |
Read the fully qualified domain name of this host from the output of COMMAND.
Most often, this value is /bin/hostname -f. This value is only used to create
an encrypted challenge during SMTP AUTH challenge-response protocols. This option is
ignored if hostname or hostname-file are given.
If hostname-command is given multiple times, spamdyke will use the last value it finds.
If hostname, hostname-command and hostname-file are
not given, spamdyke will search for the host's name in the environment or will use a default name.
hostname-command is not valid within configuration directories.
See SMTP AUTH for details. |
|
hostname-file |
FILE |
Read the fully qualified domain name of this host from the first line of FILE.
This value is only used to create an encrypted challenge during SMTP AUTH
challenge-response protocols. This option is ignored if hostname is given.
If hostname-file is given multiple times, spamdyke will use the last value it finds.
If hostname, hostname-command and hostname-file are
not given, spamdyke will search for the host's name in the environment or will use a default name.
hostname-file is not valid within configuration directories.
See SMTP AUTH for details. |
|
idle-timeout-secs |
T |
SECS |
Forcibly disconnect after SECS seconds of inactivity. A value of 0 disables
this feature.
If idle-timeout-secs is given multiple times, spamdyke will use the last value it finds.
If idle-timeout-secs is not given, spamdyke will use a value of 0.
idle-timeout-secs is not valid within configuration directories.
See Timeouts for details. |
ip-blacklist-entry |
IPADDRESS |
Reject the connection if the remote server's IP address matches IPADDRESS.
If ip-blacklist-entry is given multiple times, spamdyke will check the remote server's IP address
against each given IPADDRESS.
If ip-blacklist-entry and ip-blacklist-file are not given, spamdyke will not attempt
to match the remote server's IP address against blacklist entries.
See Blacklists for details. |
|
ip-blacklist-file |
B |
FILE |
Reject the connection if the remote server's IP address matches an entry in
FILE. This option provides better performance than ip-blacklist-entry
for more than a few entries.
If ip-blacklist-file is given multiple times, spamdyke will check the remote server's IP address
against each entry in each given FILE.
If ip-blacklist-entry and ip-blacklist-file are not given, spamdyke will not attempt
to match the remote server's IP address against blacklist entries.
See Blacklists for details. |
ip-in-rdns-keyword-blacklist-entry |
KEYWORD |
Search the remote server's rDNS name for its IP address and KEYWORD.
If both are found, reject the connection.
If ip-in-rdns-keyword-blacklist-entry is given multiple times, spamdyke will
search the remote server's rDNS name for its IP address and each given KEYWORD.
If ip-in-rdns-keyword-blacklist-entry and ip-in-rdns-keyword-blacklist-file
are not given, spamdyke will not reject connections because the remote server's rDNS name contains
its IP address.
See Reverse DNS for details. |
|
ip-in-rdns-keyword-blacklist-file |
k |
FILE |
Search the remote server's rDNS name for its IP address and a keyword listed in FILE.
If both are found, reject the connection.
This option provides better performance than ip-in-rdns-keyword-whitelist-entry for
more than a few entries.
If ip-in-rdns-keyword-blacklist-file is given multiple times, spamdyke will
search the remote server's rDNS name for its IP address and each keyword listed in each given FILE.
If ip-in-rdns-keyword-blacklist-entry and ip-in-rdns-keyword-blacklist-file
are not given, spamdyke will not reject connections because the remote server's rDNS name contains
its IP address.
See Reverse DNS for details. |
ip-in-rdns-keyword-whitelist-entry |
KEYWORD |
Search the remote server's rDNS name for its IP address and KEYWORD.
If both are found, bypass all filters.
If ip-in-rdns-keyword-whitelist-entry is given multiple times, spamdyke will
search the remote server's rDNS name for its IP address and each given KEYWORD.
If ip-in-rdns-keyword-whitelist-entry and ip-in-rdns-keyword-whitelist-file
are not given, spamdyke will not bypass all filters because the remote server's rDNS name contains
its IP address.
See Reverse DNS for details. |
|
ip-in-rdns-keyword-whitelist-file |
FILE |
Search the remote server's rDNS name for its IP address and a keyword listed in FILE.
If both are found, bypass all filters.
This option provides better performance than ip-in-rdns-keyword-whitelist-entry for
more than a few entries.
If ip-in-rdns-keyword-whitelist-file is given multiple times, spamdyke will
search the remote server's rDNS name for its IP address and each keyword listed in each given FILE.
If ip-in-rdns-keyword-whitelist-entry and ip-in-rdns-keyword-whitelist-file
are not given, spamdyke will not bypass all filters because the remote server's rDNS name contains
its IP address.
See Reverse DNS for details. |
|
ip-whitelist-entry |
IPADDRESS |
If the remote server's IP address matches IPADDRESS, bypass all filters.
If ip-whitelist-entry is given multiple times, spamdyke will check the remote server's
IP address against each given IPADDRESS.
If ip-whitelist-entry and ip-whitelist-file are not given, spamdyke will
not attempt to match the remote server's IP address against whitelist entries.
See Whitelists for details. |
|
ip-whitelist-file |
W |
FILE |
If the remote server's IP address matches an entry in FILE, bypass all filters.
This option provides better performance than ip-whitelist-entry for more than a few entries.
If ip-whitelist-file is given multiple times, spamdyke will check the remote server's
IP address against each entry in each given FILE.
If ip-whitelist-entry and ip-whitelist-file are not given, spamdyke will
not attempt to match the remote server's IP address against whitelist entries.
See Whitelists for details. |
local-domains-entry |
DOMAIN |
Treat DOMAIN as a locally hosted domain (to determine if an email address is local
or remote).
If local-domains-entry is given multiple times, spamdyke will consider each given
DOMAIN to be local.
If local-domains-entry and local-domains-file are not given, spamdyke
will disable all filters that depend on distinguishing between local and remote addresses.
local-domains-entry is not valid within configuration directories.
See Rejecting Senders and Recipients for details. |
|
local-domains-file |
d |
FILE |
Search FILE for a list of locally hosted domains (to determine if an email address
is local or remote). Most often, FILE is /var/qmail/control/rcpthosts.
If local-domains-file is given multiple times, spamdyke will consider each entry
in each given FILE to be local.
If local-domains-entry and local-domains-file are not given, spamdyke
will disable all filters that depend on distinguishing between local and remote addresses.
local-domains-file is not valid within configuration directories.
See Rejecting Senders and Recipients for details. |
log-level |
l (lowercase ell) |
none,
error,
info,
verbose,
debug or
excessive
|
none: No logging.
error: Log errors only.
info: Everything from error plus connection messages.
verbose: Everything from info plus non-critical errors such as
network errors caused by the remote host, protocol errors, config-test status messages
and child process error messages.
debug: Everything from verbose plus high-level debugging messages
to show the processing path within spamdyke.
excessive: Everything from debug plus low-level debugging messages
to show data values and small status messages within spamdyke.
If log-level is given multiple times, spamdyke will use the last value it finds.
If log-level is not given, spamdyke will use a value of error.
log-level is not valid within configuration directories.
See Log Messages for details. |
log-target |
stderr or syslog |
stderr: Send log messages to standard error (stderr).
syslog: Send log messages to the system log file via syslogd.
If log-target is given multiple times, spamdyke will use a combination of the given values.
If log-target is not given, spamdyke will use a value of syslog.
log-target is not valid within configuration directories.
See Log Messages for details. |
|
max-recipients |
a |
NUM |
Allow a maximum of NUM recipients per connection.
If max-recipients is given multiple times, spamdyke will use the last value it finds.
If max-recipients is not given, spamdyke will not limit the number of recipients.
max-recipients is not valid within configuration directories.
See Limiting Numbers of Recipients for details. |
policy-url |
u |
URL |
Append URL to the rejection message to explain why the rejection occurred.
NOTE: most servers hide rejection messages from their users and most users
don't read bounce messages. Maximum 100 characters.
If policy-url is given multiple times, spamdyke will use the last value it finds.
If policy-url is not given, spamdyke will not append a URL to the rejection message.
See SMTP Error Codes for details. |
rdns-blacklist-dir |
b |
DIR |
Reject the connection if the remote server's rDNS name matches a file in DIR.
This option provides better performance than rdns-blacklist-file for
large numbers of entries.
If rdns-blacklist-dir is given multiple times, spamdyke will search each DIR
for files that match the remote server's rDNS name.
If rdns-blacklist-dir, rdns-blacklist-entry and rdns-blacklist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against blacklist entries.
See Blacklists for details. |
rdns-blacklist-entry |
DOMAIN |
Reject the connection if the remote server's rDNS name matches DOMAIN.
If rdns-blacklist-entry is given multiple times, spamdyke will attempt to match the remote
server's rDNS name against each given DOMAIN.
If rdns-blacklist-dir, rdns-blacklist-entry and rdns-blacklist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against blacklist entries.
See Blacklists for details. |
|
rdns-blacklist-file |
FILE |
Reject the connection if the remote server's rDNS name matches an entry in FILE.
This option provides better performance than rdns-blacklist-entry for more than a few entries.
If rdns-blacklist-file is given multiple times, spamdyke will search each given FILE
for entries that match the remote server's rDNS name.
If rdns-blacklist-dir, rdns-blacklist-entry and rdns-blacklist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against blacklist entries.
See Blacklists for details. |
|
rdns-whitelist-dir |
DIR |
If the remote server's rDNS name matches a file in DIR, bypass all filters.
This option provides better performance than rdns-whitelist-file for
large numbers of entries.
If rdns-whitelist-dir is given multiple times, spamdyke will search each DIR
for files that match the remote server's rDNS name.
If rdns-whitelist-dir, rdns-whitelist-entry and rdns-whitelist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against whitelist entries.
See Whitelists for details. |
|
rdns-whitelist-entry |
DOMAIN |
If the remote server's rDNS name matches DOMAIN, bypass all filters.
If rdns-whitelist-entry is given multiple times, spamdyke will attempt to match the remote
server's rDNS name against each given DOMAIN.
If rdns-whitelist-dir, rdns-whitelist-entry and rdns-whitelist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against whitelist entries.
See Whitelists for details. |
|
rdns-whitelist-file |
w |
FILE |
If the remote server's rDNS name matches an entry in FILE, bypass all filters.
This option provides better performance than rdns-whitelist-entry for more than a few entries.
If rdns-whitelist-file is given multiple times, spamdyke will search each given FILE
for entries that match the remote server's rDNS name.
If rdns-whitelist-dir, rdns-whitelist-entry and rdns-whitelist-file
are not given, spamdyke will not attempt to match the remote server's rDNS name against whitelist entries.
See Whitelists for details. |
recipient-blacklist-entry |
ADDRESS |
Reject any recipient addresses that match ADDRESS.
If recipient-blacklist-entry is given multiple times, spamdyke will attempt to match
each recipient address against each given ADDRESS.
If recipient-blacklist-entry and recipient-blacklist-file are not given,
spamdyke will not attempt to match recipient addresses against blacklist entries.
See Rejecting Senders and Recipients for details. |
|
recipient-blacklist-file |
S |
FILE |
Reject any recipient addresses that match entries in FILE.
This option provides better performance than recipient-blacklist-entry for
more than a few entries.
If recipient-blacklist-file is given multiple times, spamdyke will attempt to match
each recipient address against each entry in each given FILE.
If recipient-blacklist-entry and recipient-blacklist-file are not given,
spamdyke will not attempt to match recipient addresses against blacklist entries.
See Rejecting Senders and Recipients for details. |
recipient-whitelist-entry |
ADDRESS |
If the recipient's address matches ADDRESS, bypass all filters.
If recipient-whitelist-entry is given multiple times, spamdyke will attempt to match
each recipient address against each given ADDRESS.
If recipient-whitelist-entry and recipient-whitelist-file are not given,
spamdyke will not attempt to match recipient addresses against whitelist entries.
See Whitelisting Senders and Recipients for details. |
|
recipient-whitelist-file |
FILE |
If the recipient's email address matches an entry in FILE, bypass all filters.
This option provides better performance than recipient-whitelist-entry for
more than a few entries.
If recipient-whitelist-file is given multiple times, spamdyke will attempt to match
each recipient address against each entry in each given FILE.
If recipient-whitelist-entry and recipient-whitelist-file are not given,
spamdyke will not attempt to match recipient addresses against whitelist entries.
See Whitelisting Senders and Recipients for details. |
|
reject-empty-rdns |
r |
optional:0,
1,
false,
true,
no or
yes
|
Reject the connection if the remote server has no rDNS name.
If reject-empty-rdns is given multiple times, spamdyke will use the last value it finds.
If reject-empty-rdns is not given, spamdyke will not reject connections with missing rDNS names.
If reject-empty-rdns is given without an argument, spamdyke will use a value of yes.
See Reverse DNS for details. |
reject-ip-in-cc-rdns |
c |
optional:0,
1,
false,
true,
no or
yes
|
Search the remote server's rDNS name for its IP address and a two-letter
country code. If both are found, reject the connection.
If reject-ip-in-cc-rdns is given multiple times, spamdyke will use the last value it finds.
If reject-ip-in-cc-rdns is not given, spamdyke will not reject connections from servers
whose rDNS names contain their IP address and a country code.
If reject-ip-in-cc-rdns is given without an argument, spamdyke will use a value of yes.
See Reverse DNS for details. |
reject-missing-sender-mx |
optional:0,
1,
false,
true,
no or
yes
|
Check the domain name of the sender's email address for a mail exchanger (an MX
or an A record). If neither are found, reject the connection. Requires
local-domains-entry or local-domains-file.
If reject-missing-sender-mx is given multiple times, spamdyke will use the last value it finds.
If reject-missing-sender-mx is not given, spamdyke will not reject connections from senders
whose email domains do not have an MX record.
If reject-missing-sender-mx is given without an argument, spamdyke will use a value of yes.
See Rejecting Senders and Recipients for details. |
|
reject-unresolvable-rdns |
R |
optional:0,
1,
false,
true,
no or
yes
|
Reject the connection if the remote server's rDNS name does not resolve (search
for an A record).
If reject-unresolvable-rdns is given multiple times, spamdyke will use the last value it finds.
If reject-unresolvable-rdns is not given, spamdyke will not reject connections from remote
servers whose rDNS names do not resolve.
If reject-unresolvable-rdns is given without an argument, spamdyke will use a value of yes.
See Reverse DNS for details. |
rejection-text-access-denied |
TEXT |
Send TEXT to the client as an error message if
the remote server is not allowed to send mail due to an entry in the access file.
If rejection-text-access-denied is given multiple times, spamdyke will use the last value it finds.
If rejection-text-access-denied is not given, spamdyke will use the text
Refused. Access is denied.
See SMTP Error Codes for details. |
|
rejection-text-auth-failure |
TEXT |
Send TEXT to the client as an error message if
authentication fails for any reason.
If rejection-text-auth-failure is given multiple times, spamdyke will use the last value it finds.
If rejection-text-auth-failure is not given, spamdyke will use the text
Refused. Authentication failed.
rejection-text-auth-failure is not valid within configuration directories.
See SMTP Error Codes for details. |
|
rejection-text-auth-unknown |
TEXT |
Send TEXT to the client as an error message if
the remote server attempts to authenticate using an unsupported authentication method.
This should never happen.
If rejection-text-auth-unknown is given multiple times, spamdyke will use the last value it finds.
If rejection-text-auth-unknown is not given, spamdyke will use the text
Refused. Unknown authentication method.
rejection-text-auth-unknown is not valid within configuration directories.
See SMTP Error Codes for details. |
|
rejection-text-dns-blacklist |
TEXT |
Send TEXT to the client as an error message if
the remote server's IP address is found on a DNS blacklist (RBL).
The name of the matching RBL will be appended to TEXT.
Note: this flag has no effect if the RBL returns a text message; that text will be used instead.
If rejection-text-dns-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-dns-blacklist is not given, spamdyke will use the text
Refused. Your IP address is listed in the DNS RBL at
See SMTP Error Codes for details. |
|
rejection-text-earlytalker |
TEXT |
Send TEXT to the client as an error message if
the remote server sends data before the SMTP greeting banner is displayed.
If rejection-text-earlytalker is given multiple times, spamdyke will use the last value it finds.
If rejection-text-earlytalker is not given, spamdyke will use the text
Refused. You are not following the SMTP protocol.
See SMTP Error Codes for details. |
|
rejection-text-empty-rdns |
TEXT |
Send TEXT to the client as an error message if
the remote server has no rDNS name.
If rejection-text-empty-rdns is given multiple times, spamdyke will use the last value it finds.
If rejection-text-empty-rdns is not given, spamdyke will use the text
Refused. You have no reverse DNS entry.
See SMTP Error Codes for details. |
|
rejection-text-graylist |
TEXT |
Send TEXT to the client as an error message if
the recipient address has been graylisted.
If rejection-text-graylist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-graylist is not given, spamdyke will use the text
Your address has been graylisted. Try again later.
See SMTP Error Codes for details. |
|
rejection-text-ip-blacklist |
TEXT |
Send TEXT to the client as an error message if
the remote server's IP address is found in an IP blacklist file or matches an IP blacklist entry.
If rejection-text-ip-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-ip-blacklist is not given, spamdyke will use the text
Refused. Your IP address is blacklisted.
See SMTP Error Codes for details. |
|
rejection-text-ip-in-cc-rdns |
TEXT |
Send TEXT to the client as an error message if
the remote server's rDNS name contains the remote server's IP address and ends in a two-character country code.
If rejection-text-ip-in-cc-rdns is given multiple times, spamdyke will use the last value it finds.
If rejection-text-ip-in-cc-rdns is not given, spamdyke will use the text
Refused. Your reverse DNS entry contains your IP address and a country code.
See SMTP Error Codes for details. |
|
rejection-text-ip-in-rdns-keyword-blacklist |
TEXT |
Send TEXT to the client as an error message if
the remote server's rDNS name contains the remote server's IP address and a banned keyword.
If rejection-text-ip-in-rdns-keyword-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-ip-in-rdns-keyword-blacklist is not given, spamdyke will use the text
Refused. Your reverse DNS entry contains your IP address and a banned keyword.
See SMTP Error Codes for details. |
|
rejection-text-local-recipient |
TEXT |
Send TEXT to the client as an error message if
the specified recipient does not include a domain name.
If rejection-text-local-recipient is given multiple times, spamdyke will use the last value it finds.
If rejection-text-local-recipient is not given, spamdyke will use the text
Improper recipient address. Try supplying a domain name.
See SMTP Error Codes for details. |
|
rejection-text-max-recipients |
TEXT |
Send TEXT to the client as an error message if
the remote server gives too many recipient addresses.
If rejection-text-max-recipients is given multiple times, spamdyke will use the last value it finds.
If rejection-text-max-recipients is not given, spamdyke will use the text
Too many recipients. Try the remaining addresses again later.
See SMTP Error Codes for details. |
|
rejection-text-missing-sender-mx |
TEXT |
Send TEXT to the client as an error message if
the sender's domain name does not have a DNS entry for a mail exchanger (MX).
If rejection-text-missing-sender-mx is given multiple times, spamdyke will use the last value it finds.
If rejection-text-missing-sender-mx is not given, spamdyke will use the text
Refused. The domain of your sender address has no mail exchanger (MX).
See SMTP Error Codes for details. |
|
rejection-text-rdns-blacklist |
TEXT |
Send TEXT to the client as an error message if
the remote server's rDNS name is found in a blacklist file or matches a blacklist entry.
If rejection-text-rdns-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-rdns-blacklist is not given, spamdyke will use the text
Refused. Your domain name is blacklisted.
See SMTP Error Codes for details. |
|
rejection-text-recipient-blacklist |
TEXT |
Send TEXT to the client as an error message if
the recipient address is blacklisted.
If rejection-text-recipient-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-recipient-blacklist is not given, spamdyke will use the text
Refused. Mail is not being accepted at this address.
See SMTP Error Codes for details. |
|
rejection-text-reject-all |
TEXT |
Send TEXT to the client as an error message if
all mail is being rejected.
If rejection-text-reject-all is given multiple times, spamdyke will use the last value it finds.
If rejection-text-reject-all is not given, spamdyke will use the text
Refused. Mail is not being accepted.
See SMTP Error Codes for details. |
|
rejection-text-relaying-denied |
TEXT |
Send TEXT to the client as an error message if
the recipient is not local and the remote server is not allowed relay.
If rejection-text-relaying-denied is given multiple times, spamdyke will use the last value it finds.
If rejection-text-relaying-denied is not given, spamdyke will use the text
Refused. Sending to remote addresses (relaying) is not allowed.
See SMTP Error Codes for details. |
|
rejection-text-rhs-blacklist |
TEXT |
Send TEXT to the client as an error message if
the remote server's rDNS name or the sender's domain name are found on a right-hand side blacklist (RHSBL).
The name of the matching RHSBL will be appended to TEXT.
Note: this flag has no effect if the RHSBL returns a text message; that text will be used instead.
If rejection-text-rhs-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-rhs-blacklist is not given, spamdyke will use the text
Refused. Your domain name is listed in the RHSBL at
See SMTP Error Codes for details. |
|
rejection-text-sender-blacklist |
TEXT |
Send TEXT to the client as an error message if
the sender's email address is blacklisted.
If rejection-text-sender-blacklist is given multiple times, spamdyke will use the last value it finds.
If rejection-text-sender-blacklist is not given, spamdyke will use the text
Refused. Your sender address has been blacklisted.
See SMTP Error Codes for details. |
|
rejection-text-smtp-auth-required |
TEXT |
Send TEXT to the client as an error message if
authentication is required to send email and the remote server has not authenticated.
If rejection-text-smtp-auth-required is given multiple times, spamdyke will use the last value it finds.
If rejection-text-smtp-auth-required is not given, spamdyke will use the text
Refused. Authentication is required to send mail.
See SMTP Error Codes for details. |
|
rejection-text-timeout |
TEXT |
Send TEXT to the client as an error message if
the connection times out.
If rejection-text-text-timeout is given multiple times, spamdyke will use the last value it finds.
If rejection-text-text-timeout is not given, spamdyke will use the text
Timeout. Talk faster next time.
rejection-text-timeout is not valid within configuration directories.
See SMTP Error Codes for details. |
|
rejection-text-tls-failure |
TEXT |
Send TEXT to the client as an error message if
a SSL/TLS session cannot be started with the remote server.
If rejection-text-text-tls-failure is given multiple times, spamdyke will use the last value it finds.
If rejection-text-text-tls-failure is not given, spamdyke will use the text
Failed to negotiate TLS connection.
rejection-text-tls-failure is not valid within configuration directories.
See SMTP Error Codes for details. |
|
rejection-text-unresolvable-rdns |
TEXT |
Send TEXT to the client as an error message if
the remote server's rDNS name does not resolve.
If rejection-text-unresolvable-rdns is given multiple times, spamdyke will use the last value it finds.
If rejection-text-unresolvable-rdns is not given, spamdyke will use the text
Refused. Your reverse DNS entry does not resolve.
See SMTP Error Codes for details. |
|
rejection-text-zero-recipients |
TEXT |
Send TEXT to the client as an error message if
none of the recipients given by the remote server are accepted.
If rejection-text-zero-recipients is given multiple times, spamdyke will use the last value it finds.
If rejection-text-zero-recipients is not given, spamdyke will use the text
Refused. You must specify at least one valid recipient.
rejection-text-zero-recipients is not valid within configuration directories.
See SMTP Error Codes for details. |
|
relay-level |
block-all,
no-check,
normal or
allow-all
|
block-all: Block all relaying attempts, even if the sender has authenticated or the access file or an environment variable should allow relaying.
Messages to local recipients will still be accepted.
Requires local-domains-entry or local-domains-file and access-file.
no-check: Do not prevent relaying; allow qmail (or another filter) to prevent relaying as appropriate.
normal: Prevent relaying unless the sender authenticates, the access file allows relaying or an environment variable allows relaying.
Requires local-domains-entry or local-domains-file and access-file.
allow-all: Allow relaying from all senders. Note: This creates an open relay and is not recommended.
If relay-level is given multiple times, spamdyke will use the last value it finds.
If relay-level is not given, spamdyke will use a value of normal.
relay-level is not valid within configuration directories.
See Relaying for details. |
|
rhs-blacklist-entry |
X |
RHSBL |
Check the remote server's rDNS name and the sender email address' domain name
against the right hand-side blackhole list RHSBL. If it is found, the connection
is rejected.
NOTE: Using more than a few RHS blacklists can cause serious performance problems.
If rhs-blacklist-entry is given multiple times, spamdyke will check each given RHSBL for the remote server's rDNS name and the sender's email address domain name.
If rhs-blacklist-entry and rhs-blacklist-file are not given, spamdyke will not check any blackhole lists
for the remote server's rDNS name and the sender's email address domain name.
See DNS RHSBLs for details. |
rhs-blacklist-file |
FILE |
Check the remote server's domain name and the sender email address' domain name
against each of the right hand-side blackhole lists listed in FILE.
If it is found on any of the lists, the connection is rejected.
NOTE: Using more than a few RHS blacklists can cause serious performance problems.
If rhs-blacklist-file is given multiple times, spamdyke will check each blackhole list listed in each given FILE for the remote server's
rDNS name and the sender's email address domain name.
If rhs-blacklist-file and rhs-blacklist-file are not given, spamdyke will not check any blackhole lists
for the remote server's rDNS name and the sender's email address domain name.
See DNS RHSBLs for details. |
|
rhs-whitelist-entry |
RHSWHITELIST |
Check the remote server's domain name and the sender email address' domain name
against the right hand-side whitelist RHSWHITELIST (essentially an RHSBL that
contains whitelisted domains). If it is found, all filters are bypassed.
NOTE: Using more than a few RHS whitelists can cause serious performance problems.
If rhs-whitelist-entry is given multiple times, spamdyke will check each given RHSWHITELIST for the remote server's rDNS name and the sender's email address domain name.
If rhs-whitelist-entry and rhs-whitelist-file are not given, spamdyke will not check any whitelists
for the remote server's rDNS name and the sender's email address domain name.
See DNS Whitelists for details. |
|
rhs-whitelist-file |
FILE |
Check the remote server's domain name and the sender email address' domain name
against each of the right hand-side whitelists (essentially an RHSBL that
contains whitelisted domains) listed in FILE. If it is found on any of the lists, all filters are bypassed.
NOTE: Using more than a few RHS whitelists can cause serious performance problems.
If rhs-whitelist-file is given multiple times, spamdyke will check each whitelist listed in each given FILE for the remote server's
rDNS name and the sender's email address domain name.
If rhs-whitelist-file and rhs-whitelist-file are not given, spamdyke will not check any whitelist
for the remote server's rDNS name and the sender's email address domain name.
See DNS Whitelists for details. |
|
run-as-user |
USER[:GROUP] |
As soon as possible, change the running user identity to the user with the username or ID USER.
If GROUP is provided, also change the group identity to the system
group with the name GROUP or ID GROUP.
This feature requires spamdyke to be started as a user with the ability to switch identities (typically the superuser).
If run-as-user is given multiple times, spamdyke will use the last value it finds.
If run-as-user is not given, spamdyke will not attempt to switch user identities.
run-as-user is not valid within configuration directories.
See Permissions for details. |
|
sender-blacklist-entry |
ADDRESS |
Reject the connection if the sender's email address matches ADDRESS.
If sender-blacklist-entry is given multiple times, spamdyke will reject the connection if the sender's email address matches any of the given ADDRESS values.
If sender-blacklist-entry and sender-blacklist-file are not given, spamdyke will not blacklist any sender email addresses.
See Rejecting Senders and Recipients for details. |
|
sender-blacklist-file |
s |
FILE |
Reject the connection if the sender's email address matches an entry in FILE.
This option provides better performance than sender-blacklist-entry for more than a few entries.
If sender-blacklist-file is given multiple times, spamdyke will reject the connection if the sender's email address matches any of the entries in each given FILE.
If sender-blacklist-entry and sender-blacklist-file are not given, spamdyke will not blacklist any sender email addresses.
See Rejecting Senders and Recipients for details. |
sender-whitelist-entry |
ADDRESS |
If the sender's email address matches ADDRESS, bypass all filters.
If sender-whitelist-entry is given multiple times, spamdyke will compare the sender's email address to each given ADDRESS.
If sender-whitelist-entry and sender-whitelist-file are not given, spamdyke will not whitelist any sender email addresses.
See Whitelisting Senders and Recipients for details. |
|
sender-whitelist-file |
FILE |
If the sender's email address matches an entry in FILE, bypass all filters.
This option provides better performance than sender-whitelist-entry for more than a few entries.
If sender-whitelist-file is given multiple times, spamdyke will compare the sender's email address to each entry in each given FILE.
If sender-whitelist-entry and sender-whitelist-file are not given, spamdyke will not whitelist any sender email addresses.
See Whitelisting Senders and Recipients for details. |
|
smtp-auth-command |
COMMAND |
Perform SMTP AUTH verification using COMMAND.
If the authentication is valid, all filters will be
bypassed. This option may have no effect, depending on the value of smtp-auth-level.
If smtp-auth-command is given multiple times, spamdyke will authenticate using each given COMMAND until one of them indicates success.
If smtp-auth-command is not given, spamdyke will not process authentication. Depending on the value of smtp-auth-level, authentication may still be possible.
smtp-auth-command is not valid within configuration directories.
See SMTP AUTH for details. |
|
smtp-auth-level |
none,
observe,
ondemand,
ondemand-encrypted,
always or
always-encrypted
|
none: Do not offer or allow authentication, even if qmail has been patched to provide it.
observe: Observe authentication only (and trust qmail's responses), do not offer it. This value has no effect if qmail has not been patched to offer authentication.
ondemand: If qmail offers authentication, observe any authentication attempts and trust qmail's responses. If qmail does not offer authentication, spamdyke will
offer cleartext authentication, then process it using the value of smtp-auth-command.
ondemand-encrypted: If qmail offers authentication, observe any authentication attempts and trust qmail's responses. If qmail does not offer authentication, spamdyke will
offer cleartext and encrypted authentication, then process it using the value of smtp-auth-command.
always: Always offer cleartext authentication, then process it using the value of smtp-auth-command. If qmail attempts to offer authentication, spamdyke will
hide qmail's offer and prevent the authentication data from reaching qmail.
always-encrypted: Always offer cleartext and encrypted authentication, then process it using the value of smtp-auth-command.
If qmail attempts to offer authentication, spamdyke will hide qmail's offer and prevent the authentication data from reaching qmail.
If smtp-auth-level is given multiple times, spamdyke will use the last value it finds.
If smtp-auth-level is not given, spamdyke will use a value of observe.
smtp-auth-level is not valid within configuration directories.
See SMTP AUTH for details. |
|
tls-certificate-file |
FILE |
Decrypt SSL/TLS traffic using the SSL certificate in FILE. The certificate must be in PEM format.
If FILE does not also contain the private key, tls-privatekey-file must be used.
This option has no effect unless tls-level is also given.
If tls-certificate-file is given multiple times, spamdyke will use the last value it finds.
If tls-certificate-file is not given, spamdyke will not decrypt SSL/TLS traffic. The encrypted traffic will be passed through to qmail.
tls-certificate-file is not valid within configuration directories.
See TLS for details. |
|
tls-level |
none,
smtp or
smtps
|
none: Do not offer or allow SSL/TLS, even if qmail supports it.
smtp: If tls-certificate-file is given, offer TLS during the SMTP conversation and decrypt the traffic. If tls-certificate-file is not given,
allow qmail to offer TLS (if it has been patched to provide TLS) and pass the encrypted traffic to qmail.
smtps: Initiate a SSL session at the beginning of the connection, before SMTP begins.
If tls-level is given multiple times, spamdyke will use the last value it finds.
If tls-level is not given, spamdyke will use a value of smtp.
tls-level is not valid within configuration directories.
See TLS for details. |
|
tls-privatekey-file |
FILE |
Read the private key for the SSL certificate (given with tls-certificate-file) from
FILE. FILE must be in PEM format. Requires tls-certificate-file.
If tls-privatekey-file is given multiple times, spamdyke will use the last value it finds.
If tls-privatekey-file is not given, spamdyke will look for the private key in the certificate file.
tls-privatekey-file is not valid within configuration directories.
See TLS for details. |
|
tls-privatekey-password |
PASSWORD |
Use PASSWORD to decrypt the SSL private key (given with tls-certificate-file or
tls-privatekey-file), if necessary. NOTE: this option reveals the password in
the process list! Requires tls-certificate-file and/or tls-privatekey-file.
If tls-privatekey-password is given multiple times, spamdyke will use the last value it finds.
If tls-privatekey-password and tls-privatekey-password-file are not given, spamdyke will attempt to load the private key without a password.
tls-privatekey-password is not valid within configuration directories.
See TLS for details. |
|
tls-privatekey-password-file |
FILE |
Read the password to decrypt the private key for the SSL certificate (from
tls-certificate-file) from the first line of FILE, if necessary. Requires
tls-certificate-file and/or tls-password-file.
If tls-privatekey-password-file is given multiple times, spamdyke will use the last value it finds.
If tls-privatekey-password and tls-privatekey-password-file are not given, spamdyke will attempt to load the private key without a password.
tls-privatekey-password-file is not valid within configuration directories.
See TLS for details. |
Configuration Files
config-file
The configuration file format is very simple. Each line should use the following format:
OPTION=VALUE
OPTION is the long version of a spamdyke option. See Usage for details.
VALUE is the parameter for the option. Note: While multi-word
values must be quoted on the command line, quotes are not allowed in configuration files.
spamdyke reads the entire VALUE after the equals sign,
even if it contains spaces, so no quoting is needed.
Blank lines and lines beginning with # are ignored.
For example:
smtp-auth-command=/home/vpopmail/bin/vchkpw /bin/truerdns-blacklist-dir=/home/vpopmail/blacklist_rdns.dgraylist-dir=/home/vpopmail/graylist.dcheck-dnsrbl=dul.dnsbl.sorbs.netcheck-dnsrbl=zombie.dnsbl.sorbs.netmax-recipients=5
VALUE to activate them.
yes, true and 1 are also acceptable.
The options can also be
explicitly deactivated with no, false or 0 (or the option can be simply
removed). For example, the following lines all have the same effect:
reject-empty-rdnsreject-empty-rdns=yesreject-empty-rdns=truereject-empty-rdns=1
config-file to
spamdyke:
spamdyke --config-file /etc/spamdyke.conf ...
config-file option can also be used within configuration files to include
other configuration files if desired. When configuration files are in use, options may
still be provided on the command line as well, in any combination. If contradictory
options are found, the option in the configuration file will be used. For example, if the
following command line were used:
spamdyke --reject-empty-rdns --config-file /etc/spamdyke.conf ...
/etc/spamdyke.conf contained the following line:
reject-empty-rdns=false
reject-empty-rdns filter because the
configuration file is read after the command line has been scanned. This can be confusing,
so the best practice is to avoid specifying the same option in multiple places without
good reason.
Some options can be given multiple times and spamdyke will use all of the values it finds. For example, if the following lines are given, spamdyke will search each of the files for a match to the sender's email address:
sender-blacklist-file=/home/vpopmail/sender_blacklist.txtsender-blacklist-file=/home/vpopmail/more_sender_blacklist.txtsender-blacklist-file=/home/vpopmail/additional_sender_blacklist.txt
OPTION=!VALUE
sender-blacklist-file=!/home/vpopmail/sender_blacklist.txt
To clear all values from a list, three exclamation points should be given instead of a value:
OPTION=!!!
sender-blacklist-file option
will be cleared and spamdyke will behave as though sender-blacklist-file had never
appeared:
sender-blacklist-file=!!!
Note: spamdyke processes configuration directives in the order they are read. If an option is cleared and later set again, the option will retain the last value. For example, if the following five lines appear in this order:
sender-blacklist-file=/home/vpopmail/sender_blacklist.txtsender-blacklist-file=/home/vpopmail/more_sender_blacklist.txtsender-blacklist-file=/home/vpopmail/additional_sender_blacklist.txtsender-blacklist-file=!!!sender-blacklist-file=/home/vpopmail/last_blacklist.txt
/home/vpopmail/last_blacklist.txt.
NOTE: It may seem that scanning a configuration file instead of the command line would impose a performance penalty each time spamdyke is started. However, the reverse seems to be true. Some rudimentary testing has indicated the configuration files are actually faster. This is likely due to inefficiencies in GNU's getopt_long() function.
Configuration Directories
config-dir
config-dir-search
Configuration directories allow spamdyke's behavior to be altered based on the remote server's IP address, the remote server's rDNS name, the sender's email address, the recipient's email address or any combination of those things. This can be very useful when, for example, graylisting should be deactivated for a specific sender. IP addresses can be whitelisted for specific recipients without whitelisting them for everyone. The possibilities are nearly endless.
NOTE: Configuration directories are confusing and complicated. Unless you really need the advanced configuration scenarios they offer, don't use them.
Configuration directories are given with the config-dir option. The option's value should be the path
to the directory that contains the subdirectories explained below. If config-dir is given multiple
times, spamdyke will search each given directory structure and load all of the matching files before it continues
processing the SMTP connection.
In essence, a configuration directory is a special directory structure that contains configuration files. spamdyke determines which files to load based on the names of the directories and the details of the SMTP connection. Not all options are valid within configuration directories, but in all other respects the files follow the same rules as global configuration files. See Usage for details of which options are valid within configuration directories. See Configuration Files for details of the configuration file format.
When spamdyke loads a file from a configuration directory, it will do so because the names of the directories and the name of the file match all or part of the information from the SMTP connection. The last piece of information should always be used as the name of the file, not the name of a directory.
To create a file using the IP address of the remote server, first create a directory structure that
begins with _ip_ and uses the first three octets of the address as directory names. For example,
if the IP address is 11.22.33.44, the directory structure should look like this:
.../_ip_/11/22/33
.../_ip_/11/22/33/44
To create a file using the rDNS name of the remote server, first create a directory structure that begins with
_rdns_ and contains directories named using the rDNS name with its words reversed. For example,
if the rDNS name is mail.internal.headquarters.example.com, the directory structure should look like this:
.../_rdns_/com/example/headquarters/internal
.../_rdns_/com/example/headquarters/internal/mail
To create a file using the sender's email address, first create a directory structure that begins with
_sender_ and contains directories using the domain portion of the sender's email address with its words reversed
and ending in _at_. For example, if the sender's email address is mom@home.example.com,
the directory structure should look like this:
.../_sender_/com/example/home/_at_
.../_sender_/com/example/home/_at_/mom
To create a file using the recipient's email address, first create a directory structure that begins with
_recipient_ and contains directories using the domain portion of the recipient's email address with its words reversed
and ending in _at_. For example, if the recipient's email address is kid@school.example.com,
the directory structure should look like this:
.../_recipient_/com/example/school/_at_
.../_recipient_/com/example/school/_at_/kid
_at_.
If the sender's or recipient's username are omitted, the _at_ directory must be omitted as well. For example,
if the IP address is 11.22.33.44, the rDNS name is mail.internal.headquarters.example.com,
the sender's email address is mom@home.example.com and the recipient's email address is kid@school.example.com,
spamdyke will look for configuration files with the following paths:
.../_ip_/11/22/33/44.../_ip_/11/22/33.../_ip_/11/22.../_ip_/11.../_rdns_/com/example/headquarters/internal/mail.../_rdns_/com/example/headquarters/internal.../_rdns_/com/example/headquarters.../_rdns_/com/example.../_rdns_/com.../_recipient_/com/example/school/_at_/kid.../_recipient_/com/example/school.../_recipient_/com/example.../_recipient_/com.../_sender_/com/example/home/_at_/mom.../_sender_/com/example/home.../_sender_/com/example.../_sender_/com
Configuration directories can be nested to create more specific targets. For example, if the IP address of the remote
server is 11.22.33.44 and the sender's email address is mom@home.example.com, spamdyke will
read a configuration file if its path is either of the following:
.../_ip_/11/22/33/44/_sender_/com/example/home/_at_/mom.../_sender_/com/example/home/_at_/mom/_ip_/11/22/33/44
.../_ip_/11/22/33/44/_sender_/com/example/home.../_ip_/11/22/33/44/_sender_/com/example.../_ip_/11/22/33/44/_sender_/com.../_ip_/11/22/33/_sender_/com/example/home/_at_/mom.../_ip_/11/22/_sender_/com/example/home/_at_/mom.../_ip_/11/_sender_/com/example/home/_at_/mom.../_sender_/com/example/home/_ip_/11/22/33.../_sender_/com/example/_ip_/11/22.../_sender_/com/_ip_/11
If all of that isn't confusing enough, spamdyke will only read one file from a
_ip_, _rdns_, _sender_ or _recipient_
directory, even if more
matches are possible. For example, if the remote IP address is 11.22.33.44, the sender's email address is
mom@home.example.com and the recipient's email address is kid@school.example.com and two
files exist with the following paths:
.../_ip_/11/22/33/44/_sender_/com/example/home/_at_/mom.../_ip_/11/22/33/44/_recipient_/com/example/school/_at_/kid
_ip_ directory cannot be matched more than once.
This behavior can be changed with the config-dir-search option.
config-dir-search can be given multiple times; the values will be added together to create a composite value.
The possible values are:
first: Match each_ip_,_rdns_,_sender_or_recipientdirectory only once. NOTE: Thefirstvalue erases the composite value created from the other possible values, essentially "resetting" theconfig-dir-searchoption.all-ip: Match each_ip_directory as many times as possible.all-rdns: Match each_rdns_directory as many times as possible.all-sender: Match each_sender_directory as many times as possible.all-recipient: Match each_recipient_directory as many times as possible.
To aid with troubleshooting, spamdyke will log the paths it searches if the log-level option is debug
or higher.
Configuration Tests
config-test
config-test-smtpauth-username
config-test-smtpauth-password
spamdyke has the ability to scan its configuration and look for common configuration mistakes. It checks file paths, permissions, graylist folders, directory structures, SMTP AUTH commands, TLS certificates and more. This feature was inspired by Apache's ability to check its configuration file for syntax errors.
To use the testing feature:
- Find and copy the entire spamdyke command line from your "supervise" script or xinetd configuration file, including the qmail command(s).
- At a command prompt, login as root and paste the spamdyke command without running it.
- Add the option
--config-testamong the spamdyke options (before the qmail command). If appropriate, add the options--config-test-smtpauth-usernameand--config-test-smtpauth-password. - Run the command and carefully read the results. More output can be obtained by increasing the logging level (no test output goes to syslog).
run-as-user option is not given in your spamdyke configuration, it should be
used on the command line to give spamdyke the name (or user ID) of the account used to run the mail
server. The group name (or ID) can also be given. Before spamdyke
runs its configuration tests, it will change process ownership to run as the given user. That way,
the filesystem permissions tests will be accurate.
If spamdyke is configured to provide SMTP AUTH (using the smtp-auth-level
and smtp-auth-command options), the --config-test-smtpauth-username
and --config-test-smtpauth-password options should be used to provide a valid
username and password for authentication. spamdyke will run the SMTP AUTH command to test
its capabilities and make recommendations.
IMPORTANT! DANGER! WARNING! DO NOT EVER PUT THE --config-test OPTION IN
THE SPAMDYKE COMMAND LINE THAT IS RUN FOR INCOMING CONNECTIONS! YOUR MAIL SERVER WILL
IMMEDIATELY STOP RECEIVING MAIL AND REMOTE USERS WILL SEE ONLY THE DIAGNOSTIC OUTPUT!
If you make this mistake and ask for help, expect to be publicly mocked.
You have been warned.
Log Messages
log-level
log-target
The log-target option controls where spamdyke logs its
messages. By default, log-target is set to syslog,
which sends log messages to the system syslog facility.
When log-target is set to stderr, messages are sent to standard error (stderr) instead.
For most qmail installations, this will cause spamdyke's messages to be logged
by the "multilog" program, along with qmail-smtpd's output.
If log-target is given multiple times with different values,
spamdyke will sends its output to each given target.
When spamdyke logs to syslog, it uses the LOG_MAIL
facility, which typically puts the messages in /var/log/maillog.
(Note: Plesk reconfigures syslog to put the messages in /usr/local/psa/var/log/maillog.)
Regardless of how the messages are logged, errors are always
be preceded by the text ERROR: and are fairly self-explanatory. Whenever
possible, spamdyke will recover from an error and continue processing mail.
Philosophically, it's better to continue receiving spam than to block all mail.
The log-level option controls how much logging takes place. The following
values are supported:
none: No logging at all, even if errors occur. This is not recommended.error: Critical errors only, including authentication failures. This is the default whenlog-levelis not given.info: Everything fromerrorplus logging of messages (sender, recipient, IP address, rDNS name and authenticated username). This is the value used whenlog-levelis given with no value.verbose: Everything frominfoplus non-critical errors such as network errors caused by the remote host, protocol errors,config-teststatus messages and child process error messages. At this level, spamdyke will also print messages to show which filter blocked the connection (if applicable) and some details about the filter's settings. These messages will be prefixed withFILTER:.debug: Everything fromverboseplus high-level debugging messages, intended to show the processing path within spamdyke. This level is handy for troubleshooting but it can be rather noisy. Extra messages generated by this level will be prefixed withDEBUG():and will show the file and line number within the spamdyke source code where the message was produced. NOTE: If theconfigurescript is run with the--without-debug-outputoption, spamdyke will accept thedebugvalue but it will not print any more output than ifverbosewere used.excessive: Everything fromdebugplus lots of internal status messages. This value should only be used for development. Extra messages generated by this level will be prefixed withEXCESSIVE():and will show the file and line number within the spamdyke source code where the message was produced. NOTE: Unless theconfigurescript is run with the--with-excessive-outputoption, spamdyke will not produce any more output forexcessivethan ifdebugwere used.
log-level must be used with care on the command line. Specifically,
when --log-level is used, the value must be separated by an equals sign and no
spaces. When -l is used, the value must not be separated by spaces or anything else.
For example, the following two command lines will work:
/usr/local/bin/spamdyke --log-level=verbose .../usr/local/bin/spamdyke -lverbose ...
log-level option may also be given with no value at all, which is the same as specifiying info.
The following two command lines are also valid:
/usr/local/bin/spamdyke --log-level .../usr/local/bin/spamdyke -l ...
Each message log entry (produced when the value of log-level is info or higher) takes the following form
(error messages and debugging statements are text preceeded by ERROR:, FILTER:, DEBUG: or EXCESSIVE:):
CODE from: SENDER to: RECIPIENT origin_ip: IPADDRESS origin_rdns: RDNSNAME auth: USERNAME [ reason: REALCODE ]
The possible values of CODE are listed below:
CODE |
Description | Related Option(s) |
ALLOWED |
The message passed all filters. qmail may still bounce the message for other reasons, however. | |
ALLOWED_AUTHENTICATED |
The remote client successfully authenticated using SMTP AUTH with spamdyke. If qmail is patched to provide SMTP AUTH, this code will never be used. | |
ALLOWED_TLS |
The remote client successfully started a TLS session with spamdyke. | |
DENIED_ACCESS_DENIED |
The connection was blocked because the remote server's
IP address or rDNS name was found in the access file with a deny command. |
access-file
|
DENIED_AUTH_REQUIRED |
The message was blocked because the remote server has not authenticated, which is required. |
filter-level
|
DENIED_BLACKLIST_IP |
The connection was blocked because the remote server's IP address is blacklisted. |
ip-blacklist-entryip-blacklist-file
|
DENIED_BLACKLIST_NAME |
The connection was blocked because the remote server's rDNS name is blacklisted. |
rdns-blacklist-entryrdns-blacklist-filerdns-blacklist-dir
|
DENIED_EARLYTALKER |
The connection was blocked because the remote server began sending data before the SMTP greeting was issued. |
greeting-delay-secs
|
DENIED_GRAYLISTED |
The recipient was blocked because the sender/recipient combination was graylisted. The SMTP connection continues after this error occurs. |
graylist-level
|
DENIED_IP_IN_CC_RDNS |
The connection was blocked because the remote server's IP address was found in the remote server's rDNS name and the remote server's rDNS name ends in a country code. |
reject-ip-in-cc-rdns
|
DENIED_IP_IN_RDNS |
The connection was blocked because the remote server's IP address was found in the remote server's rDNS name and a prohibited keyword was found in the remote server's rDNS name. |
ip-in-rdns-keyword-blacklist-entryip-in-rdns-keyword-blacklist-file
|
DENIED_OTHER |
The connection was rejected by qmail (or another downstream filter), not spamdyke. | |
DENIED_RBL_MATCH |
The connection was blocked because the remote server's IP address was found on a DNS RBL. |
dns-blacklist-entrydns-blacklist-file |
DENIED_RDNS_MISSING |
The connection was blocked because the remote server has no rDNS name at all. |
reject-empty-rdns
|
DENIED_RDNS_RESOLVE |
The connection was blocked because the remote server's rDNS name does not resolve. |
reject-unresolvable-rdns
|
DENIED_RHSBL_MATCH |
The connection was blocked because the remote server's reverse DNS name was found on a right hand-side DNS blacklist (RHSBL) OR because the sender's domain name was found on a right hand-side DNS blacklist (RHSBL). |
rhs-blacklist-entryrhs-blacklist-file |
DENIED_RECIPIENT_BLACKLISTED |
The recipient was blocked because the recipient email address is blacklisted. |
recipient-blacklist-entryrecipient-blacklist-file
|
DENIED_REJECT_ALL |
The message was blocked because all mail is being rejected. |
filter-level
|
DENIED_RELAYING |
The recipient was blocked because the recipient's domain is not locally hosted and the remote server is not allowed to relay. |
relay-level
|
DENIED_SENDER_BLACKLISTED |
The connection was blocked because the sender's email address is blacklisted. |
sender-blacklist-entrysender-blacklist-file
|
DENIED_SENDER_NO_MX |
The connection was blocked because the sender's domain has no mail exchanger, making the sender address invalid. |
reject-missing-sender-mx
|
DENIED_TOO_MANY_RECIPIENTS |
The recipient was blocked because the limit was reached for this connection. The SMTP connection continues after this error occurs. |
max-recipients
|
DENIED_UNQUALIFIED_RECIPIENT |
The recipient was blocked because the address had no domain name. The SMTP connection continues after this error occurs. | |
DENIED_ZERO_RECIPIENTS |
The message was blocked because no valid recipients have been specified. | |
FAILED_AUTH |
The remote server attempted to authenticate but the given username and/or password were incorrect. |
smtp-auth-level
|
FAILED_TLS |
The remote client attempted to start a TLS session but SSL negotiation failed. | |
TIMEOUT |
The connection timed out, either in total time or idle time.
If the connection was already being blocked for another reason, the code for that
error is given as REALCODE. |
connection-timeout-secsidle-timeout-secs
|
TLS_ENCRYPTED |
The remote server has started a TLS session with qmail. spamdyke does not have access to the server's certificate file, so it cannot decrypt the traffic to log any information about senders or recipients. |
tls-level
|
UNKNOWN_AUTH |
The remote server requested an authentication method spamdyke doesn't support. This shouldn't happen. |
SENDER is the sender email address, if known, or (unknown) otherwise.
NOTE: According to RFC 821, it is legal to deliver messages with no sender
address. Most bounce messages are delivered this way.
RECIPIENT is the recipient email address, if known, or (unknown) otherwise.
If CODE is ALLOWED, the recipient email address will be known.
IPADDRESS is the IP address of the remote server. This value is always known.
RDNSNAME is the rDNS name of the remote server, if known, or (unknown)
otherwise.
USERNAME is the username given during authentication, if authentication was
successful, or (unknown) otherwise.
REALCODE is only present if CODE is TIMEOUT and the connection was going to be
blocked anyway. For example, if a remote server has no rDNS entry and the
connection is going to be blocked but the connection times out instead, CODE
will be TIMEOUT and REALCODE will be DENIED_RDNS_MISSING.
SMTP Error Codes
policy-url
rejection-text-access-denied
rejection-text-auth-failure
rejection-text-auth-unknown
rejection-text-dns-blacklist
rejection-text-earlytalker
rejection-text-empty-rdns
rejection-text-graylist
rejection-text-ip-blacklist
rejection-text-ip-in-cc-rdns
rejection-text-ip-in-rdns-keyword-blacklist
rejection-text-local-recipient
rejection-text-max-recipients
rejection-text-missing-sender-mx
rejection-text-rdns-blacklist
rejection-text-recipient-blacklist
rejection-text-reject-all
rejection-text-relaying-denied
rejection-text-rhs-blacklist
rejection-text-sender-blacklist
rejection-text-smtp-auth-required
rejection-text-timeout
rejection-text-tls-failure
rejection-text-unresolvable-rdns
rejection-text-zero-recipients
When spamdyke blocks a connection and returns an error code to a remote server, the text it sends is different from what appears in the logs (above). It is more user-friendly, just in case a human ever reads it (some, but not all, mail servers display the rejection message in bounce messages).
The messages can be changed using the options that are listed in the third column of the table below.
The messages that correspond to the syslog codes are:
| syslog code | SMTP message | Option to change message |
DENIED_ACCESS_DENIED |
Refused. Access is denied.
|
rejection-text-access-denied |
DENIED_AUTH_REQUIRED |
Refused. Authentication is required to send mail.
|
rejection-text-smtp-auth-required |
DENIED_BLACKLIST_IP |
Refused. Your IP address is blacklisted.
|
rejection-text-ip-blacklist |
DENIED_BLACKLIST_NAME |
Refused. Your domain name is blacklisted.
|
rejection-text-rdns-blacklist |
DENIED_EARLYTALKER |
Refused. You are not following the SMTP protocol.
|
rejection-text-earlytalker |
DENIED_GRAYLISTED |
Your address has been graylisted. Try again later.
|
rejection-text-graylist |
DENIED_IP_IN_CC_RDNS |
Refused. Your reverse DNS entry contains your IP address and a country code.
|
rejection-text-ip-in-cc-rdns |
DENIED_IP_IN_RDNS |
Refused. Your reverse DNS entry contains your IP address and a banned keyword.
|
rejection-text-ip-in-rdns-keyword-blacklist |
DENIED_OTHER |
The text returned by qmail (or the downstream filter that generated the rejection). | |
DENIED_RBL_MATCH |
The text returned by the DNS RBL (if any) orRefused. Your IP address is listed in the RBL at name.
|
rejection-text-dns-blacklist |
DENIED_RDNS_MISSING |
Refused. You have no reverse DNS entry.
|
rejection-text-empty-rdns |
DENIED_RDNS_RESOLVE |
Refused. Your reverse DNS entry does not resolve.
|
rejection-text-unresolvable-rdns |
DENIED_RHSBL_MATCH |
The text returned by the RHSBL (if any) orRefused. Your domain name is listed in the RHSBL at name.
|
rejection-text-rhs-blacklist |
DENIED_RECIPIENT_BLACKLISTED |
Refused. Mail is not being accepted at this address.
|
rejection-text-recipient-blacklist |
DENIED_REJECT_ALL |
Refused. Mail is not being accepted.
|
rejection-text-reject-all |
DENIED_RELAYING |
Refused. Sending to remote addresses (relaying) is not allowed.
|
rejection-text-relaying-denied |
DENIED_SENDER_BLACKLISTED |
Refused. Your sender address has been blacklisted.
|
rejection-text-sender-blacklist |
DENIED_SENDER_NO_MX |
Refused. The domain of your sender address has no mail exchanger (MX).
|
rejection-text-missing-sender-mx |
DENIED_TOO_MANY_RECIPIENTS |
Too many recipients. Try the remaining addresses again later.
|
rejection-text-max-recipients |
DENIED_UNQUALIFIED_RECIPIENT |
Improper recipient address. Try supplying a domain name.
|
rejection-text-local-recipient |
DENIED_ZERO_RECIPIENTS |
Refused. You must specify at least one valid recipient.
|
rejection-text-zero-recipients |
FAILURE_AUTH |
Refused. Authentication failed.
|
rejection-text-auth-failure |
FAILURE_TLS |
Failed to negotiate TLS connection.
|
rejection-text-tls-failure |
TIMEOUT |
Timeout. Talk faster next time.
|
rejection-text-timeout |
UNKNOWN_AUTH |
Refused. Unknown authentication method.
|
rejection-text-auth-unknown |
If a policy location URL is given with the policy-url option, it
will be appended to the end of the message, just in case a human ever reads it.
This option should always be used. When a legitimate remote user is incorrectly
blocked, the URL should provide your contact information so the error can be
corrected.
spamdyke will always append the syslog code to the policy URL so a web browser
will jump to an anchor within the HTML document. Most of the time, the code is
prefixed with a # character. For example, if the policy URL is:
http://www.example.com/policy.html
http://www.example.com/policy.html#DENIED_RDNS_MISSING
=), spamdyke
will assume the URL is for a dynamic page and will not add the #
character. For example, if the policy URL is:
http://www.example.com/policy?code=
http://www.example.com/policy?code=DENIED_RDNS_MISSING
Logging All Data
full-log-dir
spamdyke has the ability to log all SMTP data to files. This is very helpful when debugging but (depending on the mail server traffic levels) it can generate a huge number of files.
This