D. J. Bernstein
Internet publication

The rbldns program

rbldns is an IP-address-listing DNS server. It accepts iterative DNS queries from hosts around the Internet asking about various IP addresses. It provides responses showing whether the addresses are on a locally configured list, such as RBL or DUL.


Normally rbldns is set up by the rbldns-conf program.

rbldns runs chrooted in the directory specified by the $ROOT environment variable, under the uid and gid specified by the $UID and $GID environment variables.

rbldns listens for incoming UDP packets addressed to port 53 of $IP. It does not listen for TCP queries.

rbldns handles domains of the form d.c.b.a.base where a.b.c.d is the IP address in question and base is given by the $BASE environment variable.

rbldns rejects inverse queries, non-Internet-class queries, truncated packets, packets that contain anything other than a single query, query types other than A, TXT, or *, and queries for domains outside $BASE. It looks up other queries inside data.cdb, a binary file created by rbldns-data.