Básicamente, lo que quiero hacer es reescribir el encabezado De:, usando header_checks, pero solo si el correo va a un dominio determinado.
El problema con header_check es que no puedo comprobar si hay una combinación de encabezados Para: y De:.
Ahora me preguntaba si era posible utilizar header_checks en combinación con smtpd_restriction_classes o algo similar.
Encontré mucha información sobre header_checks y múltiples campos de encabezado al buscar en la red. Básicamente, todos me dicen que no se pueden combinar dos encabezados para verificar. Pero no encontré ninguna información sobre si era posible realizar una verificación del encabezado solo si se cumplía una condición (por ejemplo, el correo va a example.com).
Editar:
Mientras investigaba un poco más, encontré lo siguienteartículolo que sugiere agregar un Servicio en postfix master.cf, usar un mapa de transporte para pasar correos electrónicos del Dominio a ese servicio y tener un header_check separado definido con -o.
El caso es que no consigo hacerlo funcionar...
Lo que hice hasta ahora es agregar el Servicio al master.cf:
example unix - - n - - smtpd
-o header_checks=regexp:/etc/postfix/check_headers_example
Agregando la siguiente línea al mapa de transporte:
example.com example:
Por último, pero no menos importante, tengo dos archivos regexp para comprobar los encabezados, uno para el servicio recién agregado y otro para redirigir las respuestas al dominio reescrito.
check_headers_example:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
Obviamente si alguien responde, el correo iría al nirvana, así que tengo los siguientes check_headers definidos en el proceso principal de postfix:
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2
De alguna manera se ignora el Transporte. Se agradece cualquier ayuda.
Edición 2:
Todavía estoy atascado... Intenté lo siguiente:
smtpd_restriction_classes = header_rewrite
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks)
En el rewrite_table
existen las siguientes entradas:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
Todo lo que me da es un NOQUEUE: reject: 451 4.3.5 Server configuration error
. No pude encontrar ningún recurso sobre cómo hacerlo, pero algunas personas dijeron que no era posible.
Edición 3:
La razón por la que hice esta pregunta fue que tenemos un cliente (digamos cliente.com) que usa algunos alias que reenviarán el correo a un dominio, digamos ejemplo.com.
El servidor de correo de ejemplo.com no acepta ningún correo de un servidor externo que provenga de un remitente @ejemplo.com.
Entonces, todos los correos electrónicos que se escriben desde example.com a[correo electrónico protegido]será rechazado al final.
No es posible una excepción en el servidor de correo de example.com.
Realmente no resolvimos este problema, pero intentaremos solucionarlo utilizando listas (mailman) en lugar de alias. Sin embargo, esto no es realmente bueno ni es una solución real.
Agradecería todas las sugerencias sobre cómo se podría hacer esto de manera adecuada.
Respuesta1
No estoy seguro de si pudiste lograr lo que querías. Estaba probando algo similar, necesitaba filtrado de palabras clave, etc. por dominio y pude usar header_checks por dominio o para los dominios que quería usar la función de instancias múltiples de postfix.
Creas una instancia, simplemente cambias el puerto smtp en esa instancia en particular. Utilice transport_maps en la instancia principal para enrutar correos electrónicos de un dominio específico al puerto smtp de la instancia secundaria. ¡Y haga todas las comprobaciones de encabezado allí y transmita el correo electrónico!
¡Salud!
Respuesta2
Puede configurar un nuevo servidor, enrutar todos los dominios que desee procesar utilizando un archivo de transporte y luego aplicar las reglas header_checks en el nuevo servidor.