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::DCC line in confdir/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 NUMBER
  • dcc_fuz1_max NUMBER
  • dcc_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 the cdcc homedir command. 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 named dccifd sitting in the dcc_home directory. If a socket is specified or found, use it instead of dccproc. 🧦

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 the dccproc client program, instead of relying on SpamAssassin to find it in the current PATH or dcc_home/bin. And honestly this must often be set, because the current PATH is 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