On Wed, Jul 11, 2018 at 09:12:40PM -0400, Wietse Venema wrote: > Steve Atkins: > > I suspect the answer to this is going to be "Well, don't do > > that then." but I may as well ask... > > > > I have a VM that's running two services. One of them is a vanilla > > postfix smarthost - it accepts mail on port 587 and relays it out > > to the world. > > > > The other is an unrelated smtp server that listens for inbound > > email on port 25. They use unrelated domains and hostnames, but are > > both on the same IP address. > > You can't do that with Postfix. Specifically, the inet_interfaces > settings must be non-overlapping.
Yes, but that can actually be accomplished in this case. To make this work: 1. Configure a different value for "myhostname" in the submission instance, for example: submission: myhostname = smtp.example.com inbound-mx: myhostname = mx01.example.com 2. Assign the system's non-loopback interfaces to the port 25 MX host: # All the non-loopback IPv4/IPv6 addresses on which the instance is listening inet_interfaces = 192.0.2.1 # Plus any NAT addresses externally mapped to the above proxy_interfaces = consequently this instance will have a non-wildcard TCP binding, and will not serve the loopback address. That should be fine. 3. Assign just the loopback address to the submission service inet_interfaces = loopback-only which means that all "inet" services in master.cf will *default* to listen only on the loopback address, but you can "steal" some ports from the public IPs, provided they're not used by the inbound MX service. master.cf: 192.0.2.1.:587 inet n - n - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_tls_security_level=encrypt -o smtpd_tls_dh1024_param_file=${config_directory}/dh1024.pem -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions= -o smtpd_data_restrictions= -o smtpd_end_of_data_restrictions= 4. Optional safety net. Configure the inbound MX to also listen on additional loopback port: master.cf: 127.0.0.1:26 inet n - n - - smtpd then configure the *MSA* to relay email to known local domains to this service, avoiding loop detection by using a non-default port: main.cf: indexed = ${default_database_type}:${config_directory}/ transport_maps = ${indexed}transport transport: # Route my own domains to the inbound MX for delivery example.com relay:[127.0.0.1]:26 -- Viktor.