[Mailman-Users] New Mailman Installation - Can't Send Email to aNew List (reformatted)

McJathan mcjathan1 at xmission.com
Sat Nov 11 22:13:41 CET 2006

Mark (and anyone else who wants to jump in), my comments and questions
are below interspersed with the quotations.  My previous email with HTML 
formatting was stripped of most of the formatting.  Hopefully this email 
is better.

Mark Sapiro wrote:
> mcjathan wrote:
>> 1) Is our inability to send email to the lists due to the fact that the 
>> virtual db files aren't being populated?
> Maybe. Have you set up POSTFIX_STYLE_VIRTUAL_DOMAINS in mm_cfg.py per
> <http://www.list.org/mailman-install/postfix-virtual.html>

I've quoted the entire web-page that you cite.  My comments and 
questions are interspersed.

> 6.1.2 Virtual domains
> Postfix 2.0 supports ``virtual alias domains'', essentially what used to 
> be called ``Postfix-style virtual domains'' in earlier Postfix versions. 
> To make virtual alias domains work with Mailman, you need to do some 
> setup in both Postfix and Mailman. Mailman will write all virtual alias 
> mappings to a file called, by default, 
> /usr/local/mailman/data/virtual-mailman. It will also use *postmap* to 
> create the *virtual-mailman.db* file that Postfix will actually use.
> First, you need to set up the Postfix virtual alias domains as described 
> in the Postfix documentation (see Postfix's |virtual(5)| manpage). Note 
> that it's your responsibility to include the |virtual-alias.domain 
> anything| line as described manpage; Mailman will not include this line 
> in virtual-mailman. You are highly encouraged to make sure your virtual 
> alias domains are working properly before integrating with Mailman.

I stepped through http://www.postfix.org/virtual.5.html and we seem to
have everything setup properly.  As a practical observation, we have 2
virtual domain aliases each with multiple aliases,  and email from both
internal and external addresses seem to be delivered without problem to 
all virtual and aliased domains.

> Next, add a path to Postfix's virtual_alias_maps variable, pointing to 
> the virtual-mailman file, e.g.:
>     virtual_alias_maps = <your normal virtual alias files>,
>         hash:/usr/local/mailman/data/virtual-mailman
> assuming you've installed Mailman in the default location. If you're 
> using an older version of Postfix which doesn't have the 
> virtual_alias_maps variable, use the virtual_maps variable instead.

 From our Postfix main.cf file I checked the virtual_alias_maps entry.
Here is our actual entry:

     virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf,

The mysql-virtual.cf file contains (among other entries):

     table           = virtual
     select_field    = destination
     where_field     = email

The virtual-mailman file exists but is completely empty (zero bytes).
In the same directory, there is also a file named virtual-mailman.db.
Using the command "db4.2_dump virtual-mailman.db", the contents on the
db file are:


> Next, in your mm_cfg.py file, you will want to set the variable 
> POSTFIX_STYLE_VIRTUAL_DOMAINS to the list of virtual domains that 
> Mailman should update. This may not be all of the virtual alias domains 
> that your Postfix installation supports! The values in this list will be 
> matched against the host_name attribute of mailing lists objects, and 
> must be an exact match.
> Here's an example. Say that Postfix is configured to handle the virtual 
> domains |dom1.ain|, |dom2.ain|, and |dom3.ain|, and further that in your 
> main.cf file you've got the following settings:
>     myhostname = mail.dom1.ain
>     mydomain = dom1.ain
>     mydestination = $myhostname, localhost.$mydomain
>     virtual_alias_maps =
>         hash:/some/path/to/virtual-dom1,
>         hash:/some/path/to/virtual-dom2,
>         hash:/some/path/to/virtual-dom2

Here is our setup:

     myhostname = mail.domain1.net
     mydomain = domain1.net
     mydestination =  $myhostname $mydomain
     virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf,

Again, the mysql-virtual.cf file seems to be properly setup because
email sent to the virtual and aliased domains seems to work fine.  Also
again, however, the virtual-mailman and virtual-mailman.db files are empty.

> If in your virtual-dom1 file, you've got the following lines:
>     dom1.ain  IGNORE
>     @dom1.ain @mail.dom1.ain
> this tells Postfix to deliver anything addressed to |dom1.ain| to the 
> same mailbox at |mail.dom1.com|, its default destination.

This is where I get a bit lost, but I'll try to muddle through.  We
don't actually have the virtual-domain1 file since we've implemented
Postfix using mySQL.  Here are some possibly relevant entries from the

 From the table "alias" we have these entries:

     alias (column title)          destination (column title)
     postmaster                    postmaster at domain1.net
     root                          postmaster at domain1.net

 From the table "transport" we have these entries:

     domain (column title)         destination (column title)*
     domain1.net                   virtual:
     domain2.net                   virtual:
     domain3.com                   virtual:

 From the table "virtual" we have these entries:

     email (column title)          destination (column title)
     *domain1.net                  virtual:
     *@alias1.com                  @domain2.net
     *@alias2.com                  @domain2.net
     *@alias3.com                  @domain2.net
     *@alias4.info                 @domain2.net

> In this case you would not include |dom1.ain| in 
> POSTFIX_STYLE_VIRTUAL_DOMAINS because otherwise Mailman will write 
> entries for mailing lists in the dom1.ain domain as
>     mylist at dom1.ain         mylist
>     mylist-request at dom1.ain mylist-request
>     # and so on...
> The more specific entries trump your more general entries, thus breaking 
> the delivery of any |dom1.ain| mailing list.

I'm completely lost here.

> However, you would include |dom2.ain| and |dom3.ain| in mm_cfg.py:
>     POSTFIX_STYLE_VIRTUAL_DOMAINS = ['dom2.ain', 'dom3.ain']
> Now, any list that Mailman creates in either of those two domains, will 
> have the correct entries written to /usr/local/mailman/data/virtual-mailman.

Here are the entries from our mm_cfg.py file:

     from Defaults import

     POSTFIX_STYLE_VIRTUAL_DOMAINS=['domain1.net', 'domain2.net']
     add_virtualhost('mail.domain1.net', 'domain1.net')

> As above with the data/aliases* files, you want to make sure that both 
> data/virtual-mailman and data/virtual-mailman.db are user and group 
> owned by |mailman|.

Here are the permissions of all files in the mailman/data/ directory:

-rw-r-----   1 root    mailman    41 Oct 18 16:20 adm.pw
-rw-rw----   1 mailman mailman  3438 Nov  9 13:53 aliases
-rw-rw----   1 mailman mailman 12288 Nov  9 13:53 aliases.db
-rw-r-----   1 root    mailman    41 Oct 18 16:20 creator.pw
-rw-r--r--   1 root    mailman    10 Oct 18 15:05 last_mailman_version
-rw-rw----   1 mailman mailman     6 Oct 18 16:14 master-qrunner.pid
-rw-r--r--   1 root    mailman 14114 Nov  3 00:44 sitelist.cfg
-rw-rw-r--   1 mailman mailman     0 Nov  9 13:53 virtual-mailman
-rw-rw-r--   1 mailman mailman 12288 Nov  9 13:53 virtual-mailman.db

Whew!  That's a lot of information.  Is any of it useful?  Can you
suggest some corrections to our configuration?

Regards,  Jeff

More information about the Mailman-Users mailing list