Postfix en el servidor de desarrollo, permite que el correo se envíe a un solo dominio

11

Tenemos postfix en nuestro servidor de desarrollo, y me gustaría que solo pueda enviar correo a nuestro dominio, no a otros dominios, evitando que usuarios externos reciban accidentalmente correo de nuestro servidor de desarrollo.

Busqué en los documentos, probé varias cosas, pero aún se está enviando a todos los dominios ...

datadevil
fuente

Respuestas:

7

Los mapas de transporte (5) se utilizan para redefinir cómo se enruta el correo electrónico mediante postfix.

  • Agregue la siguiente línea a /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Agregue el nuevo archivo / etc / postfix / transport con este contenido:

    .example.com   :
    example.com    :
    *              discard:
    

Sustitúyalo example.compor el dominio al que su servidor de correo todavía debe enviar correos. Si no le interesan los subdominios, elimine la primera línea.

No olvides hacer un hash del archivo después de editarlo con postmap (1) y volver a cargar postfix para que los cambios surtan efecto:

# postmap /etc/postfix/transport && postfix reload
Carlo Arenas
fuente
7

Puede restringir fácilmente los destinatarios con smtpd_recipient_restrictions estándar o más precisamente check_recipient_access .

Simplemente cree una tabla de acceso (5)/etc/postfix/access con el siguiente contenido ( ejemplo.com es el dominio al que desea permitir enviar correo):

example.com    OK

También puede permitir solo algunas direcciones específicas:

[email protected]    OK
[email protected]    OK

No olvides hash el archivo después de editarlo con postmap (1) :

# postmap /etc/postfix/access

Ahora ponga las siguientes restricciones de destinatario en su main.cf:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

y vuelva a cargar Postfix:

postfix reload

Después de eso, pruébalo si funciona .

joschi
fuente
1
Eso funcionará para el correo enviado a través de SMTP, no a través del comando / usr / lib / sendmail y los procesos locales pueden hacer ambas cosas. Parece que la configuración de 'author_submit_users' puede usarse para bloquear el envío local con sendmail / postdrop, entonces las restricciones smtpd serán suficientes.
Jacek Konieczny
6

Entonces, si alguien tropieza con esto como lo hice yo: la respuesta es de hecho header_checks y funciona como tal:

  • Agregue la siguiente línea a /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Agregue el nuevo archivo /etc/postfix/header_checkscon este contenido:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT [email protected]
    

Sustitúyalo allowed-domain.compor el dominio al que su servidor de correo todavía debe enviar correos. Reemplace [email protected]con la dirección de correo electrónico a la que se deben redirigir todos los demás correos electrónicos.

Si necesita permitir múltiples dominios, la primera línea debería verse así:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

En lugar de redirigir, simplemente puede descartar todos los demás correos. Reemplace la segunda línea de arriba con:

/^To:.*@/   DISCARD No outgoing mails allowed

Explicación:

  • Postfix revisa los encabezados de correo uno por uno.
  • Cada línea de encabezado se compara con el header_checksarchivo línea por línea.
  • Si coincide con la primera línea ( To:contiene el dominio permitido), salta a la siguiente línea de encabezado e inicia nuevamente las comprobaciones de encabezado desde la parte superior. Como ninguna otra línea coincidirá, esto significa que el correo se entrega.
  • Si coincide con la segunda línea ( To:contiene otra dirección de correo electrónico externa), redirige el correo.
Jonas
fuente
Este problema parece haberse resuelto con esta respuesta, ¿tal vez debería marcarse como resuelto? (Al menos funcionó como un encanto para mí)
Sverre
¿qué pasa Cc:y Bcc:?
Paul Tobias