Probleme bei der Konfiguration von SMTP in Discourse mit Azure Communication Service

Hallo zusammen,

ich habe mich mit der Einrichtung von SMTP auf meiner Discourse-Installation herumgeschlagen, und es war eine ziemliche Herausforderung. Ich habe zahlreiche Beiträge durchsucht, wie z. B. diesen, aber ohne Erfolg.

Hier ist die Sachlage: Ich vermute, dass meine Probleme mit dem Format und der Länge des Benutzernamens und des Passworts zusammenhängen, die ich verwenden muss. Ich nutze Azure Communication Service für meinen SMTP-Server, der eine spezifische Konfiguration mit einer Azure Entra App (früher Azure Active Directory) erfordert.

Um auf den Punkt zu kommen, das Benutzernameformat sieht ungefähr so aus (keine tatsächlichen Anmeldedaten, nur ein Beispiel):

<Name der Azure Communication Services-Ressource>.<ID der Entra-Anwendung>.<ID des Entra-Mandanten>

Hier ist ein Beispiel: my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031

Weitere Details finden Sie unter diesem Link.

In der Zwischenzeit muss das Passwort einem von Azure generierten geheimen Format entsprechen, wie zum Beispiel:

b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M

Nun habe ich diese Einrichtung mit ähnlichen Anmeldedaten in C# reibungslos zum Laufen gebracht.

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}.");
        }
    }
}

Wenn ich jedoch versuche, diese Einstellungen in Discourse zu implementieren, beginnen die Dinge, sich zu verhalten. Hier ist, was ich konfiguriert habe:

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

Trotz dieser Einrichtung erhalte ich weiterhin eine Authentifizierungsfehlermeldung, wie im Log-Snippet angegeben:

Job exception: Net::SMTPAuthenticationError

Ich habe experimentiert, indem ich den Benutzernamen und das Passwort auf verschiedene Weise in Anführungszeichen gesetzt habe – einfache Anführungszeichen, doppelte Anführungszeichen oder sie sogar ganz weggelassen habe. Aber das Ergebnis bleibt dasselbe.

Gibt es irgendwelche Hinweise oder Vorschläge, was ich sonst noch versuchen könnte?

1 „Gefällt mir“

Hallo, ich habe das gleiche Problem mit Azure Communication Service.

Laut den Microsoft Docs könnte es daran liegen, dass Microsoft Entra von der Anwendung unterstützt werden muss, was Discourse leider nicht tut.

In der Zwischenzeit freue ich mich auch über andere verfügbare Methoden.

Ich bin auf dasselbe Problem gestoßen und habe bei einer Websuche dieses Thema gefunden. Es scheint, dass (genau wie bei den Microsoft 365-E-Mail-Servern, bevor diese die passwortbasierte Authentifizierung abgeschafft haben) nur AUTH LOGIN unterstützt wird, nicht AUTH PLAIN, was standardmäßig bei Discourse zum Zeitpunkt der Erstellung dieses Dokuments der Fall ist.

Wenn Sie DISCOURSE_SMTP_AUTHENTICATION: login in der Container-Konfiguration setzen, funktioniert die E-Mail. Bemerkenswert ist auch, dass standardmäßig nur die E-Mail-Adresse DoNotReply@domain.example als Absender erlaubt ist. Wenn Sie diese nicht festlegen, werden Ihre E-Mails mit der Meldung „550 5.3.5 Email sender’s username is invalid“ abgelehnt.

4 „Gefällt mir“

Das scheint jetzt behoben zu sein