DNSBL - DNS-basierte Blacklist8 min read4 sections

Mail Server Integration

Step-by-step guides for Postfix, Exim, Rspamd, and SpamAssassin - including recommended conservative, balanced, and aggressive configurations.

01

Recommended Policies

We recommend three configuration profiles depending on your risk tolerance:

PolicyDescriptionRejects onTags/Scores on
🟢 Conservative (Default)Minimal false positives. Only reject on strong evidence.127.0.0.3 (spam high), .4 (malware), .5 (phishing), .6 (botnet), .9 (manual)127.0.0.2 (spam low), .7, .8
🟡 BalancedGood trade-off between security and deliverability.127.0.0.3–.9 (all listed)127.0.0.2 (spam low)
🔴 AggressiveMaximum protection. May cause false positives.127.0.0.2–.9 (all codes)—

Our recommendation: Use Conservative. The 127.0.0.2 (spam low confidence) code should be used for scoring, not rejecting. This minimizes false positives while still protecting against confirmed threats.

02

Postfix

Conservative (Recommended)

# /etc/postfix/main.cf
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    # Reject only high-confidence spam, malware, phishing, botnet, manual block
    reject_rbl_client dnsbl.provider.tools=127.0.0.3,
    reject_rbl_client dnsbl.provider.tools=127.0.0.4,
    reject_rbl_client dnsbl.provider.tools=127.0.0.5,
    reject_rbl_client dnsbl.provider.tools=127.0.0.6,
    reject_rbl_client dnsbl.provider.tools=127.0.0.9,
    # Low-confidence spam: warn only (adds header)
    warn_if_reject reject_rbl_client dnsbl.provider.tools=127.0.0.2

Aggressive

# Reject ALL listed IPs (including low-confidence)
smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    reject_rbl_client dnsbl.provider.tools
03

Rspamd

Configuration

# /etc/rspamd/local.d/rbl.conf
rbls {
  providertools {
    symbol = "RBL_PROVIDERTOOLS";
    rbl = "dnsbl.provider.tools";
    ipv6 = true;
    returncodes {
      RBL_PROVIDERTOOLS_SPAM_LOW = "127.0.0.2";
      RBL_PROVIDERTOOLS_SPAM_HIGH = "127.0.0.3";
      RBL_PROVIDERTOOLS_MALWARE = "127.0.0.4";
      RBL_PROVIDERTOOLS_PHISH = "127.0.0.5";
      RBL_PROVIDERTOOLS_BOTNET = "127.0.0.6";
      RBL_PROVIDERTOOLS_EXPLOIT = "127.0.0.7";
      RBL_PROVIDERTOOLS_ABUSE = "127.0.0.8";
      RBL_PROVIDERTOOLS_MANUAL = "127.0.0.9";
    }
  }
}

# /etc/rspamd/local.d/rbl_group.conf - Conservative scoring
symbols {
  "RBL_PROVIDERTOOLS_SPAM_LOW"  { weight = 3.0; description = "Spam (low confidence) on provider.tools"; }
  "RBL_PROVIDERTOOLS_SPAM_HIGH" { weight = 7.0; description = "Spam (high confidence) on provider.tools"; }
  "RBL_PROVIDERTOOLS_MALWARE"   { weight = 10.0; description = "Malware on provider.tools"; }
  "RBL_PROVIDERTOOLS_PHISH"     { weight = 10.0; description = "Phishing on provider.tools"; }
  "RBL_PROVIDERTOOLS_BOTNET"    { weight = 10.0; description = "Botnet on provider.tools"; }
  "RBL_PROVIDERTOOLS_EXPLOIT"   { weight = 5.0; description = "Exploit/Scanner"; }
  "RBL_PROVIDERTOOLS_ABUSE"     { weight = 4.0; description = "Abuse/Policy"; }
  "RBL_PROVIDERTOOLS_MANUAL"    { weight = 10.0; description = "Manually blocked"; }
}

Note: With Rspamd, keep the weight for SPAM_LOW at 3.0 (below reject threshold). This means low-confidence spam adds to the score but won't cause rejection on its own.

04

SpamAssassin

# /etc/spamassassin/local.cf

# Base rule
header   RCVD_IN_PROVIDERTOOLS eval:check_rbl('providertools', 'dnsbl.provider.tools.')
describe RCVD_IN_PROVIDERTOOLS Listed on provider.tools DNSBL

# Category-specific sub-rules
header   RCVD_IN_PROVIDERTOOLS_SPAM_LOW eval:check_rbl_sub('providertools', '127.0.0.2')
describe RCVD_IN_PROVIDERTOOLS_SPAM_LOW Spam (low confidence) on provider.tools
score    RCVD_IN_PROVIDERTOOLS_SPAM_LOW 2.5

header   RCVD_IN_PROVIDERTOOLS_SPAM_HIGH eval:check_rbl_sub('providertools', '127.0.0.3')
describe RCVD_IN_PROVIDERTOOLS_SPAM_HIGH Spam (high confidence) on provider.tools
score    RCVD_IN_PROVIDERTOOLS_SPAM_HIGH 6.0

header   RCVD_IN_PROVIDERTOOLS_MALWARE eval:check_rbl_sub('providertools', '127.0.0.4')
describe RCVD_IN_PROVIDERTOOLS_MALWARE Malware on provider.tools
score    RCVD_IN_PROVIDERTOOLS_MALWARE 10.0

header   RCVD_IN_PROVIDERTOOLS_PHISH eval:check_rbl_sub('providertools', '127.0.0.5')
describe RCVD_IN_PROVIDERTOOLS_PHISH Phishing on provider.tools
score    RCVD_IN_PROVIDERTOOLS_PHISH 10.0

header   RCVD_IN_PROVIDERTOOLS_BOTNET eval:check_rbl_sub('providertools', '127.0.0.6')
describe RCVD_IN_PROVIDERTOOLS_BOTNET Botnet on provider.tools
score    RCVD_IN_PROVIDERTOOLS_BOTNET 10.0