You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 13 Next »

How it works

The DNSBL services are itself reachable through a rest API, both through GET and POST-queries. The calls can be made in bulks, which means if you have a host that delivers blacklists to us, you may want to post more than one address at the time. The recommended method for doing this is by a POST, but in less larger amounts of hosts GET is also accepted. There are currently no release of the DNSBL since it's in a state of test (beta/unfinished), but you may however test the services. Some calls are made available freely (at least at the moment), but they will probably get stricted up later on due to the risk of flooding of the services.

Which DNSBL datastore is active?

By resolving and you may get a clue which version of the blacklists that is currently running.


host -tTXT
host -tTXT


nslookup <enter>
set type=txt <enter>

The version entries will give you a small clue, where the data comes from. The version "" indicates that data is returned from the deprecated data store from 2006. If you can not find any TXT-entry, a normal dns lookup would return the version values as, etc. The current values is for the deprecated version and for version 5.



TorneLIB contains a smaller independent library to keep track of listed hosts and may be included in projects that requires the use of the DNSBL/FraudBL. This project is about to replace a lot of things that has been "alive" (barely?) since 2006.

You can download the standalone library here: (Note: This library extension follows our develop trunk, so it may be incomplete from time to time).

How to use this library extension

Resolving in it's simplest form
require_once(__DIR__ . "/autoload.php");
$dnsbl = new \TorneLIB\TorneLIB_DNSBL();
if ($dnsbl->isListed($testaddr)) {
    /* Actions to take against this host */

Other methods

ipAddressThe example above
ipAddress (v4/v6)
getListedTypes (default=false) 

An array with strings defined in TORNEVALL_DNSBL_BITS.
The constants are listed below.


When getListedTypes are set to true, this function is returning data from TORNEVALL_DNSBL_BITS::getBitArray() 

bitValue (integer) 
blZoneIf no zone are given the default value from the class TORNEVALL_DNSBL_ZONES is set to
As described above, which DNSBL version is active, this function returns the version id of the current release. 


The TORNEVALL_DNSBL_BITS-class also have another method callable from public called isBit().
Let's say that you have the bitmask value 80, which represents the two bits BIT_ABUSE (64) and BIT_SPAM (16), you can ask this function if they are present.

$bitValue = 80;
$BitClass = new \TorneLIB\TORNEVALL_DNSBL_BITS();
if ($BitClass->isBit(self::BIT_SPAM, $bitValue)) { /* Do something here */ }
if ($BitClass->isBit(self::BIT_ABUSE, $bitValue)) { /* Do something here */ }



What is happening in this component?

Summary T Created Updated Status Resolution



The former name of the DNSBL at sourceforge is named rbl-extension and can be found here. The plans is to also upgrade that "platform".

The public development repo for this project can be reach through svn:// and the current (and also last version of branch 1.0) can be reached at svn:// The trunk will soon get patched with TorneLIB-DNSBL.



Historical summary

In the beginning there was spamming. The spamming took it's place on a swedish forum, hosted by a swedish TV-channel, inspired by an international project called "Big Brother". The year was actually 2006 and trolls were highly active on this forum. In the same time, there was an irc-server that received a load of attacks by proxies.

At this moment, there was a project on the big internet called BOPM (Blitzed Open Proxy Monitor) that has special clients checking on connecting clients to that irc server. Tornevall Networks started to think of migrating a similar solution into web spaces. The problem, that made a huge difference between the IRC and WWW-protocol was the fact that on IRC, you made one connection and then one check against a DNS Blacklist. If it was blacklisted as an open proxy, it got k-lined, akilled in any other form: banned. This was not possible with HTTP-connections, since a check would take place each time a client connected to a website. The idea in this case, was to cache the resolving, into a local storage since DNS-servers otherwise could be overloaded with queries (depending on how DNS caching was made).

Somewhere in may 2006, this project started and the first extension released was actually the rbl-extension at sourceforge, together with an extension for the CMS tool e107 and vBulletin. After this year, 2006, no more suprises happened. Only maintenance jobs. Recently someone has realized that the old projects has became quite obsolete. Deprecation of the old project from 2006 was initiated somewhere between december 2015 and june 2016.

  • No labels