# Dificuldade em configurar SMTP no Discourse com Azure Communication Service

**URL:** https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511
**Category:** Self-hosting
**Tags:** email
**Created:** [Janeiro 4, 2024, 2:16pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511 "2024-01-04T14:16:42Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![gichamba](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gichamba/32/103516_2.png) [@gichamba](https://meta.discourse.org/u/gichamba)
#### Post date: [Janeiro 4, 2024, 2:16pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/1 "2024-01-04T14:16:42Z")

</div>

Olá a todos,

Tenho tido dificuldades em configurar o SMTP na minha instalação do Discourse, e tem sido um desafio considerável. Já explorei vários posts como [este](https://meta.discourse.org/t/troubleshoot-email-on-a-new-discourse-install/16326) sem sucesso.

Aqui está a situação: suspeito que meus problemas estejam ligados ao formato e comprimento do nome de usuário e senha que sou obrigado a usar. Estou utilizando o Azure Communication Service para meu servidor SMTP, que exige uma configuração específica envolvendo um Azure Entra App (anteriormente Azure Active Directory).

Para ir direto ao ponto, o formato do nome de usuário se parece com isto (não são credenciais reais, apenas um exemplo):

`<Nome do Recurso do Azure Communication Services>.<ID do Aplicativo Entra>.<ID do Tenant do Aplicativo Entra>`

Aqui está um exemplo: `my-communication-service.7d8233e0-c230-4468-a2de-1d03aa64bb71.49ba4f9c-3b18-43df-b5fd-5e203ba6e031`

Para mais detalhes, confira este [link](https://learn.microsoft.com/en-us/entra/identity-platform/howto-create-service-principal-portal).

Enquanto isso, a senha precisa aderir a um formato de segredo gerado pelo Azure, como:

`b_C8Q~WjHH~MtFQptMj8wR1KroOZYigGy3A3Zc5M`

Agora, eu consegui configurar isso funcionando perfeitamente em C# com credenciais semelhantes.

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

```

No entanto, quando tento implementar essas configurações no Discourse, as coisas começam a dar errado. Aqui está o que configurei:

```yaml
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

```

No entanto, apesar dessa configuração, continuo recebendo um erro de autenticação, conforme o trecho do log:

`Job exception: Net::SMTPAuthenticationError`

Eu experimentei encapsular o nome de usuário e a senha de várias maneiras — aspas simples, aspas duplas ou até mesmo deixá-los de fora. Mas o resultado permanece o mesmo.

Qualquer dica ou sugestão sobre o que mais eu poderia tentar seria muito apreciada.

---

<div class="post-metadata">

### Author: ![ecomter](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ecomter/32/362913_2.png) [@ecomter](https://meta.discourse.org/u/ecomter)
#### Post date: [Março 3, 2024, 7:06am UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/2 "2024-03-03T07:06:14Z")

</div>

Olá, encontrei o mesmo problema com o Azure Communication Service.

De acordo com a Microsoft Docs, acho que pode ser que o Microsoft Entra precise ser suportado pelo aplicativo, mas o Discourse infelizmente não suporta isso.

Enquanto isso, estou ansioso por quaisquer outros métodos disponíveis também.

---

<div class="post-metadata">

### Author: ![ntauthority](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ntauthority/32/484750_2.png) [@ntauthority](https://meta.discourse.org/u/ntauthority)
#### Post date: [Janeiro 26, 2025, 1:35pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/3 "2025-01-26T13:35:16Z")

</div>

Encontrei o mesmo problema e descobri este tópico em uma pesquisa na web, e parece que (assim como com os servidores de e-mail do Microsoft 365 antes de eles desativarem a autenticação baseada em senha) apenas AUTH LOGIN é suportado, não AUTH PLAIN que [é o padrão](https://github.com/discourse/discourse/blob/d2efdf5282a868d80e916caaeb51d40d1ea256a2/config/discourse_defaults.conf#L83) no Discourse no momento em que este texto foi escrito.

Definir `DISCOURSE_SMTP_AUTHENTICATION: login` na configuração do contêiner faz o e-mail funcionar. Vale notar também que, [por padrão](https://davebarr.dev/550-5.3.5-email-senders-username-is-invalid/), o único e-mail ‘de’ permitido é o padrão `DoNotReply@domain.example` - se você não definir isso, seus e-mails serão rejeitados com “550 5.3.5 Email sender’s username is invalid”.

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [Outubro 21, 2025, 7:40am UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/4 "2025-10-21T07:40:15Z")

</div>

Parece que isso foi corrigido agora

> <https://github.com/discourse/discourse/commit/9125f85e697dfb7797d6d79a2f66e0032ed168dd>
>
> Per \[this
> topic\](https://meta.discourse.org/t/struggling-to-configure-smtp-in-di…scourse-with-azure-communication-service/290511), Azure communication service requires the \`login\` authentication method
> on their SMTP service.

---

<div class="post-metadata">

### Author: ![kyfrankie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kyfrankie/32/538187_2.png) [@kyfrankie](https://meta.discourse.org/u/kyfrankie)
#### Post date: [Janeiro 9, 2026, 2:42pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/5 "2026-01-09T14:42:02Z")

</div>

> [@gichamba](#):
>
> Job exception: Net::SMTPAuthenticationError

Eu também tenho tentado configurá-lo seguindo a sugestão aqui. No entanto, eu também não consegui fazê-lo funcionar, mas não consigo encontrar nenhum log sobre o problema de SMTP. Você sabe qual arquivo de log devo procurar. Obrigado.

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Janeiro 9, 2026, 4:20pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/6 "2026-01-09T16:20:21Z")

</div>

Você vai querer verificar o URL `/logs`.

Se você estiver depurando, pode ser mais produtivo tentar a tarefa `rake 'emails:test[seu_email]'`.

Você também pode definir variáveis de ambiente para tentar coisas diferentes sem precisar reconstruir o contêiner, por exemplo:

```plaintext
$ DISCOURSE_SMTP_PORT=587 DISCOURSE_SMTP_USER_NAME=bilbo DISCOURSE_SMTP_PASSWORD=ring rake emails:test'[frodo@shire.net]'

```

---

<div class="post-metadata">

### Author: ![kyfrankie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kyfrankie/32/538187_2.png) [@kyfrankie](https://meta.discourse.org/u/kyfrankie)
#### Post date: [Janeiro 9, 2026, 5:00pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/7 "2026-01-09T17:00:43Z")

</div>

Estou usando a imagem discourse/discourse 2025.12.0. Curiosamente, mesmo que eu não defina DISCOURSE\_SMTP\_PASSWORD, o production.log não exibe nenhum erro, como se a tarefa de registro do usuário administrador não fosse chamada. O único log disponível é

```plaintext
Started POST “/finish-installation/register” for xxx at 2026-01-09 16:48:11 +0000
Processing by FinishInstallationController#register as HTML
Parameters: {“authenticity_token”=>“xxx”, “email”=>“xxx”, “username”=>“xxx”, “password”=>“[FILTERED]”, “commit”=>“Register”}
Redirected to xxx

Completed 302 Found in 489ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 131.6ms)

```

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Janeiro 9, 2026, 5:01pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/8 "2026-01-09T17:01:39Z")

</div>

Você está procurando por `https://whateveryoursiteis.com/logs`

---

<div class="post-metadata">

### Author: ![kyfrankie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/kyfrankie/32/538187_2.png) [@kyfrankie](https://meta.discourse.org/u/kyfrankie)
#### Post date: [Janeiro 9, 2026, 5:45pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/10 "2026-01-09T17:45:45Z")

</div>

Edição, problema resolvido. O problema era que a variável de ambiente do nome de usuário deveria ser `DISCOURSE_SMTP_USER_NAME` em vez de `DISCOURSE_SMTP_USERNAME`.

A configuração abaixo funciona:

```plaintext
DISCOURSE_SMTP_USER_NAME: <Nome de usuário SMTP do serviço de comunicação do Azure (não precisa ser <Nome do recurso do Azure Communication Services>.<ID do Aplicativo Entra>.<ID do Tenant do Aplicativo Entra>
DISCOURSE_SMTP_PASSWORD: xxx
DISCOURSE_SMTP_DOMAIN: seu domínio
DISCOURSE_NOTIFICATION_EMAIL: NãoResponda@seudominio
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: true

```

---

<div class="post-metadata">

### Author: ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)
#### Post date: [Janeiro 9, 2026, 5:49pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/11 "2026-01-09T17:49:07Z")

</div>

> [@kyfrankie](#):
>
> O site ainda não foi totalmente configurado com a verificação de e-mail do administrador

você pode usar `rake admin:create` a partir do contêiner para criar uma conta diretamente

Além disso, acabei de saber que a maneira como lidamos com variáveis de ambiente mudou - não as verificamos mais, exceto na inicialização do contêiner.

Se você quiser testar um valor diferente, precisa editar `/var/www/discourse/config/discourse.conf`

> [@kyfrankie](#):
>
> O problema era que a variável de ambiente do nome de usuário deveria ser `DISCOURSE_SMTP_USER_NAME` em vez de `DISCOURSE_SMTP_USERNAME`

👍

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [Fevereiro 8, 2026, 5:49pm UTC](https://meta.discourse.org/t/struggling-to-configure-smtp-in-discourse-with-azure-communication-service/290511/12 "2026-02-08T17:49:42Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
