b1b8988d |
1 | |
2 | bulkquery - A program by Brent Bice - 02/2002 |
3 | |
4 | Bulkquery is a multi-threaded program that makes a large number of |
5 | DNS queries as fast as possible. It's tailored for making DNS queries for |
6 | specific IP addresses against specific DNS based RBLs. |
7 | |
8 | "Why bother?" |
9 | I've been asked this several times. While running squirrelmail on a server |
10 | with very little bandwidth and very high latency (a dial-up account - snicker) |
11 | I noticed that while my filters plugin was making gethostbyname() function |
12 | calls, my dial-up line was mostly idle. This was, apparently, because all |
13 | the DNS function calls were being made in series. Once a DNS query had been |
14 | sent, no others were sent until a response had been received or until a |
15 | certain timeout period had occurred. And some of the RBLs were quite a |
16 | bit faster than the others. This seemed pretty inefficient. "Why not make |
17 | more DNS queries while waiting for the replies," I thought. |
18 | |
19 | After several attempts to make a multi-threaded program to make the queries |
20 | using the standard DNS library calls, I realized why. The library functions |
21 | weren't thread-safe and most of the replies would be lost. Luckily, a |
22 | friend of a friend told me about the lwres API in Bind 9.x and told me that |
23 | IT was definitely thread-safe and very fast. |
24 | |
25 | Boy was SHE right! |
26 | |
27 | So, how much faster is it? It will depend on your bandwidth and the |
28 | latency of your connection. But for those of us trying to make do with less, |
29 | bulkquery is a LOT faster. On a dial-up connection, I can make queries |
30 | anywhere from 6 to 10 times faster! On my T1 at work, the queries are |
31 | usually between 2 and 7 times faster. The bottom line of all of this is |
32 | that even on my T1 at work, the filters plugin can query ALL of the RBLs |
33 | for all the new email in my INBOX in less than half the time it takes using |
34 | the PHP gethostbyname() function calls. |