Postfix master.cf与main.cf


12

我经常看到可以在主文件中使用-o前缀在master.cf中指定相同的设置。

我的问题是,一个文件是否覆盖另一个文件,如果是,那么如果两个文件中都存在相同的设置(具有不同的值),则哪个文件具有优先权?

例如,如果

smtpd_tls_auth_only=yes

是在main.cf中指定的,但是

-o smtpd_tls_auth_only=no 

是在master.cf中指定的,后缀会注意哪一个?

Answers:


12

根据记录

-o name=value
                 Override  the  named  main.cf  configuration
                 parameter.

main.cf设置master.cf中定义的所有服务使用的默认值;master.cf中的-o选项可以基于每个服务覆盖它们。


4

基本上,main.cf中的设置是有效的,并且是全局使用的,除非它们在master.cf中为特定的Postfix守护程序(smtpd,琐碎的重写,清除,拾取等)覆盖。例如,您可以smtp_tls_security_level = may在main.cf中指定,并为与smtpd守护程序绑定到localhost的提交端口禁用它:

localhost:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=none

但是对于外部IP地址上的提交端口,您可以强制加密:

1.2.3.4:submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o ...

在某些情况下,您可能必须覆盖全局设置,例如,在使用Amavisd时,通过Amavisd smtpd守护程序发送邮件时,必须禁用地址映射(别名扩展等)。否则,收件人可能会收到重复的消息:

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
  -o content_filter=
  -o ...
  -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings
  -o ...

当然,在常规操作期间,在Amavis之外,您需要地址映射,因此默认情况下在main.cf中启用了它们。


1
您不能简单地为服务设置新的IP:端口;这将创建具有相同名称(可能造成混淆)的服务的第二个实例,并且在OP权限范围之外的可能性更大。如果您执行重复服务,请始终设置-o syslog_name=secondservice为在日志中区分服务。
适配器

感谢您的评论,但我对此很清楚。当使用不同的SSL证书(因此使用不同的IP地址)托管多个域时,必须有多个服务实例。我只是举了一个真实的示例,其中一个示例将覆盖master.cf中main.cf的设置。
daff 2013年

它没有回答OP的问题,也没有包含我上面解释的syslog_name更改。我不会考虑这个“真实世界”,也看不到“ SSL证书”输入的位置。
适配器

我在第一句话中回答了OP的问题。是的,这是一个真实的例子,取自我们的托管18个域的Postfix服务器之一。由于在Postfix中没有基于SSL名称的虚拟主机(实际上),因此需要使用“ SSL证书”,因此每个域需要分配一个IP地址。否则,无法向客户端提供正确的SSL证书。要做到的多个实例smtpd的服务需要,每个不同的设置myhostnamesmtpd_tls_key_filesmtpd_tls_cert_file等等。这些设置是main.cf的替代。
daff 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.