![¿Cómo agregar un encabezado único para cualquier correo entrante con Postfix?](https://rvso.com/image/776284/%C2%BFC%C3%B3mo%20agregar%20un%20encabezado%20%C3%BAnico%20para%20cualquier%20correo%20entrante%20con%20Postfix%3F.png)
Tengo Postfix ejecutándose con varios procesos smtpd configurados en master.cf de esta manera:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o ... # internet-only overrides
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o ... # internal-only overrides
Ahora, me gustaría agregar un único encabezado, con nombre y valor estáticos, aentrantecorreo dependiendo del smtpd en el que se recibió.
Ejemplo:
X-Gert-Postfix-Received-From: the evil internet
Mis opciones consideradas:
Añade el
header_checks
opción y utilice laPREPEND
acción en el archivo.Casi ahí, pero:
- Requiere coincidir con un encabezado existente y luego agregará uno más en coincidencias posteriores.
- No siempre tengo un determinado encabezado presente, tal vez incluso
From
falte uno, por ejemplo. - En caso de que ya exista , creo que
header_checks
no hay una manera fácil de apilar dos archivos.header_check
Cree una aplicación personalizada que utiliceprotocolo miltery conéctelo a Postfix con
smtpd_milters
.Por supuesto, esto funcionará. Puedo inspeccionar el correo en mi propia aplicación y luego inyectar el encabezado allí. Parece demasiada ingeniería para una tarea simple como agregar un encabezado. Además, requiere mantenimiento adicional con la necesidad de ejecutar otra aplicación demonio, bastante código repetitivo, etc.
Como se sugiere en un comentario, use
check_recipient_access
(Q relacionado).Mismas desventajas que
header_checks
(ver 1).
Siento que me falta algo simple. Alguien tiene una mejor idea?
Respuesta1
En caso de que tenga header_checks existentes, creo que no hay una manera fácil de apilar dos archivos header_check.
En realidad, existe una manera de tener múltiples archivos header_checks independientes por demonio.
cada-oLa opción en su master.cf anula un valor predeterminado o cualquier parámetro de configuración de postfix en main.cf. Para tener un header_checks diferente por demonio (digamos/etc/postfix/header_checks1y/etc/postfix/header_checks2), tienes que anular cada unocomprobaciones de encabezadoparámetro:
# Internet facing one
1.2.3.4:25 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks1
# Internal facing one
10.0.0.1:10026 inet n - y - - smtpd
-o header_checks = regexp:/etc/postfix/header_checks2
De esta manera tendrás total independenciacomprobaciones de encabezadoarchivos por demonio smtpd. Desde allí puede agregar reglas que antepongan la etiqueta de la que estaba hablando.
Respuesta2
Para solucionar las limitaciones de smtpd_*_restrictions
:
Un mensaje, incluso uno con un remitente "nulo", tiene exactamente un remitente de sobre. Así que úsalo check_sender_access
en lugar de check_recipient_access
. El tipo de búsqueda utilizado puede static:
deberse a que no nos importan los detalles de la ruta de retorno. Agréguelo a su lista de smtpd_sender_restrictions antes de que cualquier verificación genere ACCEPT
resultados (postfix no consultará búsquedas adicionales más allá).
# in main.cf
common_sender_restrictions =
reject_non_fqdn_sender
reject_unknown_sender_domain
..
internet_sender_restrictions =
$common_sender_restrictions
check_sender_access static:{PREPEND X-Gert-Postfix-Received-From: the evil internet}
# in master.cf
192.0.2.0:25 inet n - y - - smtpd
-o smtpd_sender_restrictions=$internet_sender_restrictions
10.0.0.1:10026 inet n - y - - smtpd
-o smtpd_sender_restrictions=$common_sender_restrictions