Postfix master.cf 与 main.cf

Postfix master.cf 与 main.cf

我发现很多时候可以在 main.cf 和 master.cf 中使用 -o 前缀指定相同的设置。

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

例如,如果

smtpd_tls_auth_only=yes

在 main.cf 中指定,但是

-o smtpd_tls_auth_only=no 

是在master.cf中指定的,postfix会关注哪一个?

答案1

据记载

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

main.cf设置 master.cf 中定义的所有服务使用的默认值;master.cf 中的 -o 选项可以根据每个服务覆盖这些值。

答案2

基本上,main.cf 中的设置是有效的,并且全局使用,除非它们在 master.cf 中被特定 Postfix 守护进程(smtpd、trivial-rewrite、cleanup、pickup 等)覆盖。例如,您可以smtp_tls_security_level = may在 main.cf 中指定并为守护进程绑定到 localhost 的提交端口禁用它smtpd

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 中启用。

相关内容