Mail::...in::DCC(3pm)
π NAME π
Mail::SpamAssassin::Plugin::DCC β bestie, this is the plugin that runs a DCC check on your messages. That's it, that's the whole job. π
(also hi, this is a User Contributed Perl Documentation page, so it lives in the 3pm manual section, iykyk π«Ά)
β¨ SYNOPSIS β¨
loadplugin Mail::SpamAssassin::Plugin::DCC
full DCC_CHECK eval:check_dcc()
full DCC_CHECK_50_79 eval:check_dcc_reputation_range('50','79')
okay so that's literally how you turn it on and wire up the rules. Copy, paste, slay. π
π DESCRIPTION π
So. DCC. It stands for Distributed Checksum Clearinghouse β which is a system of servers collecting and counting checksums of millions of mail messages. Like, millions. The counts from all that collecting are what SpamAssassin uses to detect and filter spam. No cap. π₯
Wanna read more about DCC itself? Go here: https://www.dcc-servers.net/dcc/
β οΈ okay this part is important, bestie. DCC is disabled by default in v310.pre, because using it requires software that is not distributed with SpamAssassin and that has license restrictions for certain commercial uses. Yeah. Read the DCC license at https://www.dcc-servers.net/dcc/LICENSE for the deets. π
So how do you actually turn it on? Two options, pick your fighter:
- Uncomment the
loadplugin Mail::SpamAssassin::Plugin::DCCline inconfdir/v310.pre - Or just add that line to your
local.pre
And you might also need to install a DCC package β like a package, port, rpm, or whatever equivalent thing your operating system distributor uses β or grab a tarball from the primary DCC source at https://www.dcc-servers.net/dcc/#download
Oh and also peek at https://www.dcc-servers.net/dcc/INSTALL.html while you're at it. π§
π TAGS π
These tags get added to the set, and they're available for use in reports, header fields, other plugins, etc. Very "go anywhere, do anything" of them honestly:
_DCCB_ DCC server ID in X-DCC-*-Metrics header field name
_DCCR_ X-DCC-*-Metrics header field body
_DCCREP_ DCC Reputation or percent bulk mail (0..100) from
commercial DCC software
π¦ USER SETTINGS π¦
use_dcc (0|1)β (default: 1) Whether to use DCC, if it is available. Simple as that. Are we doing this or not? πuse_dcc_rep (0|1)β (default: 1) Whether to use the commercial DCC Reputation feature, if it is available. Little note tho: reputation data is free for all starting from DCC 2.x version, where it's automatically used. So it kinda does its own thing atp. β¨dcc_body_max NUMBERdcc_fuz1_max NUMBERdcc_fuz2_max NUMBER
These three set how often a message's body / fuz1 / fuz2 checksum must have been reported to the DCC server before SpamAssassin will consider the DCC check hit. And heads up: 999999 is DCC's MANY count. π
The default is 999999 for all these options. All three. Same number. Periodt.
dcc_rep_percent NUMBERβ Only the commercial DCC software provides DCC Reputations (but starting from DCC 2.x version it is available for all). A DCC Reputation is the percentage of bulk mail received from the last untrusted relay in the path taken by a mail message as measured by all commercial DCC installations. See http://www.rhyolite.com/dcc/reputations.html
π¨ LISTEN. You "must" whitelist your trusted relays or MX servers with MX or MXDCC lines in /var/dcc/whiteclnt as described in the main DCC man page β otherwise you're gonna see your own MX servers as sources of bulk mail and that is not the vibe. π
See https://www.dcc-servers.net/dcc/dcc-tree/dcc.html#White-and-Blacklists
The default is 90.
π ADMINISTRATOR SETTINGS π
dcc_timeout nβ (default: 5) How many seconds you wait for DCC to complete, before scanning continues without the DCC results. It's giving "we're not waiting around forever, babe". β³
You can optionally suffix a numeric value with a time unit: s, m, h, d, w β meaning seconds (the default), minutes, hours, days, weeks. Obsessed with the flexibility ngl.
dcc_home STRINGβ This option tells SpamAssassin where to find the dcc homedir. If it's not specified, it tries to use the locally configured directory from thecdcc homedircommand. And if that command fails? Try/var/dcc. Bestie we are trying our best out here. πdcc_dccifd_path STRINGβ This tells SpamAssassin where to find the dccifd socket, instead of a local Unix socket nameddccifdsitting in thedcc_homedirectory. If a socket is specified or found, use it instead ofdccproc. π§¦
If specified, dcc_dccifd_path is the absolute path of a local Unix socket or an INET socket specified as [Host]:Port or Host:Port. Host can be an IPv4 or IPv6 address or a host name. Port is a TCP port number. And the brackets? Required for an IPv6 address. Don't skip the brackets, I'm begging. π
The default is undef.
dcc_path STRINGβ Where to find thedccprocclient program, instead of relying on SpamAssassin to find it in the currentPATHordcc_home/bin. And honestly this must often be set, because the currentPATHis cleared by taint mode in the Perl interpreter. Taint mode said "no PATH for you". π
If a dccifd socket is found in dcc_home or specified explicitly with dcc_dccifd_path, use the dccifd(8) interface instead of dccproc.
The default is undef.
dcc_options optionsβ Specify extra options to the dccproc(8) command. β οΈ For security reasons, only characters in the range[0-9A-Za-z ,._/-]are allowed. Keep it cute and keep it in-range, okay?
The default is undef.
dccifd_options optionsβ Specify extra options to send to the dccifd daemon with the ASCII protocol described on the dccifd(8) man page. β οΈ Same rule as above for security reasons: only characters in the range[0-9A-Za-z ,._/-]are allowed.
The default is undef.
dcc_learn_score nβ (default: undef) Report messages with total scores this much larger than the SpamAssassin spam threshold to DCC as spam. It's giving "yeah this one's bad, tell the whole server". π’
and that's the whole page, bestie!! go forth and filter spam!! π¦β¨π
This glorious lil doc came out of the User Contributed Perl Documentation collection, brought to you by perl v5.40.1, dated 2026-07-23. Take care of her, she's iconic. π
ππ
π¦ where this page comes from
- ubuntu stonking: spamassassin 4.0.2+svn1935691-1build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms