Postfix master.cf versus main.cf

12

Vejo muitas vezes que as mesmas configurações podem ser especificadas no main.cf e também no master.cf usando o prefixo -o.

Minha pergunta é: um substitui o outro e, em caso afirmativo, qual arquivo recebe prioridade se a mesma configuração (com um valor diferente) for encontrada em ambos?

Por exemplo, se

smtpd_tls_auth_only=yes

foi especificado em main.cf, mas

-o smtpd_tls_auth_only=no 

foi especificado em master.cf, em qual postfix prestaria atenção?

Dale Anderson
fonte

Respostas:

12

Conforme documentado ,

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

main.cfdefine os valores padrão usados ​​por todos os serviços definidos em master.cf; As opções -o no master.cf podem substituí-las por serviço.

adaptr
fonte
Aha! Então é em preto e branco. Eu simplesmente não li o suficiente. : - /
Dale Anderson
4

Basicamente, as configurações no main.cf são válidas e usadas globalmente, a menos que sejam substituídas no master.cf para daemons específicos do Postfix (smtpd, reescrita trivial, limpeza, retirada, ...). Você pode especificar, por exemplo, smtp_tls_security_level = mayem main.cf e desativá-lo para a porta de envio vinculada ao localhost para o smtpddaemon:

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

Mas para a porta de envio em um endereço IP externo, você pode aplicar a criptografia:

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

Em certas situações, talvez você precise substituir uma configuração global, por exemplo, ao usar o Amavisd, os mapeamentos de endereço (expansão de alias, etc.) precisam ser desativados ao enviar email pelo smtpddaemon do Amavisd . Caso contrário, os destinatários podem receber mensagens duplicadas:

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 ...

Obviamente, durante a operação regular, fora do Amavis, você deseja mapeamentos de endereços; portanto, por padrão, eles são ativados no main.cf.

daff
fonte
1
Você não pode simplesmente definir uma nova porta IP: para um serviço; isso cria uma segunda instância do serviço, com o mesmo nome (potencialmente confuso) e é mais do que provável fora do âmbito dos OPs. Se você duplicar serviços, sempre defina -o syslog_name=secondservicepara distinguir o serviço em seus logs.
adaptr
Obrigado pelo comentário, mas estou bem ciente disso. Várias instâncias de serviços são necessárias ao hospedar vários domínios com certificados SSL diferentes e, portanto, endereços IP diferentes. Eu simplesmente dei um exemplo do mundo real em que alguém substituiria as configurações do main.cf no master.cf.
daff
Não respondeu à pergunta do OP e não incluiu a alteração syslog_name que expliquei acima. Eu não consideraria esse "mundo real" e deixaria de ver onde "certificados SSL" entram nele.
adaptr
Respondi à pergunta do OP na minha primeira frase. E sim, é um exemplo do mundo real, retirado de um de nossos servidores Postfix que hospeda 18 domínios. Os "certificados SSL" entram nele, já que não existe hospedagem virtual baseada em nome SSL no Postfix (na prática); portanto, é necessário atribuir um endereço IP por domínio. Caso contrário, não há como apresentar certificados SSL corretos para os clientes. Para fazer isso várias instâncias do smtpdserviço são necessários, cada um com configurações diferentes para myhostname, smtpd_tls_key_file, smtpd_tls_cert_filee assim por diante. Essas configurações são substituídas pelo main.cf.
daff