[Mailman-Users] non-delivery to virtual domain

David Newman dnewman at networktest.com
Mon Nov 1 00:56:08 CET 2010


On 10/31/10 9:09 AM, Mark Sapiro wrote:
> 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?


maillog says status is "sent" to all list subscribers. The test list,
called "s", has one subscriber in domain1.tld on this server (who got
the initial welcome to this list message from Mailman but not any
messages) and one subscriber in another domain somewhere else (who gets
all messages.

Again, postfix tells the maillog that a message sent to the list address
is "status=sent" to both subscribers.

> 
> 
>> I've followed the setup instructions here, doing section 6.1.2 before
>> 6.1.1 (given the link about doing virtual stuff first):
>>
>> http://mailman.sourceforge.net/mailman-install/postfix-virtual.html
>> http://mailman.sourceforge.net/mailman-install/postfix-integration.html
> 
> 
> 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.

Sorry if I was unclear. Mail delivery to and from non-list addresses in
virtual domains on this server works fine. The only messages that are
not being delivered are those to a subscriber in domain1.tld on this
server. (I haven't yet tried subscribing anyone in domain2.tld or
domain3.tld.)

> 
> 
>> 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:
>> mail.domain1.tld
>>
>> virtual domains:
>> domain1.tld # (not its real name!)
>> domain2.tld
>> domain3.tld

Just to clarify: domain1.tld is not virtual, in the sense that the
server's canonical hostname is mail.domain1.tld. However, addresses
defined in this domain are virtual -- these users do not have local
accounts on this server. Again, non-list mail to and from these users
works as expected.


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

Here you go:

alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases, hash:/usr/local/mailman/data/aliases
command_directory = /usr/local/sbin
config_directory = /etc/postfix
daemon_directory = /usr/local/libexec/postfix
header_checks = pcre:/etc/postfix/header_checks.pcre
mail_owner = _postfix
mailq_path = /usr/local/sbin/mailq
manpage_directory = /usr/local/man
message_size_limit = 27962027
milter_connect_macros = j {daemon_name} v _
milter_default_action = tempfail
milter_header_checks = pcre:/etc/postfix/milter_header_checks
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = domain1.tld
myhostname = mail.domain1.tld
mynetworks = 127.0.0.0/8
newaliases_path = /usr/bin/newaliases
proxy_read_maps = proxy:mysql:/etc/postfix/sql/routing.cf
proxy:mysql:/etc/postfix/sql/domains.cf
proxy:mysql:/etc/postfix/sql/mailboxes.cf
proxy:mysql:/etc/postfix/sql/user.cf
proxy:mysql:/etc/postfix/sql/group.cf
proxy:mysql:/etc/postfix/sql/forwardings.cf
proxy:mysql:/etc/postfix/sql/email2email.cf    proxy:unix:passwd.byname
   unix:passwd.byname
queue_directory = /var/spool/postfix
readme_directory = /usr/local/share/doc/postfix/readme
recipient_delimiter = +
relay_domains = proxy:mysql:/etc/postfix/sql/routing.cf
sample_directory = /etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = _postdrop
smtp_tls_cert_file = /etc/ssl/server.crt
smtp_tls_key_file = /etc/ssl/private/server.key
smtp_tls_security_level = may
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_milters = unix:/tmp/clamav-milter.sock
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,  reject_unauth_destination,
reject_unauth_pipelining,  reject_invalid_hostname,
reject_unknown_sender_domain,  reject_unknown_recipient_domain,
reject_non_fqdn_sender,  reject_non_fqdn_recipient,  reject_rbl_client
zen.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
transport_maps = proxy:mysql:/etc/postfix/sql/routing.cf
unknown_local_recipient_reject_code = 550
virtual_alias_domains =
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
virtual_gid_maps = proxy:mysql:/etc/postfix/sql/group.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mailboxes.cf
virtual_minimum_uid = 1000
virtual_transport = dovecot
virtual_uid_maps = proxy:mysql:/etc/postfix/sql/user.cf


> 
> 
>> -----
>>
>>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
>> VIRTUAL_HOSTS.clear()
>> add_virtualhost('DEFAULT_EMAIL_HOST', 'DEFAULT_URL_HOST')
> 
> 
> The above is backwards. It should be
> 
> add_virtualhost('DEFAULT_URL_HOST', 'DEFAULT_EMAIL_HOST')
> 
> 
>> add_virtualhost('domain2.tld', 'domain2.tld')
>> add_virtualhost('domain3.tld', 'domain3.tld')
> 
> 
> However, nothing here affects delivery of mail FROM mailman.
> 

OK

> 
>> -----
>>
>> /usr/local/mailman/data/aliases
>>
>>
>> # 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
>>
>> # STANZA START: s
>> # 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"
>> # STANZA END: s
> 
> 
> Likewise, the aliases above only affect delivery TO the mailman and s
> lists.

OK

> 
> 
>> -----
>>
>> /usr/local/etc/mailman/data/domain1-tld:
>>
>> 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.

This came from section 6.1.2 of the Mailman docs on integration with
postfix. This, along with the part at the top of section 6.1.1 saying to
do this stuff first, is perhaps the most confusing part of the Mailman
docs. If this method is obsolete in Postfix, it's time to revise these
docs (and as a sometime tech writer I volunteer to help once I
understand this).

Just double-checking: I think you're saying to treat domain1.tld as a
virtual alias domain. True?

If so I think the changes to do this would be:

1. in main.cf, delete the myhostname and mydomain lines ((not sure these
are strictly needed given that postfix gets these anyway from
gethostbyname() ))

2. in main.cf, remove $mydomain from $mydestination

3. in main.cf, delete '/usr/local/etc/mailman/data/domain1-tld' from
virtual_alias_maps

> 
> 
>> -----
>>
>> /usr/local/mailman/data/virtual-mailman:
>>
>> # LOOP ADDRESSES START
>> mailman-loop at domain1.tld        mailman-loop
>> # LOOP ADDRESSES END
>>
>> # STANZA START: s
>> # 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
>> # STANZA END: s
> 
> 
> 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.

Clearly I'm confused as to whether domain1.tld should or should not be
defined as a virtual domain. The Mailman docs on postfix integration say
no, but I think you're saying to treat it as a virtual domain.

Thanks very much for any further clues.

dn


> 
>> -----
> 


More information about the Mailman-Users mailing list