Where Are You Coming From Today?
Follow us on:
Por Daniel Seveso
En un ambiente heterogéneo, puede ser necesario que dispositivos (Network Apliances) o servidores en plataformas no-Windows, envien mensajes utilizando SMTP a nuestra infrastructura de mensajería en Exchange. Esta funcionalidad es utilizada generalmente por aplicaciones que envian reportes via e-mail, transferencia de faxes o scanners, o alarmas de sistemas de monitoreo.
Recibimos esta pregunta regularmente de nuestros clientes y es por eso que me pareció interesante publicar cómo ponerlo en práctica de una forma segura.
Supongamos que el equipo que envia mensajes, utiliza SMTP y no es capaz de autenticarse con Active Directory. Es también un requerimiento permitir que el dispositivo envíe mensajes tanto a usuarios dentro como fuera de la organización.
Hub Transport server: 192.168.131.162 Dispositivo: 192.168.131.88
El procedimiento de configuración sería el siguiente:
Como buena práctica de seguridad, creamos un "Receive Connector" dedicado a esta función, y así evitar que sea utilizado por clientes y usuarios externos.
El siguiente comando crea un conector de nombre "RelayAnonimo" que solamente dará servicio a nuestro dispositivo (asumimos que estamos logueados al Hub Transport server donde vamos a crear el conector para todo los comandos del shell):
[PS] C:\>New-ReceiveConnector RelayAnonimo -Bindings 192.168.131.162:25 -RemoteIPRanges 192.168.131.88-192.168.131.88
El parámetro RemoteIPRanges define que direcciones IP puede conectarse al conector. También posibilita la creación del conector escuchando en el puerto 25 aunque exista otro conector escuchando en el mismo par IP/puerto.
Como medida adicional de seguiridad podríamos configurar el conector para que escuche en un puerto diferente al 25. Por supuesto el dispositivo debe permitir el cambio del puerto SMTP. El comando para que el conector escuche por ejemplo, en el puerto 525, sería:
New-ReceiveConnector RelayAnonimo -Bindings 192.168.131.162:525 -RemoteIPRanges 192.168.131.88-192.168.131.88
Esta precaución evitará que el cliente intente algún método de autenticación no deseado. (Por default el conector se crea con los siguientes métodos de autenticación habilitados: Tls, Integrated, BasicAuth, BasicAuth RequireTLS y ExchangeServer)
El comando sería:
[PS] C:\>Set-ReceiveConnector relayanonimo -AuthMechanism none
Por default, el conector estará configurado con los siguientes permisos y no acepta conexiones anónimas:
PermissionGroups : ExchangeUsers, ExchangeServers, ExchangeLegacyServers
El comando para configurar acceso anónimo y borrar el resto de los permisos es el siguiete:
[PS] C:\>Set-ReceiveConnector Relayanonimo -PermissionGroups AnonymousUsers
La configuración por default del "PermissionGroups" AnonymousUsers, otorga los siguientes permisos en el conector:
Ms-Exch-Accept-Headers-Routing
Ms-Exch-SMTP-Accept-Any-Sender
Ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
Ms-Exch-SMTP-Submit
Nota que el conjunto de permisos para usuarios "AnonymousUsers" no habilta el relay.
El permiso Ms-Exchange-SMTP-Accept-Any-Recipient que es el necesario para permitir relay de mensajes, no es otorgado por default cuando se asigna el PermissionGroups "AnonymousUsers", y por lo tanto debemos configurarlo explícitamente. Este es el comando necesario:
[PS] C:\>Get-ReceiveConnector Relayanonimo | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
El conector ya está en condiciones de aceptar conexiones anónimas y realizar "relay" a través de tu Hub Transport server.
El conjunto de propiedades relevantes del conector será el siguiente:
[PS] C:\>Get-ReceiveConnector relayanonimo |fl
AuthMechanism : None Bindings : {192.168.131.162:25} PermissionGroups : AnonymousUsers, Custom RemoteIPRanges : {192.168.131.88-192.168.131.88} RequireTLS : False EnableAuthGSSAPI : False Name : RelayAnonimo
¿Puedo realizar este procedimiento por el Exchange Management Console?
Si bien esta configuración puede realizarse casi en su totalidad usando el Exchange Management Console, la configuración de relay es posible solamente a través del Exchange command shell.
Aqui va el procedimiento paso a paso:
1) Desde el Exchange Management Console, expandes Server Configuration, Hub Transport y seleccionas el Hub transport server donde vas a configurar el conector.
2) Seleccionas del area de Actions, New Receive Connector...
3) Ingresas los datos para crear el conector
4) Abres las propiedades del conector y configuras el método de autenticación y los grupos de accesso:
5) Configuras permisos de relay anónimo desde el command shell:
Para probar tu conector, puedes usar cualquier máquina en workgroup, agregar su dirección ip en "Remote IP Address(es)" y usar el siguiente artículo para comprobar la funcionalidad del conector: Telnet to Port 25 to test SMTP Communication.
Referencias:
How to Allow Anonymous Relay on a Receive Connector
¡Hasta la próxima!