(modifié le 2 mai 2018 à 15:44)

Vous avez défini un connecteur de réception SMTP anonyme (type frontend transport) sur votre infrastructure pour autoriser les applications et scripts à envoyer des mails.

Cela fonctionne pour les emails de votre domaine mais les emails externes ne reçoivent rien. Voici la solution.

Tester avec SMTP Diag Tool

Pour tester l'envoi soit vous le faites avec telnet, soit avec le freeware SMTP Diag Tool.

Laissez tous les champs par défaut, remplir seulement From avec toto@masociete.fr et To avec coucou@domaine-externe.fr

Vous devriez obtenir ceci :

550 5.7.54 SMTP; Unable to relay recipient in non-accepted domain
Error: SMTP protocol error. 550 5.7.54 SMTP; Unable to relay recipient in non-accepted domain.
Failed to send messageForcing disconnection from SMTP server.
QUIT

J'ai cherché cette erreur dans les logs mais je n'en ai pas trouvé trace...

Autoriser l'IP source

Pour ma part je filtre sur les IP des machines émettrices sur mon connecteur de réception SMTP. Vérifiez donc d'abord que l'IP de la machine qui essaye d'émettre un email est autorisée dans l'étendue du connecteur.

Dans le cas contraire vous aurez cette erreur :

530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

Error: SMTP protocol error. 530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM.
Failed to send messageForcing disconnection from SMTP server.
QUIT

La solution

Vous devez ajouter une permission pour que les utilisateurs anonymes puissent envoyer des emails à destination de contacts externes (autre que le(s) domaine(s) géré(s) par votre infra exchange).

Tout d'abord lister vos connecteurs :

get-ReceiveConnector
Identity Bindings Enabled
-------- -------- -------
SRV-MBX1\Relay SMTP SRV-MBX1 {0.0.0.0:25} True
SRV-MBX2\Relay SMTP SRV-MBX2 {0.0.0.0:25} True

Votre connecteur SMTP anonyme doit apparaître, plusieurs fois si vous avez plusieurs serveurs car il est en théorie présent sur tous vos serveurs (si vous faites du round-robin dns notamment).

Ajouter la permission manquante pour chaque serveur :

Get-ReceiveConnector -Identity "SRV-MBX1\Relay SMTP SRV-MBX1"| Add-ADPermission -User "AUTORITE NT\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
Get-ReceiveConnector -Identity "SRV-MBX2\Relay SMTP SRV-MBX2"| Add-ADPermission -User "AUTORITE NT\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Et voilà 🙂

sources +infos : 1, 2, 3

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter