Difficulté à configurer SMTP dans Discourse avec Azure Communication Service

Salut à tous,

J’ai eu du mal à configurer le SMTP sur mon installation Discourse, et ce fut un véritable défi. J’ai consulté de nombreux posts comme celui-ci sans succès.

Voici le problème : je suspecte que mes difficultés sont liées au format et à la longueur du nom d’utilisateur et du mot de passe que je suis censé utiliser. J’utilise Azure Communication Service pour mon serveur SMTP, qui exige une configuration spécifique impliquant une application Azure Entra (anciennement Azure Active Directory).

Pour aller droit au but, le format du nom d’utilisateur ressemble à ceci (pas les identifiants réels, juste un exemple) :

<Nom de la ressource Azure Communication Services>.<ID de l'application Entra>.<ID du locataire de l'application Entra>

Voici un exemple : my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031

Pour plus de détails, consultez ce lien.

Pendant ce temps, le mot de passe doit respecter un format de secret généré par Azure, tel que :

b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M

Maintenant, j’ai réussi à faire fonctionner cette configuration en C# avec des identifiants similaires.

private static void SendMail()
{
    string smtpAuthUsername = "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031";
    string smtpAuthPassword = "a~C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M";

    string sender = "DoNotReply@my-domain.com";
    string recipient = "admin@my-domain";
    string subject = "You a chosen";
    string body = "One gorgeous body";
    string smtpHostUrl = "smtp.azurecomm.net";

    using (var client = new SmtpClient(smtpHostUrl))
    {
        client.Port = 587;
        client.Credentials = new NetworkCredential(smtpAuthUsername, smtpAuthPassword);
        client.EnableSsl = false;

        var message = new MailMessage(sender, recipient, subject, body);

        try
        {
            client.Send(message);
            Console.WriteLine("The email was successfully sent using Smtp.");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Smtp failed with the exception: {ex.Message}.");
        }
    }
}

Cependant, lorsque j’essaie d’implémenter ces paramètres dans Discourse, les choses commencent à mal tourner. Voici ce que j’ai configuré :

DISCOURSE_SMTP_ADDRESS: smtp.azurecomm.net
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: "my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031"
DISCOURSE_SMTP_PASSWORD: "b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M"
DISCOURSE_SMTP_ENABLE_START_TLS: true
DISCOURSE_SMTP_DOMAIN: my-domain.com
DISCOURSE_NOTIFICATION_EMAIL: DoNotReply@my-domain.com

Cependant, malgré cette configuration, je continue de recevoir une erreur d’authentification, comme le montre l’extrait de log :

Job exception: Net::SMTPAuthenticationError

J’ai expérimenté en entourant le nom d’utilisateur et le mot de passe de différentes manières : guillemets simples, guillemets doubles, ou même en les laissant de côté. Mais le résultat reste le même.

Auriez-vous des pistes ou des suggestions sur ce que je pourrais essayer d’autre ?

1 « J'aime »

Bonjour, j’ai rencontré le même problème avec Azure Communication Service.

Selon la documentation Microsoft, je pense que Microsoft Entra doit être pris en charge par l’application, mais Discourse ne le prend malheureusement pas en charge.

En attendant, j’attends avec impatience toute autre méthode disponible.

J’ai rencontré le même problème et j’ai trouvé ce sujet lors d’une recherche sur le Web. Il semble que (tout comme avec les serveurs de messagerie Microsoft 365 avant qu’ils n’abandonnent l’authentification basée sur le mot de passe) seul AUTH LOGIN soit pris en charge, et non AUTH PLAIN qui est la valeur par défaut dans Discourse au moment de la rédaction.

Définir DISCOURSE_SMTP_AUTHENTICATION: login dans la configuration du conteneur permet au courrier électronique de fonctionner. Il convient également de noter que par défaut, le seul e-mail « de » autorisé est le DoNotReply@domain.example par défaut. Si vous ne le définissez pas, vos e-mails seront rejetés avec le message « 550 5.3.5 Email sender’s username is invalid ».

4 « J'aime »

On dirait que c’est maintenant corrigé