diff -ruN Spam-Filtering-for-MX-v0.12/chapter-background.xml Spam-Filtering-for-MX/chapter-background.xml
--- Spam-Filtering-for-MX-v0.12/chapter-background.xml	2004-07-29 23:38:44.000000000 -0700
+++ Spam-Filtering-for-MX/chapter-background.xml	2004-08-02 11:32:13.000000000 -0700
@@ -59,7 +59,7 @@
 	standing is probably, well, ignorance.  If you have been doing
 	any type of spam filtering, even by manually moving mails to the
 	trash can in your mail reader, let alone by experimenting with
-	primitive filtering techniques such as DNS blocklists (SpamHaus,
+	primitive filtering techniques such as DNS blacklists (SpamHaus,
 	SPEWS, SORBS...), chances are that you have lost some valid
 	mail.
       </para>
@@ -358,7 +358,7 @@
 	  My view stands in sharp contrast to that of a large number
 	  of <quote>spam hacktivists</quote>, such as the maintainers
 	  of the <ulink url="http://www.spews.org/">SPEWS</ulink>
-	  <link linkend="dnsbl">blocklist</link>.  One of the stated
+	  <link linkend="dnsbl">blacklist</link>.  One of the stated
 	  aims of this list is precisely to inflict <xref
 	  linkend="coldamage"/> as a means to put pressure on ISPs to
 	  react on abuse complaints.  Listing complaints are typically
diff -ruN Spam-Filtering-for-MX-v0.12/chapter-considerations.xml Spam-Filtering-for-MX/chapter-considerations.xml
--- Spam-Filtering-for-MX-v0.12/chapter-considerations.xml	2004-07-28 13:40:54.000000000 -0700
+++ Spam-Filtering-for-MX/chapter-considerations.xml	2004-08-01 23:27:34.000000000 -0700
@@ -17,11 +17,11 @@
     <para>
       Most domains list more than one incoming <xref linkend="mx"/>s
       (a.k.a. <quote>MX hosts</quote>).  If you do so, then bear in
-      mind that in order to have any effect, any SMTP time filtering you
-      incorporate on the primary MX has to be duplicated on all others
-      too.  Otherwise, the sending host would simply sidestep
-      filtering by retrying the mail delivery through your backup
-      server(s).
+      mind that in order to have any effect, any SMTP time filtering
+      you incorporate on the primary MX has to be incorporated on all
+      the others as well.  Otherwise, the sending host would simply
+      sidestep filtering by retrying the mail delivery through your
+      backup server(s).
     </para>
 
     <para>
diff -ruN Spam-Filtering-for-MX-v0.12/chapter-techniques.xml Spam-Filtering-for-MX/chapter-techniques.xml
--- Spam-Filtering-for-MX-v0.12/chapter-techniques.xml	2004-07-30 00:00:47.000000000 -0700
+++ Spam-Filtering-for-MX/chapter-techniques.xml	2004-08-04 11:41:56.000000000 -0700
@@ -105,7 +105,9 @@
       linkend="callback"/>s is 30 seconds - if you impose delays this
       long, the peer's sender callout verification would fail, and in
       turn the original mail delivery from you/your user might be
-      rejected.
+      rejected (usually with a temporary failure, which means the
+      message delivery will be retried for 5 days or so before finally
+      returned to the sender).
     </para>
     <para>
       In other words, 20 seconds is about as long as you can stall
@@ -152,7 +154,7 @@
       incorporate some less conclusive checks that we will discuss in
       the following sections.  You probably do not wish to reject the
       mail outright based the results from e.g. the SPEWS <link
-      linkend="dnsbl">blocklists</link>, but on the other hand, it may
+      linkend="dnsbl">blacklist</link>, but on the other hand, it may
       provide a strong enough indication of trouble that you can at
       least impose transaction delays.  After all, legitimate mail
       deliveries are not affected, other than being subjected to a
@@ -163,14 +165,27 @@
       Conversely, if you find conclusive evidence of spamming (e.g. by
       way of certain <xref linkend="smtpchecks"/>), and your server
       can afford it, you may choose to impose an extended delay,
-      e.g. 15 minutes or so, before finally rejecting the delivery.
+      e.g. 15 minutes or so, before finally rejecting the delivery
+      <footnote>
+	<para>
+	  Beware that while you are holding up an incoming SMTP
+	  delivery, you are also holding up a TCP socket on your
+	  server, as well as memory and other server resources.  If
+	  your server is generally busy, imposing SMTP transaction
+	  delays will make you more vulnerable to Denial-of-Service
+	  attacks.  A more <quote>scalable</quote> option may be to
+	  drop the connection once you have conclusive evidence that
+	  the sender is a ratware client.
+	</para>
+      </footnote>.
       This is for little or no benefit other than slowing down the
       spammer a little bit in their quest to reach as many people as
-      possible before DNS blocklists and other collaborative network
+      possible before DNS blacklists and other collaborative network
       checks catch up.  In other words, pure altruism on your
       side. :-)
     </para>
 
+
     <para>
       In my own case, selective transaction delays and the resulting
       SMTP synchronization errors account for nearly 50% of rejected
@@ -192,7 +207,7 @@
     <para>
       Some indication of the integrity of a particular peer can be
       gleaned directly from the Domain Name Service, DNS, even before
-      SMTP commands are issued.  In particular, various DNS blocklists
+      SMTP commands are issued.  In particular, various DNS blacklists
       can be consulted to find out if a particular IP address is known
       to violate or fulfill certain criteria, and a simple pair of
       forward/reverse (DNS/rDNS) lookups can be used as a vague
@@ -218,23 +233,30 @@
     </para>
 
 
-    <section id="dnsbl" xreflabel="DNS blocklists">
-      <title>DNS Blocklists</title>
+    <section id="dnsbl" xreflabel="DNS Blacklists">
+      <title>DNS Blacklists</title>
 
       <para>
-	DNS blocklists (DNSbl's, formerly called "Real-time Black-hole
-	Lists" after the original blocklist, "mail-abuse.org") make up
+	DNS blacklists (DNSbl's, formerly called "Real-time Black-hole
+	Lists" after the original blacklist, "mail-abuse.org") make up
 	perhaps the most common tool to perform transaction-time spam
 	blocking.  The receiving server performs one or more rDNS
 	lookups of the peer's IP address within various DNSbl zones,
-	such as "bl.spamcop.net", "sbl-xbl.spamhaus.org",
-	"dnsbl.sorbs.net", and so forth.  If a matching DNS record is
-	found, a typical action is to reject the mail delivery.  (A
-	notable exception is "bondedsender.org", which lists "trusted"
-	IP addresses, and whose owners have posted a financial bond
-	that will be debited in the event that someone feel they have
-	received spam from the subscriber.  The idea is that these
-	addresses would be white-listed by the recipient).
+	such as "dnsbl.sorbs.net", "opm.blitzed.org",
+	"lists.dsbl.org", and so forth.  If a matching DNS record is
+	found, a typical action is to reject the mail delivery.
+	<footnote>
+	  <para>
+	    Similar lists exist for different purposes.  For instance,
+	    <quote>bondedsender.org</quote> is a <emphasis>DNS
+	    whitelist</emphasis> (DNSwl), containing
+	    <quote>trusted</quote> IP addresses, whose owners have
+	    posted a financial bond that will be debited in the event
+	    that spam originates from that address.  Other lists
+	    contain IP addresses in use by specific countries,
+	    specific ISPs, etc.
+	  </para>
+	</footnote>
       </para>
 
       <para>
@@ -301,12 +323,12 @@
       <para>
 	For that reason, rather than rejecting mail deliveries
 	outright based on a single positive response from DNS
-	blocklists, many administrators prefer to use these lists in a
+	blacklists, many administrators prefer to use these lists in a
 	more nuanced fashion.  They may consult several lists, and
 	assign a "score" to each positive response.  If the total
 	score for a given IP address reaches a given threshold,
 	deliveries from that address are rejected.  This is how DNS
-	blocklists are used by filtering software such as
+	blacklists are used by filtering software such as
 	SpamAssassin (<xref linkend="spamscanners"/>).
       </para>
 
@@ -463,12 +485,20 @@
 	</para>
 
 	<para>
-	  First, there is no reason to accept a plain IP address in
-	  the Hello greeting.  Even if you wish to generously allow
-	  everything RFC 2821 mandates, recommends, and suggests, you
-	  will note that IP addresses should always be enclosed in
-	  square brackets when presented in lieu of a fully qualified
-	  domain name.
+	  First, feel free to reject plain IP addresses in the Hello
+	  greeting.  Even if you wish to generously allow everything
+	  RFC 2821 mandates, recommends, and suggests, you will note
+	  that IP addresses should always be enclosed in square
+	  brackets when presented in lieu of a name.
+	  <footnote>
+	    <para>
+	      Although this check is normally quite effective at
+	      weeding out junk, there are reports of buggy L-Soft
+	      <ulink url="http://www.lsoft.com/products/default.asp?item=listserv">listserv</ulink>
+	      installations that greet with the plain IP address of
+	      the list server.
+	    </para>
+	  </footnote>
 	</para>
 
 	<para>
@@ -502,7 +532,6 @@
 	  negations) legitimate.
 	</para>
 
-
 	<para>
 	  Similarly, you can reject host names that contain invalid
 	  characters.  For Internet domains, only alphanumeric letters
@@ -528,7 +557,6 @@
 	  delay after each SMTP command (<command>HELO/EHLO</command>,
 	  <command>MAIL FROM:</command>, <command>RCPT TO:</command>).
 	</para>
-
       </section>
 
 
@@ -558,6 +586,11 @@
 	</itemizedlist>
 	
 	<para>
+	  If either of these two checks succeeds, the name has been
+	  verified.
+	</para>
+
+	<para>
 	  Your MTA may have a built-in option to perform this check.
 	  For instance, in Exim (see <xref linkend="exim" />),
 	  you want to set "helo_try_verify_hosts = *", and create ACLs
@@ -593,8 +626,16 @@
       <para>
 	After the client has presented the
 	<command>MAIL FROM:</command> &lt;<parameter>address</parameter>&gt;
-	command, you can validate the supplied <xref linkend="envfrom"
-	/> address as follows.
+	command, you can validate the supplied
+	<xref linkend="envfrom"/> address as follows.
+	<footnote>
+	  <para>
+	    A special case is the NULL envelope sender address
+	    (i.e. <command>MAIL FROM:</command> &lt;&gt;) used in
+	    <xref linkend="dsn"/>s and other automatically generated
+	    responses.  This address should always be accepted.
+	  </para>
+	</footnote>
       </para>
 
       <section id="sendersyntax" xreflabel="Sender Address Syntax Check">
@@ -606,7 +647,7 @@
 	  Is the <parameter>domain</parameter> part a syntactically
 	  valid <xref linkend="fqdn" />?
 	</para>
-	
+
 	<para>
 	  Often, your MTA performs these checks by default.
 	</para>
@@ -650,25 +691,40 @@
 	<title>Sender Callout Verification</title>
 	
 	<para>
-	  This is a mechanism that is offered by the Exim MTA to
-	  validate the <quote>local part</quote> of a remote sender
-	  address.
+	  This is a mechanism that is offered by some MTAs, such as
+	  Exim and Postfix, to validate the <quote>local part</quote>
+	  of a remote sender address.  In Postfix terminology, it is
+	  called <quote>Sender Address Verification</quote>.
 	</para>
 	
 	<para>
 	  Your server contacts the MX for the
 	  <parameter>domain</parameter> provided in the sender
-	  address, attempting to initiate a SMTP transaction as if
-	  returning mail to this address (i.e. with an empty <xref
-	  linkend="envfrom"/> address).  It does not actually send any
-	  mail; rather, once the <command>RCPT TO:</command> command
-	  has been either accepted or rejected by the remote host,
-	  your server sends <command>QUIT</command>.
+	  address, attempting to initiate a secondary SMTP transaction
+	  as if delivering mail to this address.  It does not actually
+	  send any mail; rather, once the <command>RCPT TO:</command>
+	  command has been either accepted or rejected by the remote
+	  host, your server sends <command>QUIT</command>.
 	</para>
 	
 	<para>
-	  The goal is to determine if a <xref linkend="dsn"/> would be
-	  accepted if returned to the sender.
+	  By default, Exim uses an empty envelope sender address for
+	  such callout verifications.  The goal is to determine if a
+	  <xref linkend="dsn"/> would be accepted if returned to the
+	  sender.
+	</para>
+
+	<para>
+	  Postfix, on the other hand, defaults to the sender address
+	  &lt;<option>postmaster@</option><parameter>domain</parameter>&gt;
+	  for address verification purposes
+	  (<parameter>domain</parameter> is taken from the
+	  <option>$myorigin</option> variable).  For this reason, you
+	  may wish to treat this sender address the same way that you
+	  treat the NULL envelope sender (for instance, avoid <xref
+	  linkend="smtpdelays"/> or <xref linkend="greylisting"/>, but
+	  require <xref linkend="signedsender"/>s in recipient
+	  addresses).  More on this in the implementation appendices.
 	</para>
 
 	<para>
@@ -752,8 +808,8 @@
 	  Preventing your servers from acting as open relays is
 	  extremely important.  If your server is an open relay, and
 	  spammers find you, you will be listed in numerous DNS
-	  blocklists instantly.  If the maintainers of certain other
-	  DNS blocklists find you (by probing, and/or by acting on
+	  blacklists instantly.  If the maintainers of certain other
+	  DNS blacklists find you (by probing, and/or by acting on
 	  complaints), you will be listed in those for an extended
 	  period of time.
 	</para>
@@ -761,8 +817,8 @@
 
 
 
-      <section id="rcptvalid" xreflabel="Recipient Address Verification">
-	<title>Recipient Address Verification</title>
+      <section id="rcptvalid" xreflabel="Recipient Address Lookups">
+	<title>Recipient Address Lookups</title>
 
 	<para>
 	  This, too may seem banal to most of us.  It is not always so.
@@ -816,11 +872,12 @@
 	  <title>Recipient Callout Verification</title>
 
 	  <para>
-	    This is a mechanism that is offered by the Exim MTA to
-	    verify the <quote>local part</quote> of a remote recipient
-	    address (see <emphasis><xref
+	    This is a mechanism that is offered by some MTAs, such as
+	    Exim and Postfix, to verify the <quote>local part</quote>
+	    of a remote recipient address (see <emphasis><xref
 	    linkend="callback"/></emphasis> for a description of how
-	    this works).
+	    this works).  In Postfix terminology, this is called
+	    <quote>Recipient Address Verification</quote>.
 	  </para>
 
 	  <para>
@@ -893,14 +950,14 @@
 
 	  <para>
 	    If the machine(s) that host(s) your mailboxes is/are
-	    running on some flavor of UNIX or Linux, you can perform
-	    this task by way of a so-called <quote>cron</quote> job
-	    (type <command>man cron</command> for details).  This
-	    could be a script that would generate such a list, perhaps
-	    from the local <quote>/etc/passwd</quote> file, and then
-	    copied it to your MX host(s) using the <quote>scp</quote>
-	    command from the <ulink
-	    url="http://www.openssh.org/">OpenSSH</ulink> suite.
+	    running on some flavor of UNIX or Linux, you could write a
+	    script to first generate such a list, perhaps from the
+	    local <quote>/etc/passwd</quote> file, and then copy it to
+	    your MX host(s) using the <quote>scp</quote> command from
+	    the <ulink url="http://www.openssh.org/">OpenSSH</ulink>
+	    suite.  You could then set up a <quote>cron</quote> job
+	    (type <command>man cron</command> for details) to
+	    periodically run this script.
 	  </para>
 	</section> <!-- replicdir -->
       </section> <!-- rcptvalid -->
@@ -943,7 +1000,7 @@
 	  Legitimate <xref linkend="dsn"/>s should be sent to only one
 	  recipient address - the originator of the original message
 	  that triggered the notification.  You can drop the
-	  connection if if the <xref linkend="envfrom"/> address is
+	  connection if the <xref linkend="envfrom"/> address is
 	  empty, but there are more recipients than one.
 	</para>
       </section>
@@ -1042,6 +1099,16 @@
 	expire, because certain ISPs (such as
 	<emphasis>earthlink.net</emphasis>) retry deliveries only
 	every 6 hours or similar.
+	<footnote>
+	  <para>
+	    Large sites often use multiple servers to handle outgoing
+	    mail.  For instance, one server or pool of servers may be
+	    used for immediate delivery.  If the first delivery
+	    attempt fails, the mail is handed off to a fallback server
+	    which has been tuned large queues.  Hence, from such
+	    sites, the first two delivery attempts will fail. 
+	  </para>
+	</footnote>
       </para>
 
     </section>
@@ -1095,7 +1162,9 @@
 	incoming mail exchangers.  However, since the machine that
 	hosts this database would become a single point of failure,
 	you would have to take a sensible action if that machine is
-	down (e.g. accept all deliveries).
+	down (e.g. accept all deliveries). Or you could use database
+	replication techniques and have the SMTP server fall back to
+	one of the replicating servers for lookups.
       </para>
     </section>
 
@@ -1571,16 +1640,33 @@
       </para>
 
       <para>
-	One particular case is where the message contains a NULL
-	character (ordinal zero).  Even if you decide that figuring
+	One particular case is where the message contains NUL
+	characters (ordinal zero).  Even if you decide that figuring
 	out what a <emphasis>non-printable</emphasis> character means
 	is more complex than beneficial, you might consider checking
-	for NULL characters.  That is because some <xref
-	linkend="mda"/>s, such as the
-	<ulink url="http://asg.web.cmu.edu/cyrus/">Cyrus Mail
-	Suite</ulink>, will ultimately reject mails that contain this
-	character.  If you are delivering to such software, you should
-	definitely get rid such messages.
+	for this character.  That is because some <xref
+	linkend="mda"/>s, such as the <ulink
+	url="http://asg.web.cmu.edu/cyrus/">Cyrus Mail Suite</ulink>,
+	will ultimately reject mails that contain it.
+	<footnote>
+	  <para>
+	    The IMAP protocol does not allow for NUL characters to be
+	    transmitted to the mail user agent, so the Cyrus
+	    developers decided that the easiest way to deal with mails
+	    containing it was to reject them.
+	  </para>
+	</footnote>.
+
+	If you use such software, you should definitely consider
+	getting rid of NUL characters.
+      </para>
+
+      <para>
+	On the other hand, the (now obsolete) RFC 822 specification
+	did not explicitly prohibit NUL characters in the message.
+	For this reason, as an alternative to rejecting mails
+	containing it, you may choose to strip these characters off
+	the message before delivering it to Cyrus.
       </para>
     </section>
 
diff -ruN Spam-Filtering-for-MX-v0.12/impl-exim.xml Spam-Filtering-for-MX/impl-exim.xml
--- Spam-Filtering-for-MX-v0.12/impl-exim.xml	2004-07-29 23:51:46.000000000 -0700
+++ Spam-Filtering-for-MX/impl-exim.xml	2004-08-02 15:03:54.000000000 -0700
@@ -533,7 +533,7 @@
   drop
     message      = Legitimate bounces are never sent to more than one \
                    recipient.
-    senders      = :
+    senders      = : postmaster@*
     condition    = $recipients_count
 
 
@@ -622,7 +622,7 @@
     message     = Your message does not conform to RFC2822 standard
     log_message = missing header lines
     !hosts      = +relay_from_hosts
-    !senders    = :
+    !senders    = : postmaster@*
     condition   = ${if or {{!def:h_Message-ID:}\
                            {!def:h_Date:}\
                            {!def:h_Subject:}} {true}{false}}
@@ -699,7 +699,7 @@
         If you are like me, you want to be a little bit more
         selective about which hosts you subject to SMTP transaction
         delays.  For instance, as described earlier in this
-        document, you may decide that a match from a DNS blocklist
+        document, you may decide that a match from a DNS blacklist
         or a non-verifiable Hello greeting are not conditions that
         by themselves warrant a rejection - but they may well be
         sufficient triggers for transaction delays.
@@ -1039,7 +1039,7 @@
                   Please try later.
     log_message = greylisted.
     domains     = +local_domains : +relay_to_domains
-    !senders    = :
+    !senders    = : postmaster@*
     set acl_m9  = $sender_host_address $sender_address $local_part@$domain
     set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
     condition   = ${if eq {$acl_m9}{grey}{true}{false}} 
@@ -1074,7 +1074,7 @@
                   delivery status reports to &lt;$recipients&gt;. \
                   Please try later.
     log_message = greylisted.
-    senders     = :
+    senders     = : postmaster@*
     set acl_m9  = $sender_host_address $recipients
     set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
     condition   = ${if eq {$acl_m9}{grey}{true}{false}}
@@ -1305,9 +1305,9 @@
 
   # use a warn verb to set a new expire time on automatic records,
   # but only if the mail was not a bounce, otherwise set to now().
-  warn !senders = :
+  warn !senders = : postmaster@*
        condition = ${lookup mysql{GREYLIST_OK_NEWTIME}}
-  warn senders = :
+  warn senders = : postmaster@*
        condition = ${lookup mysql{GREYLIST_OK_BOUNCE}}
 
   deny
@@ -1322,7 +1322,7 @@
 
 <screen>
 .ifdef GREYLIST_ENABLED
-  defer !senders = :
+  defer !senders = : postmaster@*
         acl      = greylist_acl
         message  = greylisted - try again later
 .endif
@@ -1337,7 +1337,7 @@
 
 <screen>
 .ifdef GREYLIST_ENABLED
-  defer senders  = :
+  defer senders  = : postmaster@*
         acl      = greylist_acl
         message  = greylisted - try again later
 .endif
@@ -1771,7 +1771,7 @@
       </para>
 
       <para>
-        Also, a naive <link linkend="bayesian">Bayesian</link> scoring
+        Also, a <link linkend="bayesian">Bayesian</link> scoring
         feature is built in, and is turned on by default.  We normally
         want to turn this off, because it requires training that will
         be specific to each user, and thus is not suitable for
@@ -1802,7 +1802,7 @@
         scoring (though I don't see why<footnote>
         <para>
           Although it is true that Bayesian training is specific to
-          each user, it should be noted that SpamAssassin's naive
+          each user, it should be noted that SpamAssassin's
           Bayesian classifier is, IMHO, not that stellar in any case.
           Especially I find this to be the case since spammers have
           learned to defeat such systems by seeding random dictionary
@@ -1815,7 +1815,7 @@
       <para>
         As discussed in the <xref linkend="usersettings"/> section
         earlier in the document, there is a way for this to happen.
-        We need to limit the the number of recipients we accept per
+        We need to limit the number of recipients we accept per
         incoming mail delivery to one.  We accept the first
         <command>RCPT TO:</command> command issued by the caller, then
         defer subsequent ones using a <command>451</command> SMTP
@@ -1989,7 +1989,7 @@
         </itemizedlist>
 
         <para>
-          Nedless to say, after making these changes, you need to
+          Needless to say, after making these changes, you need to
           restart <command>spamd</command>.
         </para>
       </section>
@@ -2304,7 +2304,7 @@
                   return path from here.\n\
                   You are responding to a forged sender address.
     log_message = bogus bounce.
-    senders     = :
+    senders     = : postmaster@*
     domains     = +local_domains
     set acl_m9  = /home/${extract{1}{=}{${lc:$local_part}}}/.return-path-sign
     condition   = ${if exists {$acl_m9}{true}}
@@ -2338,7 +2338,7 @@
   # indicate that we should keep stalling the sender.
   #
   warn
-    senders     = :
+    senders     = : postmaster@*
     domains     = +local_domains
     set acl_m9  = /home/${extract{1}{=}{${lc:$local_part}}}/.return-path-sign
     condition   = ${if exists {$acl_m9}{true}}
@@ -2395,7 +2395,7 @@
     message     = This address never sends outgoing mail. \
                   You are responding to a forged sender address.
     log_message = bogus bounce for system user &lt;$local_part@$domain&gt;
-    senders     = :
+    senders     = : postmaster@*
     domains     = +local_domains
     !<parameter>mailbox check</parameter>
 </screen>
@@ -2485,7 +2485,7 @@
         can ensure that incoming <xref linkend="dsn"/>s are not routed
         through it by adding the following condition to the router:
 
-        <screen>!senders = :</screen>
+        <screen>!senders = : postmaster@*</screen>
       </para>
 
       <para>
@@ -2494,7 +2494,7 @@
 system_aliases:
   driver         = redirect
   domains        = +local_domains
-  !senders       = :
+  !senders       = : postmaster@*
   allow_fail
   allow_defer
   data           = ${lookup{$local_part}lsearch{/etc/aliases}}
@@ -2666,7 +2666,7 @@
     message     = Your message does not conform to RFC2822 standard
     log_message = missing header lines
     !hosts      = +relay_from_hosts
-    !senders    = :
+    !senders    = : postmaster@*
     condition   = ${if !eq {$acl_m0}{accept}{true}}
     condition   = ${if or {{!def:h_Message-ID:}\
                            {!def:h_Date:}\
@@ -3055,7 +3055,7 @@
   drop
     message      = Legitimate bounces are never sent to more than one \
                    recipient.
-    senders      = :
+    senders      = : postmaster@*
     condition    = $recipients_count
     delay        = 5m
 
@@ -3125,7 +3125,7 @@
   #                return path from here.\n\
   #                You are responding to a forged sender address.
   #  log_message = bogus bounce.
-  #  senders     = :
+  #  senders     = : postmaster@*
   #  domains     = +local_domains
   #  set acl_m9  = /home/${extract{1}{=}{${lc:$local_part}}}/.return-path-sign
   #  condition   = ${if exists {$acl_m9}{true}}
@@ -3146,7 +3146,7 @@
   #  message     = This address never sends outgoing mail. \
   #                You are responding to a forged sender address.
   #  log_message = bogus bounce for system user &lt;$local_part@$domain&gt;
-  #  senders     = :
+  #  senders     = : postmaster@*
   #  domains     = +local_domains
   #  set acl_m9  = ${extract{1}{=}{${lc:$local_part}}}
   #
@@ -3191,7 +3191,7 @@
   #                Please try later.
   #  log_message = greylisted.
   #  domains     = +local_domains : +relay_to_domains
-  #  !senders    = :
+  #  !senders    = : postmaster@*
   #  set acl_m9  = $sender_host_address $sender_address $local_part@$domain
   #  set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
   #  condition   = ${if eq {$acl_m9}{grey}{true}{false}}
@@ -3277,7 +3277,7 @@
   #  message     = Your message does not conform to RFC2822 standard
   #  log_message = missing header lines
   #  !hosts      = +relay_from_hosts
-  #  !senders    = :
+  #  !senders    = : postmaster@*
   #  condition   = ${if !eq {$acl_m0}{accept}{true}}
   #  condition   = ${if or {{!def:h_Message-ID:}\
   #                         {!def:h_Date:}\
@@ -3308,7 +3308,7 @@
   #                delivery status reports to &lt;$recipients&gt;. \
   #                Please try later.
   #  log_message = greylisted.
-  #  senders     = :
+  #  senders     = : postmaster@*
   #  condition   = ${if !eq {$acl_m0}{accept}{true}}
   #  set acl_m9  = $sender_host_address $recipients
   #  set acl_m9  = ${readsocket{/var/run/greylistd/socket}{$acl_m9}{5s}{}{}}
diff -ruN Spam-Filtering-for-MX-v0.12/Spam-Filtering-for-MX.xml Spam-Filtering-for-MX/Spam-Filtering-for-MX.xml
--- Spam-Filtering-for-MX-v0.12/Spam-Filtering-for-MX.xml	2004-07-29 23:40:42.000000000 -0700
+++ Spam-Filtering-for-MX/Spam-Filtering-for-MX.xml	2004-08-04 11:44:46.000000000 -0700
@@ -31,17 +31,26 @@
 	</affiliation>
       </author>
 
-<!--  <editor>
-	<firstname>Sergiusz</firstname>
-	<surname>Pawlowicz</surname>
+      <editor>
+	<firstname>Joost</firstname>
+	<surname>De Cock</surname>
 	<affiliation>
-	  <address><email>ser (at) metalab.unc.edu</email></address>
+	  <address><email>joost.decock (at) astrid.be</email></address>
 	</affiliation>
 	<contrib>Technical Review</contrib>
-      </editor> -->
+      </editor>
+
+      <editor>
+	<firstname>Devdas</firstname>
+	<surname>Bhagat</surname>
+	<affiliation>
+	  <address><email>devdas (at) dvb.homelinux.org</email></address>
+	</affiliation>
+	<contrib>Technical Review</contrib>
+      </editor>
     </authorgroup>
 
-    <edition>Version 0.12 -- Released for technical review</edition>
+    <edition>Version 0.15 -- Final technical review</edition>
 
     <keywordset>
       <keyword>anti-spam</keyword>
@@ -83,7 +92,7 @@
 
       <para>
 	The discussions are conceptual in nature, but a sample
-	implementation is provided using the Exim MTAs and other
+	implementation is provided using the Exim MTA and other
 	specific software tools.  Miscellaneous other bigotry is
 	expressed throughout.
       </para>
@@ -112,14 +121,8 @@
       <para>
 	The newest version of this document can be found at
 	<ulink url="http://slett.net/spam-filtering-for-mx/" />.
+	Please check back periodically for corrections and additions.
       </para>
-
-      <para>
-	This document is currently under review, and is undergoing
-	rapid changes.  Please change back often for corrections and
-	additions.
-      </para>
-
     </section>
 
     <section id="history" xreflabel="Revision History">
@@ -129,6 +132,36 @@
       <para>
 	<revhistory>
 	  <revision>
+	    <revnumber>0.15</revnumber>
+	    <date>2004-08-04</date>
+	    <authorinitials>TS</authorinitials>
+	    <revremark>
+	      Incorporated second round of changes from technical
+	      review by Devdas Bhagat.
+	    </revremark>
+	  </revision>
+
+	  <revision>
+	    <revnumber>0.14</revnumber>
+	    <date>2004-08-01</date>
+	    <authorinitials>TS</authorinitials>
+	    <revremark>
+	      Incorporated technical review comments/corrections from
+	      Devdas Bhagat.
+	    </revremark>
+	  </revision>
+
+	  <revision>
+	    <revnumber>0.13</revnumber>
+	    <date>2004-08-01</date>
+	    <authorinitials>TS</authorinitials>
+	    <revremark>
+	      Incorporated technical review comments/corrections from
+	      Joost De Cock.
+	    </revremark>
+	  </revision>
+
+	  <revision>
 	    <revnumber>0.12</revnumber>
 	    <date>2004-07-27</date>
 	    <authorinitials>TS</authorinitials>
@@ -409,15 +442,9 @@
       </para>
 
       <para>
-	Timothy M. Lyons <email>lyons (at) digitalvoodoo.org</email>
-	is currently working on a Sendmail implementation of the
-	techniques described in this document.  If you would like to
-	help out, please send him an e-mail.
-      </para>
-
-      <para>
 	If you are able to provide implementations for other <xref
-	linkend="mta"/>s, such as Postfix, please let me know.
+	linkend="mta"/>s, such as Sendmail or Postfix, please let me
+	know.
       </para>
     </section>
     <!-- Translations -->
