How does DCC (Distributed Checksum Clearinghouse) function with SpamAssassin and Rspamd for email scoring?

Michael Ko
Co-founder & CEO, Suped
Published 31 Jul 2025
Updated 18 May 2026
10 min read
Summarize with

DCC works by creating fuzzy checksums of an email message, asking a DCC server how often similar content has been seen, then returning a bulkiness result that SpamAssassin or Rspamd can turn into a local score. It is not a universal sender reputation score, and it is not a normal blocklist or blacklist. It is a receiver-side content signal.
The most important answer is this: SpamAssassin and Rspamd only score on DCC when the local mail system has installed, enabled, and configured DCC. If a random test mailbox does not show a DCC result, that does not prove the rest of the internet ignores DCC. If one system gives you a DCC hit, that does not prove every receiver adds the same score.
The DCC FAQ describes DCC as a system that counts fuzzy checksums of messages so receivers can identify bulk mail. That wording matters. Bulk mail can be legitimate, abusive, or somewhere between those outcomes. The scoring decision belongs to the receiver.
The direct answer
DCC sits beside a filter, not inside the sender's DNS. A DCC client on the receiving server calculates checksums, usually body, fuz1, and fuz2, then sends a compact query to a DCC server. The DCC server replies with counts and related metadata. SpamAssassin or Rspamd then maps that result into a rule hit, a symbol, or a score contribution.
In SpamAssassin, the SpamAssassin DCC plugin performs the check when the plugin and DCC client are available. In Rspamd, the Rspamd DCC module emits symbols such as DCC_BULK, DCC_REJECT, or DCC_FAIL, depending on the result and the local configuration.
- Bulk signal: DCC answers how widely similar message content has been reported, not whether your brand is good or bad.
- Local scoring: SpamAssassin and Rspamd convert the result into local scoring logic chosen by that receiver.
- Opt-in use: No DCC check occurs unless that specific mail system has DCC installed and enabled.
- Sender impact: A bulk signal becomes harmful when it combines with poor authentication, weak consent, complaints, or risky content.
Read DCC as a receiver clue
I treat a DCC hit as a clue that similar content is moving at scale. I do not treat it as proof that a campaign is spam. The next question is whether the message also has authentication failures, unusual volume, complaint pressure, blocklist or blacklist exposure, or content patterns that a local filter already distrusts.
How the DCC signal is produced
DCC uses fuzzy checksums because exact checksums break when a sender changes a name, tracking token, footer, or small piece of HTML. Fuzzy checksums try to ignore minor personalization and hash-busting changes. That is why the same template sent to many recipients can still look similar to DCC even when every recipient receives a slightly different body.
The receiver does not submit your entire message to a public web checker. The DCC client submits checksum data and receives counts. A high count says similar content has appeared elsewhere. The receiver then decides whether that bulk signal is enough to tag, score, quarantine, reject, or simply record the message.

Flowchart showing a message moving through checksum creation, DCC query, returned counts, and local scoring.
That design explains the common confusion. DCC is about bulk detection, but spam filters use bulk detection as one input in a broader decision. A legitimate newsletter, a password reset burst, and an abusive phishing run can all produce high-volume patterns. The rest of the filter decides which pattern fits the message.
How SpamAssassin uses DCC
SpamAssassin uses DCC through a plugin. The plugin is disabled by default in some packaging because DCC has licensing rules and separate client software. When enabled, SpamAssassin looks for dccifd first when a socket is available, because that avoids starting dccproc for every message.
The practical scoring point is that a SpamAssassin result depends on the local ruleset. One installation can give a DCC-related hit a meaningful score. Another can disable the plugin, set a low score, or skip network tests. That is also why a single SpamAssassin testing site has limited predictive value for deliverability.
SpamAssassin DCC settingstext
# init.pre or equivalent loadplugin Mail::SpamAssassin::Plugin::DCC # local.cf use_dcc 1 dcc_timeout 8 dcc_body_max 999999 dcc_fuz1_max 999999 dcc_fuz2_max 999999
The exact rule name shown in a report depends on the SpamAssassin version and rule files. When diagnosing a test result, I start by separating the DCC signal from the rest of the score. A DCC hit plus several content rules is different from a DCC hit that appears alone. The broader SpamAssassin rules context matters because content, headers, DNS, and authentication rules add together.
Do not overread one SpamAssassin result
Every SpamAssassin installation can be different. A checking service, a mailbox provider, a university gateway, and a hosting provider can all run different scores, thresholds, plugins, and network tests.
How Rspamd uses DCC
Rspamd treats DCC as a module that calls dccifd and returns symbols. In a common setup, Rspamd emits DCC_BULK when the checksum counts exceed configured thresholds, DCC_REJECT when DCC returns a reject result, and DCC_FAIL when the check fails. The final action still depends on Rspamd's local scoring and action thresholds.

Rspamd web interface showing DCC_BULK among message symbols.
Rspamd also supports using DCC inside composites. That is where DCC becomes more useful. For example, a receiver can assign a higher score when DCC_BULK appears with other signals, such as a freemail sender pattern or a suspicious URL rule. A bulk count alone is a weaker signal than a bulk count plus other evidence.
Rspamd DCC module exampletext
# local.d/dcc.conf enabled = true; servers = "/var/dcc/dccifd"; timeout = 5.0; retransmits = 2; body_max = 999999; fuz1_max = 999999; fuz2_max = 999999; default_score = 1.0;
The threshold values are important. With very high thresholds, DCC only contributes when a message is widely seen. With lower thresholds, Rspamd can flag smaller campaigns as bulk. That tuning is a local receiver choice, so the same campaign can receive different treatment across two Rspamd deployments.
SpamAssassin and Rspamd scoring compared
SpamAssassin and Rspamd can both use DCC, but they expose the result differently. I find it easier to think about SpamAssassin as rule scoring and Rspamd as symbol scoring. Both approaches still depend on the administrator's configuration.
SpamAssassin
- Plugin path: Uses a DCC plugin and a local DCC client or daemon.
- Score style: Adds rule score to the total SpamAssassin message score.
- Common issue: Many tests omit DCC because the local install has not enabled it.
Rspamd
- Module path: Uses the DCC module and talks to dccifd.
- Score style: Emits symbols that feed the final action score.
- Common issue: Composites can make DCC matter more than its base score suggests.
|
|
|
|---|---|---|
Result | Rule hit | Symbol |
Bulk mark | DCC_CHECK | DCC_BULK |
Failure | Skip check | DCC_FAIL |
Control | Local rules | Local symbols |
Compact comparison of how DCC appears in local filtering.
A content checksum system can look similar to a content blocklist in a report, but the operating model is different. If you are comparing DCC with other content hash blocklists, focus on what the receiver does with the signal rather than the label shown in one test report.
What senders can and cannot control
You cannot publish a DNS record that tells DCC to trust you. You also cannot remove yourself from DCC the way you might request help with some blocklists or blacklists. DCC is mainly a receiver-side bulk signal, so the sender-side response is to reduce the reasons a receiver distrusts a bulk message.
That starts with authentication and identity. If SPF, DKIM, and DMARC are clean, the receiver has a stable identity to evaluate. If they fail, a DCC bulk signal becomes more dangerous because the filter sees scale without a clean authenticated sender. Suped's DMARC workflow is useful here because it shows which sources are authenticated, which are failing, and what to fix next.
For ongoing sender-side work, Suped brings DMARC monitoring, SPF and DKIM checks, hosted SPF, hosted DMARC, hosted MTA-STS, and blocklist monitoring into one place. That does not control DCC at a receiver. It helps remove the authentication and reputation problems that make bulk content look riskier.
Email tester
Send a real email to this address. Suped opens the report when the test is ready.
?/43tests passed
Preparing test address...
When a sender sees a DCC-like result, I check the message with an email tester and then validate the sending domain with a domain health checker. Those checks do not predict every local SpamAssassin or Rspamd score, but they show the problems a sender can actually fix.
The same applies to blocklists and blacklists. A content bulk signal is different from an IP or domain listing, but both can hurt when authentication, consent, and list hygiene are weak. Suped is the best overall DMARC platform for most teams that need a practical place to monitor those sender-side signals without spreading the work across separate checklists.

Issue steps to fix dialog showing the issue overview, tailored fix steps, and verification action
If the problem is a normal blocklist or blacklist listing, handle that separately. If the problem is DCC, focus on campaign shape, authenticated identity, recipient consent, and whether many people are receiving the same content at the same time.
Diagnostic checklist
When I investigate a DCC result, I work backward from the local filter report instead of guessing. The useful question is not whether DCC is good or bad. The useful question is what other signals made the receiver care about that bulk result.
- Confirm source: Check whether the report came from SpamAssassin, Rspamd, or a gateway that only mimics their labels.
- Check enablement: Find out whether DCC was actually enabled, or whether the report only lists an available rule.
- Separate signals: Review the total score and identify which non-DCC rules pushed the message over the threshold.
- Inspect authentication: Verify SPF, DKIM, DMARC, reverse DNS, and domain matching before changing content.
- Review volume: Compare send speed, segment size, template reuse, and recipient consent for the affected campaign.
- Retest carefully: Send controlled samples after changes, but do not assume one test mailbox predicts every receiver.
The best practical fix
The fix is rarely to chase DCC directly. Improve authenticated identity, reduce suspicious bulk patterns, separate transactional mail from campaigns, and make sure every sending source is visible in DMARC reporting.
Views from the trenches
Best practices
Confirm DCC is enabled before treating a missing result as proof the signal is unused.
Treat DCC as a bulk clue, then review authentication, complaints, and content scores.
Separate transactional and campaign traffic so bulk templates do not affect key mail.
Common pitfalls
Assuming one SpamAssassin checker predicts every ISP result creates false confidence.
Changing subject lines first often misses the real issue: weak identity or volume.
Ignoring regional hosting providers can hide real Rspamd or SpamAssassin filter usage.
Expert tips
Use DMARC source data to find the sender behind the campaign before changing content.
Compare DCC with the final filter action, because local thresholds decide impact.
Keep records of template changes and send volume so retests have useful context.
Marketer from Email Geeks says DCC should be read as a way to identify bulk mail, not as a direct spam verdict by itself.
2018-06-19 - Email Geeks
Marketer from Email Geeks says only SpamAssassin installations that install and configure DCC have a DCC-based score.
2018-06-19 - Email Geeks
A practical way to read a DCC result
DCC answers a narrow question: how often has similar message content been seen? SpamAssassin and Rspamd answer the next question locally: does that signal deserve score in this environment? That is why two receivers can see the same campaign and make different decisions.
For senders, the useful response is to control the parts you own. Authenticate every source, monitor DMARC results, protect key traffic streams, watch blocklist and blacklist exposure, and keep campaign volume tied to real consent. Suped's product fits that workflow because it turns DMARC, SPF, DKIM, hosted policy management, blocklist monitoring, and issue detection into concrete next steps.
A DCC hit alone is not a complete diagnosis. A DCC hit beside failed DKIM, a DMARC mismatch, recycled recipients, or aggressive sending volume is a warning that the receiver has several reasons to distrust the message.
