Hello! At work I have the following real-world postfix setup:
mydomain = redoaksw.com
mydestination = local.redoaksw.com # note that this domain doesn't exist
virtual_mailbox_domains = redoaksw.com
I installed mailman and created the list '[EMAIL PROTECTED]'. So far
so good, however the "virtual-mailman" alias map mailman generates
does not work.
The problem is as follows :
1) the map contains entries such as
[EMAIL PROTECTED] test1
2) postfix converts "[EMAIL PROTECTED]" to "test1" as it should,
and then qualifies the address with $mydomain,
[EMAIL PROTECTED]
(note: this does not actually create a loop)
3) with the address [EMAIL PROTECTED], postfix hands the message
to virtual(8) which looks in the virtual_mailbox_maps and
correctly reports no such user
The solution is simple -- change the map to:
[EMAIL PROTECTED] [EMAIL PROTECTED]
In this scenario, after the virtual_alias_map rewriting, postfix will
hand the message to local(8) which will find the mailman command in
$alias_maps.
To this end I created the attached patch to mailman. It WorksForMe,
but is not yet complete enough to include in the next release. I need
some assistance in polishing it for inclusion. The core of the patch
is simply to optionally fully-qualify the map value in _addvirtual()
in Mailman/MTA/Postfix.py.
The parts I need help with are :
+ What are good names for the parameters (in mm_cfg.py and the
mail list object)? I'm not convinced you want to be stuck
with the names in my patch forever :-).
+ How do you handle additional parameters on maillist objects? I
noted that __getattr__ fails when the web interface tries to
load the current value from a list created before the
parameter was added.
+ Should the default value for 'local_domain' (as it is currently
called in my patch) be '' or None? I would generally choose
None, but that seems to not play well with the web interface
(it shows "None" instead of nothing).
+ Do I need to do anything with any translation files with regards
to the new list parameter?
-D
--
One OS to rule them all, one OS to find them,
One OS to bring them all and in the darkness bind them,
In the Land of Redmond, where the Shadows lie.
www: http://dman13.dyndns.org/~dman/ jabber: [EMAIL PROTECTED]
Index: Mailman/Defaults.py.in
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/Defaults.py.in,v
retrieving revision 2.129
diff -U3 -r2.129 Defaults.py.in
--- Mailman/Defaults.py.in 10 Oct 2003 04:21:45 -0000 2.129
+++ Mailman/Defaults.py.in 24 Mar 2005 01:05:45 -0000
@@ -377,6 +377,13 @@
# of the mailing lists. See README.POSTFIX for details.
POSTFIX_STYLE_VIRTUAL_DOMAINS = []
+# Set this if you want the virtual-mailman alias map to specify a domain
+# for the map values. This is essential if, for example, your $mydomain is
+# a virtual domain. If set, the list's 'local_domain' field will be used,
+# otherise POSTFIX_FQ_VIRTUAL_ALIAS_DOMAIN will be used.
+POSTFIX_FQ_VIRTUAL_ALIAS = False
+POSTFIX_FQ_VIRTUAL_ALIAS_DOMAIN = ''
+
# These variables describe the program to use for regenerating the aliases.db
# and virtual-mailman.db files, respectively, from the associated plain text
# files. The file being updated will be appended to this string (with a
Index: Mailman/MailList.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/MailList.py,v
retrieving revision 2.110
diff -U3 -r2.110 MailList.py
--- Mailman/MailList.py 10 Oct 2003 04:08:27 -0000 2.110
+++ Mailman/MailList.py 24 Mar 2005 01:05:46 -0000
@@ -293,6 +293,7 @@
# See the note in Defaults.py concerning DEFAULT_HOST_NAME
# vs. DEFAULT_EMAIL_HOST.
self.host_name = mm_cfg.DEFAULT_HOST_NAME or mm_cfg.DEFAULT_EMAIL_HOST
+ self.local_domain = None
self.web_page_url = (
mm_cfg.DEFAULT_URL or
mm_cfg.DEFAULT_URL_PATTERN % mm_cfg.DEFAULT_URL_HOST)
Index: Mailman/Gui/General.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/Gui/General.py,v
retrieving revision 2.22
diff -U3 -r2.22 General.py
--- Mailman/Gui/General.py 11 Dec 2002 12:41:56 -0000 2.22
+++ Mailman/Gui/General.py 24 Mar 2005 01:05:46 -0000
@@ -365,6 +365,16 @@
useful for selecting among alternative names of a host that has
multiple addresses.""")),
+ ('local_domain', mm_cfg.Host, WIDTH, 0,
+ _('Domain name for rhs-value in postfix virtual aliases.'),
+
+ _("""The "local_domain" is the domain name to use in the value
+ of the generated virtual alias map for postfix. This must be
+ a domain listed in postfix' $mydestination parameter. This
+ setting is essential if your $mydomain domain is a virtual
+ domain. Note that this value is only used if MTA="Postfix"
+ and POSTFIX_FQ_VIRTUAL_ALIAS=True.""")),
+
]
if mm_cfg.ALLOW_RFC2369_OVERRIDES:
Index: Mailman/MTA/Postfix.py
===================================================================
RCS file: /cvsroot/mailman/mailman/Mailman/MTA/Postfix.py,v
retrieving revision 2.22
diff -U3 -r2.22 Postfix.py
--- Mailman/MTA/Postfix.py 14 Sep 2003 04:41:32 -0000 2.22
+++ Mailman/MTA/Postfix.py 24 Mar 2005 01:05:46 -0000
@@ -143,11 +143,21 @@
# The text file entries get a little extra info
print >> fp, '# STANZA START:', listname
print >> fp, '# CREATED:', time.ctime(time.time())
+
+ if mm_cfg.POSTFIX_FQ_VIRTUAL_ALIAS :
+ if hasattr(mlist, 'local_domain') and mlist.local_domain is not None :
+ local_domain = '@' + mlist.local_domain
+ else :
+ local_domain = '@' + mm_cfg.POSTFIX_FQ_VIRTUAL_ALIAS_DOMAIN
+ else :
+ # let postfix decide what domain to append by omitting it from the map
+ local_domain = ''
+
# Now add all the standard alias entries
for k, v in makealiases(listname):
fqdnaddr = '[EMAIL PROTECTED]' % (k, hostname)
# Format the text file nicely
- print >> fp, fqdnaddr, ((fieldsz - len(k)) * ' '), k
+ print >> fp, fqdnaddr, ((fieldsz - len(k)) * ' '), k+local_domain
# Finish the text file stanza
print >> fp, '# STANZA END:', listname
print >> fp
signature.asc
Description: Digital signature
_______________________________________________ Mailman-Developers mailing list [email protected] http://mail.python.org/mailman/listinfo/mailman-developers Mailman FAQ: http://www.python.org/cgi-bin/faqw-mm.py Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/ Unsubscribe: http://mail.python.org/mailman/options/mailman-developers/archive%40jab.org Security Policy: http://www.python.org/cgi-bin/faqw-mm.py?req=show&file=faq01.027.htp
