"Sergio A. Murillo" wrote:
I've been trying to configure Mailman to work with a virtual domain on a web
server with serveral virtual domains. I read William R. Dickson sugestion
of installing a copy of mailman for each of the virtual domains.
How do i do this?/?? I've been traying all week now and still no luck...
This is the way I have it done (I'm not 100% certain of the
security/reliability of this but it has worked so far):
I have one user set-up purely for mailman and mailman is
that user's directory & web space. All the administration for the lists
are done through this one URL (although it may be possible to put
wrappers around this).
Onto the 'meat'...
I'm assuming that you have set up the mail aliases and virtual
table in the following manner:-
list-<list-name>: "|wrapper post <list-name>"
list-<list-name>-admin: "|wrapper mailowner <list-name>"
list-<list-name>-request: "|wrapper mailcmd <list-name>"
To change the domain of the list, you would go into the admin
and change the host name of the list. This will allow you to
successfully set-up & use list1 at domain1.com & list2 at domain2.com.
Is this perfect? No.
This would work until you needed two lists of the same 'name'
announce at domain1.com and announce at domain2.com
A workaround for this is to embed the domain name into the list
and create lists like the following:-
domain1-com-announce & domain2-com-announce
This now looks really clunky as the list would be at
domain1-com-announce at domain1.com etc.
But .. if you mangle the entries in virtusertable, incoming mail
announce at domain1.com list-domain1-com-announce
announce at domain2.com list-domain2-com-announce
.. do a similar thing for the request & admin etc.
list-domain1-com-announce: "|wrapper post
list-domain2-com-announce: "|wrapper post
Now we're *almost* there. The addresses that mailman puts into
it sends out will contain the full list name
(domain2-com-announce at domain2) , not the short version you want. Back in
the mailman admin screens, there is a field that in the public name of a
list. It seems to indicate that mailman will use this name when
generating addresses but changing this only does half the job.
I've hacked around a bit with MailList.py and got much better
If you apply the attached patch and change the 'public name' for the
lists, it should work.
** NOTE ** I have very little experience of Python (I'm a perler
heart) and almost no appreciation of the structure of Mailman so I
cannot guarrantee that these changes will not foul everything up. The
docs say that you should not change the public name of a list and,
although it is working so far, I am not totally sure of the implications
Hope this helps,
Sapphire Technologies Ltd.
Tel: +44 (0) 1642 702100
Fax: +44 (0) 1642 702119
Any opinions expressed in this message are those of the individual and not necessarily the company. This message and any files transmitted with it are confidential and solely for the use of the intended recipient. If you are not the intended recipient or the person responsible for delivering to the intended recipient, be advised that you have received this message in error and that any use is strictly prohibited.
Sapphire Technologies Ltdhttp://www.sapphire.net
-------------- next part --------------
--- MailList.py Sat Oct 30 02:11:48 1999
+++ /home/sites/home/users/admin/MailList.py Thu Feb 3 08:55:24 2000
@@ -117,7 +117,7 @@
self.members[string.lower(addr)] = addr
- return '%s-admin@%s' % (self._internal_name, self.host_name)
+ return '%s-admin@%s' % (string.lower(self.real_name), self.host_name)
def GetMemberAdminEmail(self, member):
"""Usually the member addr, but modified for umbrella lists.
@@ -159,15 +159,15 @@
- return '%s-request@%s' % (self._internal_name, self.host_name)
+ return '%s-request@%s' % (string.lower(self.real_name), self.host_name)
- return '%s@%s' % (self._internal_name, self.host_name)
+ return '%s@%s' % (string.lower(self.real_name), self.host_name)
"""Return the unique (RFC draft-chandhok-listid-02) identifier."""
return ("%s <%s.%s>" %
- (self.description, self._internal_name, self.host_name))
+ (self.description, string.lower(self.real_name), self.host_name))
def GetRelativeScriptURL(self, script_name):
prefix = '../' * Utils.GetNestingLevel()