diff -ur mailman-2.0.11.orig/Mailman/Archiver/HyperArch.py mailman-2.0.11/Mailman/Archiver/HyperArch.py
--- mailman-2.0.11.orig/Mailman/Archiver/HyperArch.py	2002-05-20 17:02:49.000000000 +0200
+++ mailman-2.0.11/Mailman/Archiver/HyperArch.py	2004-06-06 10:20:46.000000000 +0200
@@ -207,7 +207,26 @@
                 i = -1
 
         if mm_cfg.ARCHIVER_OBSCURES_EMAILADDRS:
-            self.email = re.sub('@', ' at ', self.email)
+            def email_sub(email_address):
+                """substitute an email address with an antispam email address"""
+                # XXX these have to be internationalized
+                at_sub_list = ['at', '_at_', '<at>', '[at]', '{at}']
+                dot_sub_list = ['dot', '_dot_', '<dot>', '[dot]', '{dot}']
+                from random import randint
+                
+                at_sub = at_sub_list[randint(0, len(at_sub_list))]
+                dot_sub = dot_sub_list[randint(0, len(dot_sub_list))]
+                email_address = re('@', at_sub, email_address)
+                email_address = re('.', dot_sub, email_address)
+
+                return email_address
+
+            self.email = emailpat.sub(email_sub, self.email)
+            new_body = []
+            for line in self.body:
+                new_body.append(emailpat.sub(email_sub, line))
+            self.body = new_body
+
 
         # Snag the content-* headers.  RFC 1521 states that their values are
         # case insensitive.
