I ended up having to rewrite the patch, and it's currently being
tested. This will be a while...

-- 
 .''`.   martin f. krafft <[EMAIL PROTECTED]>
: :'  :  proud Debian developer, author, administrator, and user
`. `'`   http://people.debian.org/~madduck - http://debiansystem.info
  `-  Debian - when you have better things to do than fixing systems
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in
index 142f5d8..c49fd01 100644
--- a/Mailman/Defaults.py.in
+++ b/Mailman/Defaults.py.in
@@ -115,6 +115,13 @@ HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s'
 # Virtual domains
 #####
 
+# In true virtual mode, Mailman uses the email hostname as part of the list's
+# internal name and thus allows lists with identical local names (before the
+# @) to exist in different email domains serviced by the same Mailman
+# instance.
+# THIS FEATURE IS EXPERIMENTAL
+TRUE_VIRTUAL = False
+
 # Set up your virtual host mappings here.  This is primarily used for the
 # thru-the-web list creation, so its effects are currently fairly limited.
 # Use add_virtualhost() call to add new mappings.  The keys are strings as
diff --git a/Mailman/MailList.py b/Mailman/MailList.py
index e07e23a..a62b6e3 100644
--- a/Mailman/MailList.py
+++ b/Mailman/MailList.py
@@ -185,9 +185,13 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
         return self._full_path
 
     def getListAddress(self, extra=None):
+        addr = None
         if extra is None:
-            return '[EMAIL PROTECTED]' % (self.internal_name(), self.host_name)
-        return '[EMAIL PROTECTED]' % (self.internal_name(), extra, self.host_name)
+            addr = self.internal_name()
+        addr = self.internal_name() + '-' + extra
+        if not mm_cfg.TRUE_VIRTUAL:
+            addr += self.host_name
+        return addr
 
     # For backwards compatibility
     def GetBouncesEmail(self):
@@ -344,8 +348,12 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
                 mm_cfg.DEFAULT_BOUNCE_MATCHING_HEADERS
         self.header_filter_rules = []
         self.anonymous_list = mm_cfg.DEFAULT_ANONYMOUS_LIST
-        internalname = self.internal_name()
-        self.real_name = internalname[0].upper() + internalname[1:]
+        if mm_cfg.TRUE_VIRTUAL:
+            localname = self.internal_name().split('@', 1)[0]
+            self.real_name = localname[0].upper() + localname[1:]
+        else:
+            internalname = self.internal_name()
+            self.real_name = internalname[0].upper() + internalname[1:]
         self.description = ''
         self.info = ''
         self.welcome_msg = ''
@@ -470,8 +478,6 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
     #
     def Create(self, name, admin, crypted_password,
                langs=None, emailhost=None):
-        if Utils.list_exists(name):
-            raise Errors.MMListAlreadyExistsError, name
         # Validate what will be the list's posting address.  If that's
         # invalid, we don't want to create the mailing list.  The hostname
         # part doesn't really matter, since that better already be valid.
@@ -484,8 +490,12 @@ class MailList(HTMLFormatter, Deliverer, ListAdmin,
             Utils.ValidateEmail(postingaddr)
         except Errors.MMBadEmailError:
             raise Errors.BadListNameError, postingaddr
+        if Utils.list_exists(postingaddr):
+            raise Errors.MMListAlreadyExistsError, postingaddr
         # Validate the admin's email address
         Utils.ValidateEmail(admin)
+        if mm_cfg.TRUE_VIRTUAL:
+            name = postingaddr
         self._internal_name = name
         self._full_path = Site.get_listpath(name, create=1)
         # Don't use Lock() since that tries to load the non-existant config.pck
diff --git a/debian/changelog b/debian/changelog
index 9a52e2c..e251140 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+mailman (1:2.1.9-8+truevirtual) unstable; urgency=low
+
+  * Add TRUE_VIRTUAL configuration option to allow true virtual hosting of
+    mailing lists, meaning that lists with identical names can coexist in
+    different domains inside the same Mailman instance (closes: #440016).
+
+ -- martin f. krafft <[EMAIL PROTECTED]>  Thu, 30 Aug 2007 13:08:22 +0200
+
 mailman (1:2.1.9-8) unstable; urgency=low
 
   [ Thijs Kinkhorst ]

Attachment: digital_signature_gpg.asc
Description: Digital signature (see http://martin-krafft.net/gpg/)

Reply via email to