diff -ur /tmp/mailman/Mailman/Archiver/HyperArch.py /usr/share/mailman/Mailman/Archiver/HyperArch.py
--- /tmp/mailman/Mailman/Archiver/HyperArch.py	2005-05-13 15:35:37 +0400
+++ /usr/share/mailman/Mailman/Archiver/HyperArch.py	2005-10-10 16:48:56 +0400
@@ -1087,6 +1087,12 @@
         f.write(article.as_html())
         f.close()
 
+	if not os.path.exists(self.basedir + '/msgid/'):
+	    os.makedirs(self.basedir + '/msgid/', mode=0775)
+	path_symlink = '%s/msgid/%s.html' % (self.basedir, article.msgid)
+	if not os.path.exists(path_symlink):
+	    os.symlink(path, path_symlink)
+
         # Write the text article to the text archive.
         path = os.path.join(self.basedir, "%s.txt" % index)
         omask = os.umask(002)
diff -ur /tmp/mailman/Mailman/Gui/Digest.py /usr/share/mailman/Mailman/Gui/Digest.py
--- /tmp/mailman/Mailman/Gui/Digest.py	2002-02-27 03:04:51 +0300
+++ /usr/share/mailman/Mailman/Gui/Digest.py	2005-10-10 19:24:51 +0400
@@ -27,6 +27,7 @@
 # to this.
 ALLOWEDS = ('real_name', 'list_name', 'host_name', 'web_page_url',
             'description', 'info', 'cgiext', '_internal_name',
+	    'msgid', 'web_archive',
             )
 
 
diff -ur /tmp/mailman/Mailman/Handlers/Decorate.py /usr/share/mailman/Mailman/Handlers/Decorate.py
--- /tmp/mailman/Mailman/Handlers/Decorate.py	2005-05-13 06:38:17 +0400
+++ /usr/share/mailman/Mailman/Handlers/Decorate.py	2005-10-10 19:38:52 +0400
@@ -39,7 +39,7 @@
     # Digests and Mailman-craft messages should not get additional headers
     if msgdata.get('isdigest') or msgdata.get('nodecorate'):
         return
-    d = {}
+    d = {'msgid': msg.get('Message-Id', '<01231@local>').strip()[1:-1]}
     if msgdata.get('personalize'):
         # Calculate the extra personalization dictionary.  Note that the
         # length of the recips list better be exactly 1.
@@ -203,6 +203,7 @@
                   'description'   : mlist.description,
                   'info'          : mlist.info,
                   'cgiext'        : mm_cfg.CGIEXT,
+		  'web_archive'   : mlist.GetBaseArchiveURL(),
                   })
     d.update(extradict)
     # Using $-strings?