diff --git a/bms.py b/bms.py
index 348725534d315fa12ef44d68cf9af22d44cd864e..dcb28b9c009a83303089f0b2d6e53a0bb3ef3d61 100644
--- a/bms.py
+++ b/bms.py
@@ -1,6 +1,9 @@
 #!/usr/bin/env python
 # A simple milter that has grown quite a bit.
 # $Log$
+# Revision 1.96  2007/03/17 21:22:48  customdesigned
+# New delayed DSN pattern.  Retab (expandtab).
+#
 # Revision 1.95  2007/03/03 19:18:57  customdesigned
 # Fix continuing findsrs when srs.reverse fails.
 #
@@ -117,7 +120,8 @@ from email.Utils import getaddresses,parseaddr
 # Import gossip if available
 try:
   import gossip
-  from gossip.server import Gossip,Peer
+  import gossip.client
+  import gossip.server
 except: gossip = None
 
 # Import pysrs if available
@@ -228,9 +232,6 @@ logging.basicConfig(
 )
 milter_log = logging.getLogger('milter')
 
-if gossip:
-  gossip_node = Gossip('gossip4.db',1000)
-
 def read_config(list):
   cp = MilterConfigParser({
     'tempdir': "/var/log/milter/save",
@@ -374,6 +375,18 @@ def read_config(list):
     srs_domain.add(cp.getdefault('srs','fwdomain'))
     banned_users = cp.getlist('srs','banned_users')
 
+  if gossip:
+    global gossip_node
+    if cp.has_option('gossip','server'):
+      server = cp.get('gossip','server')
+      host,port = gossip.splitaddr(server)
+      gossip_node = gossip.client.Gossip(host,port)
+    else:
+      gossip_node = gossip.server.Gossip('gossip4.db',1000)
+      for p in cp.getlist('gossip','peers'):
+        host,port = gossip.splitaddr(p)
+        gossip_node.peers.append(gossip.server.Peer(host,port))
+
 def findsrs(fp):
   lastln = None
   for ln in fp:
diff --git a/milter.cfg b/milter.cfg
index 7b46e6016eddd5c8a7085867023658faa65adce7..c99e689dc5c21b567dda5c7ab88021dc4b8381da 100644
--- a/milter.cfg
+++ b/milter.cfg
@@ -200,3 +200,18 @@ blind = 1
 # delivered.
 ;dspam_screener=david,goliath
 # The dspam CGI can also be used: logins must match dspam users
+
+# Optional pygossip interface
+#
+# GOSSiP tracks reputation of domain:qualifier pairs.  For instance,
+# the reputation of example.com:SPF is tracked separately from
+# example.com:neutral.  Currently qualifiers are
+# SPF,neutral,softfail,fail,permerror,GUESS,HELO
+[gossip]
+# Use a dedicated GOSSiP server.  If not specified, a local database
+# will be used.
+;server=host:11900
+# If a local database is used, also consult these GOSSiP servers about 
+# domains.  Peer reputation is also tracked as to how often they
+# agree with us, and weighted accordingly.
+;peers=host1:port,host2