SMTP com Office365?

Hello

I try to use Office365 as SMTP for discourse. I’m already using this account for my wordpress SMTP so the account is not the problem.

When i try to send a email test, an error message appear

[Sender] 504 5.7.4 Unrecognized authentication type [AM3PR05CA0123.eurprd05.prod.outlook.com]

This is my SMTP config from app.yml

## TODO: The SMTP mail server used to validate new accounts and send notifications
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: test@example.fr
DISCOURSE_SMTP_PASSWORD: password
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: false 

Any idea how to fix the problem ?

Another config:

## TODO: The SMTP mail server used to validate new accounts and send notifications
DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: test@example.fr
DISCOURSE_SMTP_PASSWORD: password
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: true

I get the following error:

550 5.7.60 SMTP; Client does not have permissions to send as this sender

The problem is from Discourse, because I can test with swaks and it’s working

swaks --to test@example.com --from test2@example.com --server smtp.office365.com --auth login --auth-user test2@example.com -tls

Not Suggesting that You use office365 for SMTP but it seems like DISCOURSE_SMTP_AUTHENTICATION: login isn’t required … maybe try commenting that out and try again with STARTTLS set to True?

Okay the problem is now fixed. Huge mistake from my side : the email from Admin → settings → notification email was not the same from the smtp username.
Maybe a check should be made to prevent user to makes this mistake :face_with_raised_eyebrow:

but it seems like DISCOURSE_SMTP_AUTHENTICATION: login isn’t required

True, the final config

DISCOURSE_SMTP_ADDRESS: smtp.office365.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: test@example.fr
DISCOURSE_SMTP_PASSWORD: password
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_SMTP_ENABLE_START_TLS: true
4 curtidas

Discourse cannot guess what addresses the mail server will deliver for.

4 curtidas

Sadly this solution is not working for me (I also tried to escape the password). I tried it with this SMTP setting problem with Office365 - #5 by ianwhite one which is working. But not everybody gets E-Mails… :thinking:

If some people get mail then it’s the fault of office365, or their mail provider. The others should check their spam folder, though if they use a service life office365 it will silently drop mail that it thinks is spam.

I tried it with these settings. In the skipped section in the email tab I can see the following error:

554 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied;

Sounds like the address you are sending from is not one that the mail server supports. There is a line at the bottom of app.yml that week let you set the notification address. (you can set it in sure settings if you’re logged in)

2 curtidas

Or maybe they have VERP enabled so the email address is replies+{key}@example.com instead of the authorized noreply@example.com That was the issue I’ve faced in past while trying to send mails from my own mail server. It’s usually easy to fix though.

2 curtidas

Yes. This worked for me. Two things in the initial setup:

DISCOURSE_SMTP_USER_NAME:
-- AND --
DISCOURSE_NOTIFICATION_EMAIL:

needed to be set to the same email.

1 curtida

Algumas instruções atualizadas para quem está com dificuldades no Office 365 e na entrega direta

  • Vá para o Centro de administração da Microsoft
  • Clique em Configurações e depois em Domínios
  • Clique em Adicionar domínio
  • Siga as instruções na tela para adicionar a URL do seu fórum (exemplo: forum:seuslinks.com)
  • Depois de concluir as etapas acima e o DNS for verificado, você poderá criar uma caixa de entrada usando esse subdomínio
  • Clique em Usuários e depois em Usuários ativos
  • Clique em Adicionar um usuário
  • Crie a caixa de correio para o seu fórum (exemplo: noreply@forum.seuslinks.com) o domínio da caixa de correio deve corresponder ao nome do host de onde o fórum é executado
  • Clique em Licenças e aplicativos
  • Atribua a esta caixa de correio uma licença do Exchange Online (Plano 1) (10.000 mensagens diárias com limite de 30 mensagens/min) É necessário ter uma licença anexada à caixa de correio para fins de entrega direta. No momento da escrita, o custo é de US$ 4,00/mês ou R$ 5,10/CAD | Caso necessite de um limite maior ou um limite de tempo menor, existem outros planos disponíveis
  • Clique em Email e depois em Gerenciar aplicativos de email
  • Habilite “SMTP autenticado”
  • Clique em Salvar alterações
  • Vá para o seu portal do Azure
  • Navegue até o seu active directory
  • Selecione Propriedades na barra lateral esquerda, logo abaixo de Configurações do usuário
  • Selecione Gerenciar padrões de segurança
  • Defina Padrões de segurança como “desabilitado”
  • Clique em Salvar
  • Volte para Usuários > Usuários ativos
  • Clique em Autenticação multifator
  • Desabilite a MFA na caixa de correio que está sendo usada

A caixa de correio agora está pronta para ser usada pelo seu Discourse.

1 curtida

Defina os padrões de segurança como “desabilitado”

Essa era a única coisa que impedia a autenticação SMTP…
Estou quebrando a cabeça há dias…
Por que a Microsoft torna as coisas tão difíceis…?

Desabilitar as configurações de segurança pode não ser mais necessário com a imposição do MFA. Se você habilitar e, em seguida, impor o MFA em uma conta M365, poderá acessar a página de configuração de MFA da conta e adicionar uma senha de aplicativo para usar e ignorar o MFA. Consegui fazer funcionar com um usuário licenciado M365 Business Basic com imposição de MFA, autenticação SMTP e configurações de segurança habilitadas. Eu só tive que aumentar os tempos limite de abertura e leitura SMTP com duas linhas adicionais. 30 pode ser excessivo, mas 5 foi muito pouco.

Entrada app.yml funcional, a partir de setembro de 2023:

  DISCOURSE_SMTP_ADDRESS: smtp.office365.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: user@domain.com
  DISCOURSE_SMTP_PASSWORD: whatever-your-app-password-is
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  DISCOURSE_NOTIFICATION_EMAIL: user@domain.com
  DISCOURSE_SMTP_OPEN_TIMEOUT: 30
  DISCOURSE_SMTP_READ_TIMEOUT: 30
1 curtida

Este tópico foi fechado automaticamente após 2343 dias. Novas respostas não são mais permitidas.