diff xml/dnsbl.in @ 59:510a511ad554

Add resolver processes to allow better performance on busy machines
author carl
date Mon, 03 Jan 2005 18:35:50 -0800
parents 419e00901570
children 390ed250c5d2
line wrap: on
line diff
--- a/xml/dnsbl.in	Thu Oct 28 22:54:34 2004 -0700
+++ b/xml/dnsbl.in	Mon Jan 03 18:35:50 2005 -0800
@@ -2,7 +2,7 @@
 
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
-<title>DNSBL Sendmail milter - Version 3.7</title>
+<title>DNSBL Sendmail milter - Version 4.0</title>
 </head>
 
 <center>Introduction</center>
@@ -31,8 +31,7 @@
 startup, and whenever the config file (or any of the referenced include
 files) is changed.  The entire configuration file is case insensitive.
 
-<hr>
-<center>DCC Issues</center>
+<hr> <center>DCC Issues</center>
 <p>If you are also using the <a
 href="http://www.rhyolite.com/anti-spam/dcc/">DCC</a> milter, there are
 a few considerations.  You may need to whitelist senders from the DCC
@@ -69,8 +68,7 @@
 appropriately tagged and used only for the domains controlled by each of
 those clients.
 
-<hr>
-<center>Definitions</center>
+<hr> <center>Definitions</center>
 <p>DNSBL - a named DNS based blocking list is defined by a dns suffix
 (e.g. sbl-xbl.spamhaus.org) and a message string that is used to
 generate the "550 5.7.1" smtp error return code.  The names of these
@@ -121,8 +119,7 @@
 
 </ol>
 
-<hr>
-<center>Sendmail access vs. DNSBL</center>
+<hr> <center>Sendmail access vs. DNSBL</center>
 <p>With the standard sendmail.mc dnsbl FEATURE, the dnsbl checks may be
 suppressed by entries in the /etc/mail/access database.  For example,
 suppose you control a /18 of address space, and have allocated some /24s
@@ -152,13 +149,13 @@
 these directions</a> helpful for setting up smtp-auth if you are on RH
 Linux.
 
-<hr> <center>Installation and configuration</center> <p>Usage:  Note
-that this has ONLY been tested on Linux, specifically RedHat Linux.  In
-particular, this milter makes no attempt to understand IPv6.  Your
-mileage will vary.  You will need at a minimum a C++ compiler with a
-minimally thread safe STL implementation.  The distribution includes a
-test.cpp program.  If it fails this milter won't work.  If it passes,
-this milter might work.
+<hr> <center>Installation and configuration</center>
+<p>Usage:  Note that this has ONLY been tested on Linux, specifically
+RedHat Linux.  In particular, this milter makes no attempt to understand
+IPv6.  Your mileage will vary.  You will need at a minimum a C++
+compiler with a minimally thread safe STL implementation.  The
+distribution includes a test.cpp program.  If it fails this milter won't
+work.  If it passes, this milter might work.
 
 Fetch <a href="http://www.five-ten-sg.com/util/dnsbl.tar.gz">dnsbl.tar.gz</a>
 and
@@ -188,10 +185,31 @@
 /usr/sbin/dnsbl -c
 </pre>
 
-<pre>
+<hr> <center>Performance issues</center>
+
+<p>Consider a high volume high performance machine running sendmail.
+Each sendmail process can do its own dns resolution.  Typically, such
+dns resolver libraries are not thread safe, and so must be protected by
+some sort of mutex in a threaded environment.  When we add a milter to
+sendmail, we now have a collection of sendmail processes, and a
+collection of milter threads.
 
+<p>We will be doing a lot of dns lookups per mail message, and at least
+some of those will take many tens of seconds.  If all this dns work is
+serialized inside the milter, we have an upper limit of about 25K mail
+messages per day.  That is clearly not sufficient for many sites.
 
+<p>Since we want to do parallel dns resolution across those milter
+threads, we add another collection of dns resolver processes.  Each
+sendmail process is talking to a milter thread over a socket, and each
+milter thread is talking to a dns resolver process over another socket.
 
+<p>Suppose we are processing 20 messages per second, and each message
+requires 20 seconds of dns work.  Then we will have 400 sendmail
+processes, 400 milter threads, and 400 dns resolver processes.  Of
+course that steady state is very unlikely to happen.
+
+<pre>
 $Id$
 </pre>
 </body>