Postfix master.cf versus main.cf

12

Veo muchas veces que se puede especificar la misma configuración tanto en main.cf como en master.cf usando el prefijo -o.

Mi pregunta es, ¿uno anula al otro, y si es así, qué archivo tiene prioridad si se encuentra la misma configuración (con un valor diferente) en ambos?

Por ejemplo, si

smtpd_tls_auth_only=yes

se especificó en main.cf, pero

-o smtpd_tls_auth_only=no 

se especificó en master.cf, ¿a qué postfix prestará atención?

Dale Anderson
fuente

Respuestas:

12

Como se documenta ,

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

main.cfestablece los valores predeterminados utilizados por todos los servicios definidos en master.cf; -o las opciones en master.cf pueden anularlas por servicio.

Adaptador
fuente
¡Ajá! Entonces es en blanco y negro. Simplemente no leí lo suficiente. : - /
Dale Anderson
4

Básicamente, la configuración en main.cf es válida y se usa globalmente a menos que se anule en master.cf para demonios específicos de Postfix (smtpd, reescritura trivial, limpieza, recolección, ...). Puede especificar, por ejemplo, smtp_tls_security_level = mayen main.cf y deshabilitarlo para el puerto de envío vinculado a localhost para el smtpddaemon:

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

Pero para el puerto de envío en una dirección IP externa, puede aplicar el cifrado:

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

En ciertas situaciones, es posible que deba anular una configuración global, por ejemplo, cuando use Amavisd, las asignaciones de direcciones (expansión de alias, etc.) deben deshabilitarse al enviar correo a través del smtpddemonio Amavisd . De lo contrario, los destinatarios podrían recibir mensajes duplicados:

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

Por supuesto, durante el funcionamiento normal, fuera de Amavis, desea asignaciones de direcciones, por lo que, de forma predeterminada, están habilitadas en main.cf.

narciso
fuente
1
No puede simplemente establecer una nueva IP: puerto para un servicio; Esto crea una segunda instancia del servicio, con el mismo nombre (potencialmente confuso), y es más que probable que esté fuera del alcance de los OP. Si realiza servicios duplicados, siempre configure -o syslog_name=secondservicepara distinguir el servicio en sus registros.
Adaptr
Gracias por el comentario, pero soy muy consciente de eso. Se necesitan múltiples instancias de servicios cuando se alojan múltiples dominios con diferentes certificados SSL y, por lo tanto, diferentes direcciones IP. Simplemente di un ejemplo del mundo real donde uno anularía la configuración de main.cf en master.cf.
daff
No respondió la pregunta del OP, y no incluyó el cambio de syslog_name que expliqué anteriormente. No consideraría este "mundo real" y no vería dónde entran los "certificados SSL".
Adaptr
Respondí la pregunta de OP en mi primera oración. Y sí, es un ejemplo del mundo real, tomado de uno de nuestros servidores Postfix que alojan 18 dominios. Los "certificados SSL" entran ya que no existe el alojamiento virtual basado en nombres SSL en Postfix (en la práctica), por lo que es necesario asignar una dirección IP por dominio. De lo contrario, no hay forma de presentar los certificados SSL correctos a los clientes. Para hacer que múltiples instancias de la smtpdse necesitan servicio, cada una con diferentes configuraciones para myhostname, smtpd_tls_key_file, smtpd_tls_cert_filey así sucesivamente. Esas configuraciones son anulaciones de main.cf.
daff