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

McJathan mcjathan1 at xmission.com
Sat Nov 11 20:59:30 CET 2006

Mark (and anyone else who wants to jump in), my comments and questions 
are below in *bolded blue.*

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>
*Here is the text from the web-page that you reference (below)  My 
comments and questions will be interspersed in bolded blue.*

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 aliased and email from both 
internal and external addresses seem to be delivered without problem.*

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>,

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 is:*


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 =

*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 at domain1.net
    * 	*postmaster at domain1.net


*From the table "transport" we have these entries:

    *domain (column title)* 	*destination (column title)*
    * 	*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.ne*

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