non-delivery to virtual domain
![](https://secure.gravatar.com/avatar/b2f6516e7088acffaebfb8ba42a56b7b.jpg?s=120&d=mm&r=g)
(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.
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
I've pasted the config files below.
Thanks in advance for clues on getting Mailman to deliver to virtual addresses on this server.
dn
server hostname: mail.domain1.tld
virtual domains: domain1.tld # (not its real name!) domain2.tld domain3.tld
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
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') add_virtualhost('domain2.tld', 'domain2.tld') add_virtualhost('domain3.tld', 'domain3.tld')
/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
/usr/local/etc/mailman/data/domain1-tld:
domain1.tld IGNORE @domain1.tld @mail.domain1.tld
/usr/local/mailman/data/virtual-mailman:
# LOOP ADDRESSES START mailman-loop@domain1.tld mailman-loop # LOOP ADDRESSES END
# STANZA START: s # CREATED: Sat Oct 30 11:35:12 2010 s@domain1.tld s s-admin@domain1.tld s-admin s-bounces@domain1.tld s-bounces s-confirm@domain1.tld s-confirm s-join@domain1.tld s-join s-leave@domain1.tld s-leave s-owner@domain1.tld s-owner s-request@domain1.tld s-request s-subscribe@domain1.tld s-subscribe s-unsubscribe@domain1.tld s-unsubscribe # STANZA END: s
![](https://secure.gravatar.com/avatar/56f108518d7ee2544412cc80978e3182.jpg?s=120&d=mm&r=g)
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):
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.
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
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 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.
/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.
/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.
/usr/local/mailman/data/virtual-mailman:
# LOOP ADDRESSES START mailman-loop@domain1.tld mailman-loop # LOOP ADDRESSES END
# STANZA START: s # CREATED: Sat Oct 30 11:35:12 2010 s@domain1.tld s s-admin@domain1.tld s-admin s-bounces@domain1.tld s-bounces s-confirm@domain1.tld s-confirm s-join@domain1.tld s-join s-leave@domain1.tld s-leave s-owner@domain1.tld s-owner s-request@domain1.tld s-request s-subscribe@domain1.tld s-subscribe s-unsubscribe@domain1.tld s-unsubscribe # STANZA END: s
And this virtual mapping only affects delivery to the s@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@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
![](https://secure.gravatar.com/avatar/b2f6516e7088acffaebfb8ba42a56b7b.jpg?s=120&d=mm&r=g)
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:
in main.cf, delete the myhostname and mydomain lines ((not sure these are strictly needed given that postfix gets these anyway from gethostbyname() ))
in main.cf, remove $mydomain from $mydestination
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@domain1.tld mailman-loop # LOOP ADDRESSES END
# STANZA START: s # CREATED: Sat Oct 30 11:35:12 2010 s@domain1.tld s s-admin@domain1.tld s-admin s-bounces@domain1.tld s-bounces s-confirm@domain1.tld s-confirm s-join@domain1.tld s-join s-leave@domain1.tld s-leave s-owner@domain1.tld s-owner s-request@domain1.tld s-request s-subscribe@domain1.tld s-subscribe s-unsubscribe@domain1.tld s-unsubscribe # STANZA END: s
And this virtual mapping only affects delivery to the s@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
![](https://secure.gravatar.com/avatar/56f108518d7ee2544412cc80978e3182.jpg?s=120&d=mm&r=g)
On 10/31/10 4:56 PM, David Newman wrote:
On 10/31/10 9:09 AM, Mark Sapiro wrote:
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.
And what is the rest of the information in those log messages, i.e. the remainder of the sent= and the relay= for example. Please post the entire log line.
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.)
You were clear. I was only trying to say that those Postfix configurations only affect mail TO mailman. They don't affect the issue you are asking about.
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 =
Here you want
virtual_alias_domains = domain2.tld, domain3.tld
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/forwardings.cf proxy:mysql:/etc/postfix/sql/email2email.cf hash:/usr/local/mailman/data/domain1.tld
and remove the above which may possibly fix your problem.
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?
No. I'm saying domain1.tld is not currently treated as a virtual domain in Postfix except for the above file and its reference in virtual_alias_maps. I think both the ile and the reference should be removed.
If so I think the changes to do this would be:
in main.cf, delete the myhostname and mydomain lines ((not sure these are strictly needed given that postfix gets these anyway from gethostbyname() ))
in main.cf, remove $mydomain from $mydestination
I think you should leave the above as is.
- in main.cf, delete '/usr/local/etc/mailman/data/domain1-tld' from virtual_alias_maps
As I said above, I think you should do this.
/usr/local/mailman/data/virtual-mailman:
# LOOP ADDRESSES START mailman-loop@domain1.tld mailman-loop # LOOP ADDRESSES END
# STANZA START: s # CREATED: Sat Oct 30 11:35:12 2010 s@domain1.tld s s-admin@domain1.tld s-admin s-bounces@domain1.tld s-bounces s-confirm@domain1.tld s-confirm s-join@domain1.tld s-join s-leave@domain1.tld s-leave s-owner@domain1.tld s-owner s-request@domain1.tld s-request s-subscribe@domain1.tld s-subscribe s-unsubscribe@domain1.tld s-unsubscribe # STANZA END: s
And this virtual mapping only affects delivery to the s@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.
No, I'm saying it's not a virtual domain and should not be treated as such.
I'm also asking how the above virtual-mailman got created with entries for s*@domain1.tld when domain1.tld is not in POSTFIX_STYLE_VIRTUAL_DOMAINS in the first place?
Also, it appears you are taking <http://mailman.sourceforge.net/mailman-install/postfix-virtual.html> much too literally. That section describes a complicated situation which is not typically encountered in practice. And yes, it should probably be heavily revised.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California Better use your sense - B. Dylan
![](https://secure.gravatar.com/avatar/b2f6516e7088acffaebfb8ba42a56b7b.jpg?s=120&d=mm&r=g)
On 10/31/10 10:22 PM, Mark Sapiro wrote:
On 10/31/10 4:56 PM, David Newman wrote:
On 10/31/10 9:09 AM, Mark Sapiro wrote:
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.
And what is the rest of the information in those log messages, i.e. the remainder of the sent= and the relay= for example. Please post the entire log line.
Here's a log snapshot of a message sent to s@domain1.tld, a Mailman list with subscribers 'dnewman@networktest.com' and 'dnewman@domain1.tld'.
This is after removing 'hash:/usr/local/mailman/data/domain1-tld' from virtual_alias_maps as you suggested and reloading Mailman and postfix.
I'm embedded one comment and one question:
Nov 1 11:51:29 mail postfix/postfix-script[5384]: refreshing the Postfix mail system Nov 1 11:51:29 mail postfix/master[19348]: reload -- version 2.6.5, configuration /etc/postfix Nov 1 11:51:59 mail postfix/smtpd[32434]: connect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains
This is a possible clue. I think postfix is set up so that domain1.tld *is* a virtual domain. The server -- Mailserver, an email server appliance from Allard Software -- stores domain info in a SQL database and postfix calls that database here:
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/domains.cf
Anyway, carrying on:
Nov 1 11:51:59 mail postfix/smtpd[32434]: A91E1130CB: client=mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/cleanup[25359]: A91E1130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:51:59 mail postfix/smtpd[32434]: disconnect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/qmgr[20853]: A91E1130CB: from=<dnewman@networktest.com>, size=1495, nrcpt=1 (queue active) Nov 1 11:51:59 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 45013 Nov 1 11:51:59 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for s@mail.domain1.tld:62 Nov 1 11:52:00 mail spamd[10619]: spamd: clean message (-0.0/5.0) for s@mail.domain1.tld:62 in 1.1 seconds, 1467 bytes. Nov 1 11:52:00 mail spamd[10619]: spamd: result: . 0 - T_RP_MATCHES_RCVD scantime=1.1,size=1467,user=s@mail.domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=45013,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:01 mail postfix/pickup[1233]: 03422130CD: uid=506 from=<dnewman@networktest.com> Nov 1 11:52:01 mail postfix/pipe[16800]: A91E1130CB: to=<s@mail.domain1.tld>, orig_to=<s@domain1.tld>, relay=spamassassin, delay=1.6, delays=0.33/0.02/0/1.2, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:01 mail postfix/qmgr[20853]: A91E1130CB: removed Nov 1 11:52:01 mail postfix/cleanup[25359]: 03422130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: from=<dnewman@networktest.com>, size=1762, nrcpt=1 (queue active) Nov 1 11:52:01 mail spamd[18056]: prefork: child states: II Nov 1 11:52:01 mail postfix/local[28131]: 03422130CD: to=<s@mail.domain1.tld>, relay=local, delay=0.32, delays=0.03/0.02/0/0.26, dsn=2.0.0, status=sent (delivered to command: /usr/local/mailman/mail/mailman post s) Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: removed Nov 1 11:52:02 mail postfix/smtpd[32434]: connect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/smtpd[32434]: 80A72130CB: client=localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/cleanup[25359]: 80A72130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:02 mail postfix/smtpd[32434]: disconnect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/qmgr[20853]: 80A72130CB: from=<s-bounces@domain1.tld>, size=2697, nrcpt=2 (queue active) Nov 1 11:52:02 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 5435 Nov 1 11:52:02 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for dnewman@domain1.tld:62 Nov 1 11:52:07 mail spamd[10619]: spamd: clean message (0.0/5.0) for dnewman@domain1.tld:62 in 4.8 seconds, 2638 bytes. Nov 1 11:52:07 mail spamd[10619]: spamd: result: . 0 - scantime=4.8,size=2638,user=dnewman@domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=5435,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:07 mail postfix/pickup[1233]: 7027A130CD: uid=506 from=<s-bounces@domain1.tld> Nov 1 11:52:07 mail postfix/cleanup[25359]: 7027A130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@networktest.com>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@domain1.tld>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service)
I don't understand this entry. Since 's@domain1.tld' never received the message, and since postfix says it was delivered OK, and since there's no indication of trouble in the Mailman logs, what happened to the message?
Nov 1 11:52:07 mail postfix/qmgr[20853]: 80A72130CB: removed Nov 1 11:52:07 mail postfix/qmgr[20853]: 7027A130CD: from=<s-bounces@domain1.tld>, size=2759, nrcpt=1 (queue active) Nov 1 11:52:07 mail spamd[18056]: prefork: child states: II Nov 1 11:52:11 mail postfix/smtp[7413]: 7027A130CD: to=<dnewman@networktest.com>, relay=mail3.networktest.com[69.55.234.104]:25, delay=3.6, delays=0.03/0.04/0.39/3.1, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as EC0D3256A73) Nov 1 11:52:11 mail postfix/qmgr[20853]: 7027A130CD: removed
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.)
You were clear. I was only trying to say that those Postfix configurations only affect mail TO mailman. They don't affect the issue you are asking about.
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 =
Here you want
virtual_alias_domains = domain2.tld, domain3.tld
virtual_alias_maps = proxy:mysql:/etc/postfix/sql/forwardings.cf proxy:mysql:/etc/postfix/sql/email2email.cf hash:/usr/local/mailman/data/domain1.tld
and remove the above which may possibly fix your problem.
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?
No. I'm saying domain1.tld is not currently treated as a virtual domain in Postfix except for the above file and its reference in virtual_alias_maps. I think both the ile and the reference should be removed.
If so I think the changes to do this would be:
in main.cf, delete the myhostname and mydomain lines ((not sure these are strictly needed given that postfix gets these anyway from gethostbyname() ))
in main.cf, remove $mydomain from $mydestination
I think you should leave the above as is.
- in main.cf, delete '/usr/local/etc/mailman/data/domain1-tld' from virtual_alias_maps
As I said above, I think you should do this.
/usr/local/mailman/data/virtual-mailman:
# LOOP ADDRESSES START mailman-loop@domain1.tld mailman-loop # LOOP ADDRESSES END
# STANZA START: s # CREATED: Sat Oct 30 11:35:12 2010 s@domain1.tld s s-admin@domain1.tld s-admin s-bounces@domain1.tld s-bounces s-confirm@domain1.tld s-confirm s-join@domain1.tld s-join s-leave@domain1.tld s-leave s-owner@domain1.tld s-owner s-request@domain1.tld s-request s-subscribe@domain1.tld s-subscribe s-unsubscribe@domain1.tld s-unsubscribe # STANZA END: s
And this virtual mapping only affects delivery to the s@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.
No, I'm saying it's not a virtual domain and should not be treated as such.
I'm also asking how the above virtual-mailman got created with entries for s*@domain1.tld when domain1.tld is not in POSTFIX_STYLE_VIRTUAL_DOMAINS in the first place?
Also, it appears you are taking <http://mailman.sourceforge.net/mailman-install/postfix-virtual.html> much too literally. That section describes a complicated situation which is not typically encountered in practice. And yes, it should probably be heavily revised.
Clarity is desirable and too rare in technical writing. I'd be glad to propose revisions to sections 6.1.1 and 6.1.2 of the docs once I understand how this should work.
Thanks again for your guidance in troubleshooting.
dn
![](https://secure.gravatar.com/avatar/56f108518d7ee2544412cc80978e3182.jpg?s=120&d=mm&r=g)
David Newman wrote:
On 10/31/10 10:22 PM, Mark Sapiro wrote:
On 10/31/10 4:56 PM, David Newman wrote:
On 10/31/10 9:09 AM, Mark Sapiro wrote:
[...]
Here's a log snapshot of a message sent to s@domain1.tld, a Mailman list with subscribers 'dnewman@networktest.com' and 'dnewman@domain1.tld'.
This is after removing 'hash:/usr/local/mailman/data/domain1-tld' from virtual_alias_maps as you suggested and reloading Mailman and postfix.
I'm embedded one comment and one question:
Nov 1 11:51:29 mail postfix/postfix-script[5384]: refreshing the Postfix mail system Nov 1 11:51:29 mail postfix/master[19348]: reload -- version 2.6.5, configuration /etc/postfix Nov 1 11:51:59 mail postfix/smtpd[32434]: connect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains
This is a possible clue. I think postfix is set up so that domain1.tld *is* a virtual domain. The server -- Mailserver, an email server appliance from Allard Software -- stores domain info in a SQL database and postfix calls that database here:
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/domains.cf
Right. domain1.tld is defined to be a local domain because it is (indirectly) in mydestination. It is also in virtual_mailbox_domains and Postfix wants it to be in one or the other (either local or virtual) not both.
Note that if you remove it from mydestination and make it strictly a virtual_mailbox_domain, delivery TO s@domain1.com will stop working. See the FAQ at <http://wiki.list.org/x/ZoCj>.
Anyway, carrying on:
Nov 1 11:51:59 mail postfix/smtpd[32434]: A91E1130CB: client=mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/cleanup[25359]: A91E1130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:51:59 mail postfix/smtpd[32434]: disconnect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/qmgr[20853]: A91E1130CB: from=<dnewman@networktest.com>, size=1495, nrcpt=1 (queue active) Nov 1 11:51:59 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 45013 Nov 1 11:51:59 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for s@mail.domain1.tld:62 Nov 1 11:52:00 mail spamd[10619]: spamd: clean message (-0.0/5.0) for s@mail.domain1.tld:62 in 1.1 seconds, 1467 bytes. Nov 1 11:52:00 mail spamd[10619]: spamd: result: . 0 - T_RP_MATCHES_RCVD scantime=1.1,size=1467,user=s@mail.domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=45013,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:01 mail postfix/pickup[1233]: 03422130CD: uid=506 from=<dnewman@networktest.com> Nov 1 11:52:01 mail postfix/pipe[16800]: A91E1130CB: to=<s@mail.domain1.tld>, orig_to=<s@domain1.tld>, relay=spamassassin, delay=1.6, delays=0.33/0.02/0/1.2, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:01 mail postfix/qmgr[20853]: A91E1130CB: removed
These (A91E1130CB) messages are the receipt if the mail from dnewman@networktest.com to s@domain1.com and its delivery to spamassassin.
Nov 1 11:52:01 mail postfix/cleanup[25359]: 03422130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: from=<dnewman@networktest.com>, size=1762, nrcpt=1 (queue active) Nov 1 11:52:01 mail spamd[18056]: prefork: child states: II Nov 1 11:52:01 mail postfix/local[28131]: 03422130CD: to=<s@mail.domain1.tld>, relay=local, delay=0.32, delays=0.03/0.02/0/0.26, dsn=2.0.0, status=sent (delivered to command: /usr/local/mailman/mail/mailman post s) Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: removed
And these (03422130CD) are the mail being requeued after spamassassin and delivered vi the local alias to Mailman.
Nov 1 11:52:02 mail postfix/smtpd[32434]: connect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/smtpd[32434]: 80A72130CB: client=localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/cleanup[25359]: 80A72130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:02 mail postfix/smtpd[32434]: disconnect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/qmgr[20853]: 80A72130CB: from=<s-bounces@domain1.tld>, size=2697, nrcpt=2 (queue active) Nov 1 11:52:02 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 5435 Nov 1 11:52:02 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for dnewman@domain1.tld:62 Nov 1 11:52:07 mail spamd[10619]: spamd: clean message (0.0/5.0) for dnewman@domain1.tld:62 in 4.8 seconds, 2638 bytes. Nov 1 11:52:07 mail spamd[10619]: spamd: result: . 0 - scantime=4.8,size=2638,user=dnewman@domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=5435,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:07 mail postfix/pickup[1233]: 7027A130CD: uid=506 from=<s-bounces@domain1.tld> Nov 1 11:52:07 mail postfix/cleanup[25359]: 7027A130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@networktest.com>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@domain1.tld>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service)
I don't understand this entry. Since 's@domain1.tld' never received the message, and since postfix says it was delivered OK, and since there's no indication of trouble in the Mailman logs, what happened to the message?
Nov 1 11:52:07 mail postfix/qmgr[20853]: 80A72130CB: removed Nov 1 11:52:07 mail postfix/qmgr[20853]: 7027A130CD: from=<s-bounces@domain1.tld>, size=2759, nrcpt=1 (queue active) Nov 1 11:52:07 mail spamd[18056]: prefork: child states: II Nov 1 11:52:11 mail postfix/smtp[7413]: 7027A130CD: to=<dnewman@networktest.com>, relay=mail3.networktest.com[69.55.234.104]:25, delay=3.6, delays=0.03/0.04/0.39/3.1, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as EC0D3256A73) Nov 1 11:52:11 mail postfix/qmgr[20853]: 7027A130CD: removed
There are two message deliveries above.
80A72130CB is the delivery of the message from mailman with two recipients, dnewman@domain1.tld and dnewman@networktest.com, and was processed through spamassassin (there are spamd reports) and the two entries immediately prior to your last comment above say that Postfix's pipe delivery piped the message to spamassassin for both recipients.
Then, 7027A130CD is the requeue from spamassassin of the message to dnewman@networktest.com which was then delivered via SMTP to the MTA at mail3.networktest.com.
But, there is apparently no requeue from spamassassin of the message to the dnewman@domain1.tld recipient.
My guess is that your spamassassin process doesn't properly handle messages with multiple recipients.
There are two things you could try. You could set
SMTP_MAX_RCPTS = 1
in mm_cfg.py to tell Mailman to deliver each recipient as a separate message.
Or, probably better, you could put
spamassassin_destination_recipient_limit = 1
in main.cf to cause Postfix to pipe only one recipient at a time to the spamassassin handler (see man 8 pipe).
[...]
Also, it appears you are taking <http://mailman.sourceforge.net/mailman-install/postfix-virtual.html> much too literally. That section describes a complicated situation which is not typically encountered in practice. And yes, it should probably be heavily revised.
Clarity is desirable and too rare in technical writing. I'd be glad to propose revisions to sections 6.1.1 and 6.1.2 of the docs once I understand how this should work.
Thank you. I'd appreciate that.
However, it now seems to me that you actually had the Mailman part of Postfix reasonably OK at the outset. The real issue now appears to me the use and configuration of spamassassin filtering in Postfix.
Also note, You are doing way too much spamassassin scanning. You are scanning the inbound message before delivering it to Mailman, and then you are scanning the message again on its way from Mailman to the recipients. It might be better to set up a separate listener in Postfix on a different port and have Mailman deliver there and in Postfix only accept mail from Mailman (or localhost) on that port and bypass spamassassin for that mail.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
![](https://secure.gravatar.com/avatar/b2f6516e7088acffaebfb8ba42a56b7b.jpg?s=120&d=mm&r=g)
On 11/2/10 8:13 AM, Mark Sapiro wrote:
David Newman wrote:
On 10/31/10 10:22 PM, Mark Sapiro wrote:
On 10/31/10 4:56 PM, David Newman wrote:
On 10/31/10 9:09 AM, Mark Sapiro wrote:
[...]
Here's a log snapshot of a message sent to s@domain1.tld, a Mailman list with subscribers 'dnewman@networktest.com' and 'dnewman@domain1.tld'.
This is after removing 'hash:/usr/local/mailman/data/domain1-tld' from virtual_alias_maps as you suggested and reloading Mailman and postfix.
I'm embedded one comment and one question:
Nov 1 11:51:29 mail postfix/postfix-script[5384]: refreshing the Postfix mail system Nov 1 11:51:29 mail postfix/master[19348]: reload -- version 2.6.5, configuration /etc/postfix Nov 1 11:51:59 mail postfix/smtpd[32434]: connect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains
This is a possible clue. I think postfix is set up so that domain1.tld *is* a virtual domain. The server -- Mailserver, an email server appliance from Allard Software -- stores domain info in a SQL database and postfix calls that database here:
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/domains.cf
Right. domain1.tld is defined to be a local domain because it is (indirectly) in mydestination. It is also in virtual_mailbox_domains and Postfix wants it to be in one or the other (either local or virtual) not both.
Note that if you remove it from mydestination and make it strictly a virtual_mailbox_domain, delivery TO s@domain1.com will stop working. See the FAQ at <http://wiki.list.org/x/ZoCj>.
Anyway, carrying on:
Nov 1 11:51:59 mail postfix/smtpd[32434]: A91E1130CB: client=mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/cleanup[25359]: A91E1130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:51:59 mail postfix/smtpd[32434]: disconnect from mail3.networktest.com[69.55.234.104] Nov 1 11:51:59 mail postfix/qmgr[20853]: A91E1130CB: from=<dnewman@networktest.com>, size=1495, nrcpt=1 (queue active) Nov 1 11:51:59 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 45013 Nov 1 11:51:59 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for s@mail.domain1.tld:62 Nov 1 11:52:00 mail spamd[10619]: spamd: clean message (-0.0/5.0) for s@mail.domain1.tld:62 in 1.1 seconds, 1467 bytes. Nov 1 11:52:00 mail spamd[10619]: spamd: result: . 0 - T_RP_MATCHES_RCVD scantime=1.1,size=1467,user=s@mail.domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=45013,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:01 mail postfix/pickup[1233]: 03422130CD: uid=506 from=<dnewman@networktest.com> Nov 1 11:52:01 mail postfix/pipe[16800]: A91E1130CB: to=<s@mail.domain1.tld>, orig_to=<s@domain1.tld>, relay=spamassassin, delay=1.6, delays=0.33/0.02/0/1.2, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:01 mail postfix/qmgr[20853]: A91E1130CB: removed
These (A91E1130CB) messages are the receipt if the mail from dnewman@networktest.com to s@domain1.com and its delivery to spamassassin.
Nov 1 11:52:01 mail postfix/cleanup[25359]: 03422130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: from=<dnewman@networktest.com>, size=1762, nrcpt=1 (queue active) Nov 1 11:52:01 mail spamd[18056]: prefork: child states: II Nov 1 11:52:01 mail postfix/local[28131]: 03422130CD: to=<s@mail.domain1.tld>, relay=local, delay=0.32, delays=0.03/0.02/0/0.26, dsn=2.0.0, status=sent (delivered to command: /usr/local/mailman/mail/mailman post s) Nov 1 11:52:01 mail postfix/qmgr[20853]: 03422130CD: removed
And these (03422130CD) are the mail being requeued after spamassassin and delivered vi the local alias to Mailman.
Nov 1 11:52:02 mail postfix/smtpd[32434]: connect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/smtpd[32434]: 80A72130CB: client=localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/trivial-rewrite[29411]: warning: do not list domain domain1.tld in BOTH mydestination and virtual_mailbox_domains Nov 1 11:52:02 mail postfix/cleanup[25359]: 80A72130CB: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:02 mail postfix/smtpd[32434]: disconnect from localhost[127.0.0.1] Nov 1 11:52:02 mail postfix/qmgr[20853]: 80A72130CB: from=<s-bounces@domain1.tld>, size=2697, nrcpt=2 (queue active) Nov 1 11:52:02 mail spamd[10619]: spamd: connection from localhost [127.0.0.1] at port 5435 Nov 1 11:52:02 mail spamd[10619]: spamd: processing message <4CCF0C4E.8000704@networktest.com> for dnewman@domain1.tld:62 Nov 1 11:52:07 mail spamd[10619]: spamd: clean message (0.0/5.0) for dnewman@domain1.tld:62 in 4.8 seconds, 2638 bytes. Nov 1 11:52:07 mail spamd[10619]: spamd: result: . 0 - scantime=4.8,size=2638,user=dnewman@domain1.tld,uid=62,required_score=5.0,rhost=localhost,raddr=127.0.0.1,rport=5435,mid=<4CCF0C4E.8000704@networktest.com>,autolearn=ham
Nov 1 11:52:07 mail postfix/pickup[1233]: 7027A130CD: uid=506 from=<s-bounces@domain1.tld> Nov 1 11:52:07 mail postfix/cleanup[25359]: 7027A130CD: message-id=<4CCF0C4E.8000704@networktest.com> Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@networktest.com>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service) Nov 1 11:52:07 mail postfix/pipe[16800]: 80A72130CB: to=<dnewman@domain1.tld>, relay=spamassassin, delay=4.9, delays=0.04/0/0/4.9, dsn=2.0.0, status=sent (delivered via spamassassin service)
I don't understand this entry. Since 's@domain1.tld' never received the message, and since postfix says it was delivered OK, and since there's no indication of trouble in the Mailman logs, what happened to the message?
Nov 1 11:52:07 mail postfix/qmgr[20853]: 80A72130CB: removed Nov 1 11:52:07 mail postfix/qmgr[20853]: 7027A130CD: from=<s-bounces@domain1.tld>, size=2759, nrcpt=1 (queue active) Nov 1 11:52:07 mail spamd[18056]: prefork: child states: II Nov 1 11:52:11 mail postfix/smtp[7413]: 7027A130CD: to=<dnewman@networktest.com>, relay=mail3.networktest.com[69.55.234.104]:25, delay=3.6, delays=0.03/0.04/0.39/3.1, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as EC0D3256A73) Nov 1 11:52:11 mail postfix/qmgr[20853]: 7027A130CD: removed
There are two message deliveries above.
80A72130CB is the delivery of the message from mailman with two recipients, dnewman@domain1.tld and dnewman@networktest.com, and was processed through spamassassin (there are spamd reports) and the two entries immediately prior to your last comment above say that Postfix's pipe delivery piped the message to spamassassin for both recipients.
Then, 7027A130CD is the requeue from spamassassin of the message to dnewman@networktest.com which was then delivered via SMTP to the MTA at mail3.networktest.com.
But, there is apparently no requeue from spamassassin of the message to the dnewman@domain1.tld recipient.
My guess is that your spamassassin process doesn't properly handle messages with multiple recipients.
There are two things you could try. You could set
SMTP_MAX_RCPTS = 1
in mm_cfg.py to tell Mailman to deliver each recipient as a separate message.
Or, probably better, you could put
spamassassin_destination_recipient_limit = 1
in main.cf to cause Postfix to pipe only one recipient at a time to the spamassassin handler (see man 8 pipe).
Bingo. Your guess is correct. That one-line addition to main.cf now allows Mailman message delivery to domain1.tld.
[...]
Also, it appears you are taking <http://mailman.sourceforge.net/mailman-install/postfix-virtual.html> much too literally. That section describes a complicated situation which is not typically encountered in practice. And yes, it should probably be heavily revised.
Clarity is desirable and too rare in technical writing. I'd be glad to propose revisions to sections 6.1.1 and 6.1.2 of the docs once I understand how this should work.
Thank you. I'd appreciate that.
I'd be glad to write this up now that it's working. To whom should I send a draft of the changes?
However, it now seems to me that you actually had the Mailman part of Postfix reasonably OK at the outset. The real issue now appears to me the use and configuration of spamassassin filtering in Postfix.
Agreed. With your help, I did make some changes from the Mailman docs, for example removing a separate hash of domain1.tld from virtual_alias_maps.
Also note, You are doing way too much spamassassin scanning. You are scanning the inbound message before delivering it to Mailman, and then you are scanning the message again on its way from Mailman to the recipients. It might be better to set up a separate listener in Postfix on a different port and have Mailman deliver there and in Postfix only accept mail from Mailman (or localhost) on that port and bypass spamassassin for that mail.
OK, thanks. Setting up a separate listener in Postfix via master.cf is no problem for me, but how would I configure Mailman to deliver to that port?
thanks again
dn
![](https://secure.gravatar.com/avatar/56f108518d7ee2544412cc80978e3182.jpg?s=120&d=mm&r=g)
David Newman wrote:
On 11/2/10 8:13 AM, Mark Sapiro wrote:
Or, probably better, you could put
spamassassin_destination_recipient_limit = 1
in main.cf to cause Postfix to pipe only one recipient at a time to the spamassassin handler (see man 8 pipe).
Bingo. Your guess is correct. That one-line addition to main.cf now allows Mailman message delivery to domain1.tld.
Actually, I think the domain1.tld non-delivery was a red herring. I think the real issue is that a post to a list with fewer than SMTP_MAX_RCPTS (default 500) members would be delivered to only one member.
I'd be glad to write this up now that it's working. To whom should I send a draft of the changes?
You can send them off list to me.
Also note, You are doing way too much spamassassin scanning. You are scanning the inbound message before delivering it to Mailman, and then you are scanning the message again on its way from Mailman to the recipients. It might be better to set up a separate listener in Postfix on a different port and have Mailman deliver there and in Postfix only accept mail from Mailman (or localhost) on that port and bypass spamassassin for that mail.
OK, thanks. Setting up a separate listener in Postfix via master.cf is no problem for me, but how would I configure Mailman to deliver to that port?
Set SMTPPORT in mm_cfg.py.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (2)
-
David Newman
-
Mark Sapiro