[Mailman-Users] non-delivery to virtual domain

Mark Sapiro mark at msapiro.net
Sun Oct 31 17:09:41 CET 2010

David Newman wrote:

>(Apologies for re-raising a topic I asked about here a couple of years
>ago. The instructions on Sourceforge have changed a bit since then.)
>New server runs OpenBSD 4.7, postfix 2.65, mailman 2.1.14, and virtual
>domains. Mail sent to/from virtual domains works fine.
>Different story with Mailman. Although postfix says a message addressed
>to a list is "sent" to all addresses, subscribers from virtual domains
>on this server do not receive the message. Subscribers on other domains
>not on this server do receive the message. There's no indication of
>trouble in the Mailman logs or in maillog.

What exactly does the Postfix log (maillog) say about the delivery to
one of these addresses?

>I've followed the setup instructions here, doing section 6.1.2 before
>6.1.1 (given the link about doing virtual stuff first):

This normally only affects delivery TO a list in a virtual domain. If
done properly, it should not affect delivery to any non-list address
in the virtual domains.

>I've pasted the config files below.
>Thanks in advance for clues on getting Mailman to deliver to virtual
>addresses on this server.

This is almost certainly a Postfix issue rather than a Mailman issue.
If there is nothing in Mailman's smtp-failure log, Mailman has
delivered the message whith the local virtual recipients included to
Postfix and Postfix has accepted it.

See additional comments inline below.

>server hostname:
>virtual domains:
>domain1.tld # (not its real name!)
>from /etc/postfix/main.cf:
>myhostname = mail.domain1.tld
>mydomain = domain1.tld
>mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
>alias_maps = hash:/etc/mail/aliases, hash:/usr/local/mailman/data/aliases
>virtual_alias_maps =
>        proxy:mysql:/etc/postfix/sql/forwardings.cf
>        proxy:mysql:/etc/postfix/sql/email2email.cf
>        hash:/usr/local/mailman/data/domain1-tld
>        hash:/usr/local/mailman/data/virtual-mailman

Full output from "postconf -n" might help.

>from /usr/local/mailman/Mailman/mm_cfg.py:
>MTA = 'Postfix'
>MAILMAN_SITE_LIST = 'mailman'
>DEFAULT_EMAIL_HOST = 'domain1.tld'
>DEFAULT_URL_HOST = 'mail.domain1.tld'
>DEFAULT_URL_PATTERN = 'https://%s/mailman/'
>PUBLIC_ARCHIVE_URL = 'https://%(hostname)s/pipermail/%(listname)s'
>IMAGE_LOGOS = '/icons/'
>POSTFIX_ALIAS_CMD = '/usr/local/sbin/postalias'
>POSTFIX_MAP_CMD = '/usr/local/sbin/postmap'
>POSTFIX_STYLE_VIRTUAL_DOMAINS = [ 'domain2.tld', 'domain3.tld' ]
># Clear the Defaults.py VIRTUAL_HOSTS entry

The above is backwards. It should be


>add_virtualhost('domain2.tld', 'domain2.tld')
>add_virtualhost('domain3.tld', 'domain3.tld')

However, nothing here affects delivery of mail FROM mailman.

># The ultimate loop stopper address
>mailman-loop: /usr/local/mailman/data/owner-bounces.mbox
># STANZA START: mailman
># CREATED: Sat Oct 30 11:23:37 2010
>mailman:             "|/usr/local/mailman/mail/mailman post mailman"
>mailman-admin:       "|/usr/local/mailman/mail/mailman admin mailman"
>mailman-bounces:     "|/usr/local/mailman/mail/mailman bounces mailman"
>mailman-confirm:     "|/usr/local/mailman/mail/mailman confirm mailman"
>mailman-join:        "|/usr/local/mailman/mail/mailman join mailman"
>mailman-leave:       "|/usr/local/mailman/mail/mailman leave mailman"
>mailman-owner:       "|/usr/local/mailman/mail/mailman owner mailman"
>mailman-request:     "|/usr/local/mailman/mail/mailman request mailman"
>mailman-subscribe:   "|/usr/local/mailman/mail/mailman subscribe mailman"
>mailman-unsubscribe: "|/usr/local/mailman/mail/mailman unsubscribe mailman"
># STANZA END: mailman
># CREATED: Sat Oct 30 11:35:12 2010
>s:             "|/usr/local/mailman/mail/mailman post s"
>s-admin:       "|/usr/local/mailman/mail/mailman admin s"
>s-bounces:     "|/usr/local/mailman/mail/mailman bounces s"
>s-confirm:     "|/usr/local/mailman/mail/mailman confirm s"
>s-join:        "|/usr/local/mailman/mail/mailman join s"
>s-leave:       "|/usr/local/mailman/mail/mailman leave s"
>s-owner:       "|/usr/local/mailman/mail/mailman owner s"
>s-request:     "|/usr/local/mailman/mail/mailman request s"
>s-subscribe:   "|/usr/local/mailman/mail/mailman subscribe s"
>s-unsubscribe: "|/usr/local/mailman/mail/mailman unsubscribe s"

Likewise, the aliases above only affect delivery TO the mailman and s

>domain1.tld  IGNORE
>@domain1.tld @mail.domain1.tld

This file and its reference in virtual_alias_maps is conflicting as
this says domain1.tld is a virtual alias domain and its presence in
mydestination says it's not. Also, this is obsolete in Postfix. The
current method of specifying to postfix that a domain is a virtual
alias domain is to list it in virtual_alias_domains in main.cf.

>mailman-loop at domain1.tld        mailman-loop
># CREATED: Sat Oct 30 11:35:12 2010
>s at domain1.tld              s
>s-admin at domain1.tld        s-admin
>s-bounces at domain1.tld      s-bounces
>s-confirm at domain1.tld      s-confirm
>s-join at domain1.tld         s-join
>s-leave at domain1.tld        s-leave
>s-owner at domain1.tld        s-owner
>s-request at domain1.tld      s-request
>s-subscribe at domain1.tld    s-subscribe
>s-unsubscribe at domain1.tld  s-unsubscribe

And this virtual mapping only affects delivery to the s at domain1.tld 
list and it's associated admin addresses, but since domain1.tld is not
in POSTFIX_STYLE_VIRTUAL_DOMAINS (which is correct because it is in
main.cf mydestination which makes it a postfix local domain), why is
this list in virtual-mailman at all.


Mark Sapiro <mark at msapiro.net>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

More information about the Mailman-Users mailing list