Exim: cambie la dirección del remitente cuando envíe correos fuera de la red local


8

Tenemos una configuración exim en funcionamiento en un sitio, donde los usuarios pueden enviar y recibir correos. Estamos tratando de configurar un servidor para enviar algunas advertencias y errores usando el correo electrónico a una dirección que está fuera de la red local.

El problema es:

El programa que envía los correos los envía utilizando el nombre de usuario con el que se ejecuta y el nombre de host local del servidor. Esto hace que los correos tengan un remitente de formato: myapp@myserver.mydomain. Exim envía estos correos al servidor SMTP del ISP, que rechaza los correos ya que tienen un remitente ilegal o no verificable (la dirección interna).

Estoy pensando que debería configurar exim para reescribir el remitente cuando:

  • el dominio del remitente está en la red local
  • el dominio del receptor está fuera de la red local

Intenté configurar algún tipo de reescritura en la configuración de exim, pero no logré que funcionara. Mostraría lo que he intentado, pero se me acabó el tiempo en la última visita al sitio, y tuve que volver a la versión original, perdiendo todos los cambios que intenté.

Respuestas:


9
begin rewrite
myapp@myserver.mydomain   legal.user@myserver.mydomain   SFfrs

Las banderas tienen los siguientes significados:

  1. S - Realice todas las reescrituras en tiempo SMTP. Esto significa que todos los siguientes indicadores se realizan inmediatamente a medida que ingresan los datos a los que se aplican, no se retrasan hasta más tarde.
  2. F - Reescribe el sobre del campo.
  3. f - Reescribe el campo de encabezado De:
  4. r - Reescribe el campo de encabezado Responder a.
  5. s: reescribe el remitente: campo de encabezado.

Lea el Capítulo 31 de la Especificación Exim para obtener más detalles sobre la reescritura de mensajes


1
Así es como lo puse a trabajar, excepto: Tiene que haber un ^principio de la regla, a Sexcepción de una
expresión regular

1
s debería ser " Sender:" no encabezado " Sender-To:" (Y es un cambio demasiado pequeño para editar la publicación)
Gert van den Berg

11

El archivo /etc/email-addressesdebería manejar el problema. Esta es una parte estándar de la distribución Exim. Deberá configurar un registro para cada usuario local que envíe un correo electrónico.

Prueba una línea que te /etc/email-addressesguste:

 myapp:   donotreply@example.com

En su servidor MX agregue un alias como:

 donotreply:    :blackhole:

Use un Reply-to:encabezado para permitir que el destinatario responda al mensaje.

El archivo /etc/email-addressesutiliza el siguiente código de reescritura, que debe estar al comienzo de la rewritesección del archivo de configuración.

*@+local_domains "${lookup{${local_part}}lsearch{/etc/email-addresses}\
                  {$value}fail}" Ffrs

/etc/email-addressesno existe en mi servidor ¿Puedo crearlo o eso indica que falta algo?
Esa Varemo

@EsaVaremo Grep su archivo de configuración para email-addresses, o verifique su archivo de configuración para la sección de reescritura. Es posible que esto no se haya configurado en su distribución.
BillThor

Probé grep, locatey miré por unos man-pages, pero no encontró nada. ¿Debería definirse el archivo exim.conf?
Esa Varemo

@EsaVaremo La línea al final de mi respuesta debe estar en la sección de reescritura de exim.conf. Si falta, agréguelo. Asegúrese de que la variable local_domainsincluya su dominio.
BillThor

Noté tu edición un tiempo después de haber hecho mi último comentario. Sin embargo, por alguna razón no conseguí que eso funcionara, así que fui con la otra respuesta, ya que se me estaba acabando el tiempo. No dudo que esto sea correcto, probablemente había mal escrito / configurado algo ...
Esa Varemo

1

/etc/email-addresseses útil cuando solo necesita asociar una dirección de correo electrónico por nombre de usuario. Sin embargo, si su usuario necesita enviar correos electrónicos con varias direcciones, deberá modificarlas /etc/email-addressescada vez e inevitablemente terminará usando la dirección incorrecta.

Otro enfoque es enviar el correo electrónico utilizando el exim4comando y su -fopción:

$ cat email|/usr/sbin/exim4 -f myapp@example.com recipient@example.com

Tenga en cuenta que para que la -fopción funcione, necesita que su usuario esté en los usuarios de confianza de exim o exim para aceptarlo como un remitente permitido no confiable.

En mi caso, este último era el predeterminado, gracias a este comodín en /etc/exim4/conf.d/main/02_exim4-config_options :

untrusted_set_sender = *

La otra solución es agregar la siguiente línea /etc/exim4/conf.d/main/00_local_settings(suponiendo la configuración dividida de exim y crearla si aún no existe):

MAIN_TRUSTED_USERS = yourusername

Ambas opciones necesitan una recarga de la configuración de exim. Bajo Debian:

# dpkg-reconfigure exim4-config
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.