Rutas Específicas o smarthost complejo para Exim y cPanel
Smarthosts
A veces, lidiar con Microsoft, Yahoo y toda la gama de Big Tech dedicadas al correo es una misión imposible. Son los eternos enemigos de las empresas de servicios de hosting, por muchas razones, una de ellas es la cultura de "con ellos no tengo problemas".
- Excepto cuando un correo se pierde y no hay soporte.
- Excepto cuando alguien borra los correos y no hay soporte.
- Excepto cuando tu ex (socio, pareja, ...) secuestra la cuenta de tu empresa.
- Excepto cuando tienes un problema y no hay soporte.
El caso que nos ocupa es la modificación de Exim para cPanel, siguiendo sus especificaciones para construir una red de smarthosts para clientes con problemas.
Aunque está dedicada a cPanel y sus peculiaridades, es fácilmente trasladable a Directadmin.
Configuración de Exim / Editor Avanzado
Vamos a crear una configuración doble:
- Una ruta para dominios salientes, para los que siempre enviaremos por esas rutas. Si el dominio no está en esa lista, continuará a la siguiente.
- Una ruta específica que puede estar o no activa en función de si existe el archivo que conforma el cierre del enrutado especial.
Si este último router no encuentra el archivo, Exim tratará entonces el correo como normal, es decir, ejecutará su proceso habitual.
TRANSPORTSTART
Buscaremos la sección TRANSPORTSTART.
Los nombres son ficticios y son los que uno quiera y tenga configurados, se entiende.
castris_smarthost_transport:
driver = smtp
hosts_require_tls = *
hosts_randomize = true
castris_talos_transport:
driver = smtp
hosts_require_tls = *
hosts_randomize = true
ROUTERSTART
castris_talos_router:
driver = manualroute
domains = lsearch;/etc/talos_domains.txt
transport = castris_talos_transport
condition = ${if exists{/etc/talos_routes.txt}{true}{false}}
route_list = * ${lookup{$domain}nwildlsearch{/etc/talos_routes.txt}}
hosts_randomize = true
castris_smarthost_router:
driver = manualroute
transport = castris_smarthost_transport
domains = ! +local_domains
condition = ${if exists{/etc/smartdomains.txt}{true}{false}}
route_list = * ${lookup{$domain}nwildlsearch{/etc/smartdomains.txt}}
hosts_randomize = true
Formatos
/etc/smartdomains.txt
hotmail.com: hetzner-xer01.castris.com:hetzner-xer02.castris.com:hetzner-xer04.castris.com
hotmail.es: hetzner-xer01.castris.com:hetzner-xer02.castris.com:hetzner-xer04.castris.com
amenabarobrasyproyectos.com:hetzner-xer01.castris.com:hetzner-xer08.castris.com
*: hetzner-xer07.castris.com:hetzner-xer08.castris.com:hetzner-xer05.castris.com
talos_routes.txt
gruposantander.es: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
yahoo.es: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
yahoo.com: hetzner-xer07.xerintel.com:hetzner-xer08.xerintel.com:hetzner-xer05.xerintel.com
policia.es: hetzner-xer11.castris.com:hetzner-xer06.castris.com
/etc/talos_domains.txt
gruposantander.es
yahoo.com
yahoo.es
policia.es
Explicación
-
driver = manualroute: Este controlador (
driver
) especifica que el enrutamiento se realizará manualmente utilizando una lista de rutas definida por el usuario. Esto permite un control detallado sobre cómo se enrutan los correos a diferentes destinos. -
domains = lsearch;/etc/talos_domains.txt: Esta opción indica que el router debe aplicar su lógica solo a los dominios listados en el archivo
/etc/talos_domains.txt
. El métodolsearch
busca de manera lineal en el archivo para encontrar coincidencias. -
transport = castris_talos_transport: Especifica el transporte que se utilizará para los correos que coincidan con este router. En este caso, se utiliza
castris_talos_transport
, que está definido más adelante. -
condition = ${if exists{/etc/talos_routes.txt}{true}{false}}: Esta condición evalúa si el archivo
/etc/talos_routes.txt
existe. Si el archivo existe, la condición es verdadera y el router se aplica; de lo contrario, no se aplica. -
route_list = * ${lookup{$domain}nwildlsearch{/etc/talos_routes.txt}}: Define una lista de rutas para el enrutamiento manual. Usa
nwildlsearch
para buscar de manera no estricta en el archivo/etc/talos_routes.txt
y encontrar la ruta correspondiente al dominio. -
hosts_randomize = true: Esta opción indica que los hosts en la lista de rutas deben ser seleccionados de manera aleatoria, lo que puede ayudar a distribuir la carga de manera uniforme entre múltiples servidores.
-
driver = smtp: Este controlador (
driver
) especifica que el transporte utilizará el protocolo SMTP para enviar correos a los servidores de destino. -
**hosts_require_tls = ***: Indica que todas las conexiones SMTP deben utilizar TLS para garantizar la seguridad de las comunicaciones. El asterisco (
*
) significa que esta regla se aplica a todos los hosts. -
hosts_randomize = true: Similar a la opción en el router, esta opción indica que los hosts deben ser seleccionados de manera aleatoria al enviar correos, ayudando a balancear la carga entre múltiples servidores.
Aviso
Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris
Si necesitas soporte profesional puedes contratar con Castris soporte profesional.