
Estoy intentando configurar exim4 como host inteligente frente al servidor de correo del ISP. Todo funciona bien, excepto algunos correos electrónicos provenientes de remitentes no válidos (probablemente spam). El ISP los rechaza con
450 4.1.8 <[email protected]>: Sender address rejected: Domain not found
lo que hace que exim smarthost vuelva a intentarlo, aumentando el tamaño de la cola innecesariamente.
Lo más cerca que logré configurar esto fue usando /etc/exim4/local_sender_callout
el archivo. Pero luego la llamada llega al ISP, que luego la rechaza con
554 5.7.1 <[email protected]>: Relay access denied
(para cualquier dirección, incluso las válidas). La configuración /etc/exim4/passwd.client
no parece funcionar en este caso...
¿Cómo puedo configurar la verificación del remitente (con o preferiblemente sin llamada) con exim smarthost?
aclaración: mi exim no es un relé abierto, ya especifica solo una lista restringida de dominios para los que acepta correos electrónicos. Luego, esos correos electrónicos se envían al host inteligente para su entrega en los buzones de correo reales. Un diagrama de la configuración probablemente se vería así.
Internet -> my exim(mx) -> ISP(smarthost) <- users accessing email via POP/IMAP
Los registros mx de mi dominio apuntan a mi servidor exim. Sin embargo, el ISP acepta correos electrónicos de mi dominio y los almacena en buzones de correo.
Respuesta1
De hecho, estás configurando un MX frontal con un conjunto de filtros más restrictivo y más profundo hacia el destino final. La mejor manera de abordar esto es ser al menos igual de restrictivo al principio.
Sin embargo, como tiene un host inteligente, envía correos electrónicos para "cualquier dominio" al host inteligente. Esto combina mal con la verificación de la validez del dominio: en algún lugar de su ACL definida para los comandos RCPT, debería haber una require verify = sender
que garantice que Exim tenga un método para enviar correo electrónico al dominio del remitente antes de que acepte el mensaje.
Como siempre está activo, recomiendo colocar un enrutador adicional directamente antes de su enrutador smarthost. Suponiendo que el smarthost tiene domains = ! +local_domains
y no_more
, luego agréguelo no_verify
al enrutador smarthost y antes de él, inserte este enrutador:
remote_dns_verify:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
# ignore_target_hosts = +some_hostlist_matching_rfc1918_and_so_on
same_domain_copy_routing
verify_only
no_more
Con esto, elverificaciónLa ruta no utilizará el host inteligente, por lo que ya no tendrá "una ruta para todo". La verificación solo podrá enrutar dominios remotos que tengan DNS, por lo que ya no aceptará correos electrónicos que su ISP rechace por no ser enrutables.
Después de eso, consideraría establecer algunas reglas de reintento que coincidan con errores remotos específicos para dejar de reintentar correos que el ISP ha rechazado. Verhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch-retry_configuration.htmlpara más.