John Massai: > I have a Postfix instance that listens on one of many > interfaces/addresses available on a machine. > > There is one special smptd service in master.cf that I'd like to have > listen on several addresses (but not all, so I can't use "all"). > > I have found that I can define the service once for every address and > it works great, but am not having luck trying to combine them into one > by specifying inet_interfaces (possibly because it conflicts with the > service definition itself?
master.cf specifies information for the master daemon (fields 1-8) and for daemon processes (the daemon command-line arguments). The master daemon passes daemon command line arguments to the daemon process; it is up to the daemon processes, not the master, to evaluate their command-line arguments. This clear separation of concerns is basic to the Postfix architecture. It means that some things cannot be done easily (such as groping user files from the SMTP daemon process). That is a feature. In your case, I suggest that you use make(1) to securely generate master.cf from a simpler template. Makefile: master.cf: master.cf.proto generate-new-master-cf master.cf.proto >master.cf.tmp \ && mv master.cf.tmp master.cf master.cf.proto: DEFAULT:smtp inet n - n - - smtpd pickup unix n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr unix n - - 300 1 qmgr ... Where generate-new-master-cf expands each entry with DEFAULT into as many master.cf entries as needed. I am reluctant to add support for {ip1,ip2,ip3...}:smtp in master.cf. The service name (here: {ip1,ip2,ip3...}:smtp) is also used to generate service-dependent parameter names. With many IP addresses, as in your use case, this could become unwieldy. Wietse