Rechazar correo electrónico si "rcpt to" no coincide con Relay_domain - Postfix

Rechazar correo electrónico si "rcpt to" no coincide con Relay_domain - Postfix

Mi servidor de correo aparece actualmente en mxtoolbox como Open Relay.

Objetivo: Permitir la conexión SMTP solo cuando RCPT TO:dice ejemplo.com

¿Qué cambios debo hacer en él para que rechace la conexión inmediatamente cuando sepa que RCPT TO:no es así example.com? Actualmente, recibo spam y rechazo correos electrónicos basados ​​en check_recipient_access.

Un correo electrónico de prueba:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 <HOSTNAME> ESMTP Postfix (Debian/GNU)
ehlo test.com
250-<HOSTNAME>
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

Situación actual:

mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok

Esperando:

mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
REJECT

y

mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
250 2.1.5 Ok

La salida depostconf -n

user@hostname:~$ sudo postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
header_checks = pcre:/etc/postfix/header_checks
inet_interfaces = loopback-only
mailbox_size_limit = 0
mydestination = <hostname>, localhost.<domain>, localhost
mydomain = example.com
myhostname = <hostname>
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.32.247.0/24
myorigin = <hostname>
readme_directory = no
recipient_delimiter = +
relay_domains = example.com
relayhost = [10.32.247.125]:10000
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_helo_required = yes
smtpd_recipient_restrictions = reject_unauth_destination, reject_unknown_recipient_domain, permit
smtpd_sender_restrictions = check_recipient_access pcre:/etc/postfix/sender_access,  reject_unauth_pipelining,  reject_non_fqdn_recipient,  reject_unknown_recipient_domain,  permit_mynetworks,  reject_unauth_destination,  permit
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

Archivo de registro de correo en modo detallado:http://pastebin.com/9q7f5DFp

Mi escenario actual:

Correo electrónico --> Postfix acepta --> Comprueba encabezados --> Descarta si no pertenece a ejemplo.com

Esperado:

Correo electrónico --> Postfix comprueba RCPT TO: == ejemplo.com --> Lo rechaza si no lo es y no lo procesa más

Respuesta1

Aquí la línea clave de su mail.log

NOQUEUE: descartar: RCPT de localhost[127.0.0.1]: : La dirección del destinatario desencadena la acción DESCARTAR; de= a= proto=ESMTP helo=

En postfix, DISCARDsignifica que postfix pretende aceptar el correo electrónico pero en realidad lo enviará a /dev/null (en otros medios, descartará el correo electrónico). Entonces, cuando consulte con telnet, postfix responderá "OK, lo acepto".

Respuesta2

La definición de retransmisión abierta es un servidor smtp que permite que cualquier persona que no esté físicamente vinculada a su red envíe correo a través de él. Por lo tanto, cualquier persona en su red interna debería poder enviar correo a través del servidor a otros servidores SMTP sin autenticación. Sin embargo, no deseas extender esa capacidad al mundo. Normalmente, todas las declaraciones de permiso se realizan primero y luego rechazan_unauth_destination. No he visto que se haga al revés, así que no estoy seguro de si funciona. Sin embargo, estás rechazando las cosas incorrectas en tu configuración. return_unknown_recipient_domain realmente no se aplica aquí, es una restricción del remitente. rechazo_unauth_destination no hace nada aquí ya que está permitiendo todo con la declaración de permiso. Es por eso que los permisos generalmente están antes de las declaraciones de rechazo para que sepa qué rechazar. Al menos eso es lo que tiene sentido para mí.

smtpd_recipient_restrictions = permitir_misredes, permiso_sasl_authenticated, rechazar_unauth_destination

Lo que esto quiere decir es que permitirá cualquier red definida en mynetworks y permitirá a cualquier usuario que se haya autenticado correctamente con una conexión SSL/TLS y rechazará todo lo demás. es decir, NO ES UN RELÉ ABIERTO.

información relacionada