Difficoltà a configurare SMTP in Discourse con Azure Communication Service

Ciao a tutti,

Sto lottando con la configurazione di SMTP sulla mia installazione di Discourse e si è rivelata una sfida non indifferente. Ho esaminato numerosi post come questo senza successo.

Ecco il succo: sospetto che i miei problemi siano legati al formato e alla lunghezza dello username e della password che sono tenuto a utilizzare. Sto utilizzando Azure Communication Service per il mio server SMTP, che richiede una configurazione specifica che coinvolge un’App Azure Entra (precedentemente Azure Active Directory).

Per arrivare al dunque, il formato dello username è simile a questo (non credenziali reali, solo un esempio):

<Nome risorsa Azure Communication Services>.<ID applicazione Entra>.<ID tenant applicazione Entra>

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

Per maggiori dettagli, consulta questo link.

Nel frattempo, la password deve aderire a un formato di segreto generato da Azure, come ad esempio:

b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M

Ora, ho configurato questo sistema con successo in C# con credenziali simili.

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

Tuttavia, quando provo a implementare queste impostazioni in Discourse, le cose iniziano a funzionare male. Ecco cosa ho configurato:

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

Tuttavia, nonostante questa configurazione, continuo a ricevere un errore di autenticazione come da snippet di log:

Job exception: Net::SMTPAuthenticationError

Ho sperimentato racchiudendo lo username e la password in vari modi: virgolette singole, virgolette doppie o anche omettendoli del tutto. Ma il risultato rimane lo stesso.

Qualsiasi suggerimento o consiglio su cos’altro potrei provare sarebbe molto apprezzato.

1 Mi Piace

Ciao, ho riscontrato lo stesso problema con Azure Communication Service.

Secondo Microsoft Docs, penso che potrebbe essere che Microsoft Entra debba essere supportato dall’applicazione, ma Discourse purtroppo non lo supporta.

Nel frattempo, sono anche alla ricerca di altri metodi disponibili.

Ho riscontrato lo stesso problema e ho trovato questo argomento in una ricerca sul web, e sembra che (proprio come con i server di posta elettronica di Microsoft 365 prima che eliminassero l’autenticazione basata su password) sia supportato solo AUTH LOGIN, non AUTH PLAIN che è l’impostazione predefinita in Discourse al momento della scrittura.

Impostare DISCOURSE_SMTP_AUTHENTICATION: login nella configurazione del container fa funzionare l’email. Va notato, inoltre, che per impostazione predefinita l’unica email ‘from’ consentita è quella predefinita DoNotReply@domain.example - se non la imposti, le tue email verranno rifiutate con "550 5.3.5 Email sender’s username is invalid".

4 Mi Piace

Sembra che ora sia stato risolto