Solução de problemas do Amazon AWS SES para envio de e-mail via SMTP

Estou com dificuldades para migrar do SendGrid para o Amazon SES.

Alguém poderia gentilmente compartilhar suas configurações do app.yml ou confirmar se as minhas estão corretas?

  ## TODO: O servidor SMTP usado para validar novas contas e enviar notificações
  DISCOURSE_SMTP_ADDRESS: email-smtp.eu-west-2.amazonaws.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: xxxxxxx
  DISCOURSE_SMTP_PASSWORD: "xxxxxxxxxx"
  DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opcional, padrão true)
  DISCOURSE_SMTP_AUTHENTICATION: login

O parâmetro de autenticação está correto aqui?

Faltou algo?

O domínio foi verificado no SES, então você não precisa do parâmetro de autenticação SMTP.

Além disso, talvez seja necessário retirar sua conta do SES do modo sandbox, caso ainda não tenha feito isso, e solicitar um aumento de limite. A condição de sandbox aplica-se por região.

Sim, confirmado: o domínio está verificado, em modo de produção e os limites de taxa foram aumentados.

Então, tudo o mais parece correto? :thinking:

Sim, as outras configurações parecem corretas para mim.

E está tudo bem se a senha estiver entre aspas?

Sim, isso também deve estar tudo bem.

Hmm…

Existe alguma maneira de testar pela linha de comando?

Também recompilei meu aplicativo a cada vez.

Obrigado pelas respostas rápidas :+1:t2:

E isso também parece correto? (Comentei a linha de autenticação como você sugeriu)

Ainda não faço ideia do motivo pelo qual nenhum e-mail está sendo enviado via AWS SES.

Quando envio um e-mail de teste pela página de administração do nosso Discourse, ele simplesmente diz ‘enviado’. Tentar uma solicitação de recuperação de senha também segue os procedimentos corretamente, mas nenhum e-mail chega.

Acho que o SES não gera logs, então não consigo verificar se ele está recebendo os e-mails.

A única coisa que pode estar causando o problema é que nosso endereço de resposta está usando uma conta do gmail.com, em vez do domínio do nosso site.

Alguém já se deparou com essa combinação/cenário antes?

Esse é o endereço de e-mail que aparecerá na linha “De”. Ele precisa ser um endereço no domínio do qual o SES enviará. O SES não enviará e-mails que finge estar vindo do Gmail. Você não tem controle sobre o gmail.com, então o SES não enviará e-mails com isso na linha “De”. notification_email deve ser algo@seudominioverificado

Eu estava me perguntando se poderia ser algo assim.

Minha configuração atual do SendGrid funciona há anos e possui o seguinte:

Você está dizendo que o que estou tentando fazer simplesmente não é possível no SES por causa do endereço de resposta no domínio gmail.com?

O e-mail de notificação é o que está na linha ‘De’, e sim, tenho quase certeza de que esse é o seu problema. Você tentou alterá-lo?

Eu também uso o SES e funciona bem para mim. A única diferença que consigo ver em comparação é que a linha DISCOURSE_SMTP_AUTHENTICATION: login não existe na minha configuração. Além disso, DISCOURSE_SMTP_ENABLE_START_TLS: true e DISCOURSE_SMTP_PORT: 587 estão ambos comentados, embora isso não deva fazer diferença.

As únicas 3 linhas que modifico no app.yml são o endereço SMTP, o nome de usuário e a senha. O resto permanece comentado como está em uma instalação nova, usando os valores padrão. Após a reconstrução, preciso apenas garantir que a configuração do site notification email esteja definida para um endereço que use um domínio verificado no SES. Eu não uso aspas na senha mais, mas minhas instalações mais antigas usavam e funcionavam bem de qualquer maneira.

Sim, vale a pena tentar alterar o endereço de resposta para usar um endereço com o domínio verificado do SES, conforme recomendado na resposta acima, apenas para testar se isso fará com que o envio funcione corretamente.

Se não funcionar, eu verificaria se seu host está bloqueando algumas portas e talvez conferisse novamente se as credenciais do SES foram geradas corretamente. Vi que você confirmou acima que seu domínio está verificado no SES.

Obrigado pelas informações detalhadas @markersocial :+1:t2:

Posso perguntar, o endereço de e-mail de “responder a” está em um domínio diferente do endereço “De”? :thinking:

Sem problemas :slight_smile:

O endereço de resposta está no mesmo domínio que o domínio de origem, sim, mas em alguns casos não é o mesmo subdomínio (ainda é o mesmo domínio raiz, porém). Ambos os casos funcionam bem para mim.

Tenho certeza de que você percebeu isso → você verificou o endereço de e-mail de saída que o Discourse usa para enviar? Se for notify@seudominioverificado, você precisa ir ao SES, na segunda linha em ‘Gerenciamento de Identidade’, adicionar e depois verificar o e-mail de envio. Nada será enviado até que você faça isso. Sem alarmes, sem sirenes, apenas nada acontece.

Ter uma resposta do Gmail é ótimo. Foi isso que fiz. Então, os e-mails de autorização dos membros estavam sendo bloqueados como spam porque o campo De e o campo Responder não coincidiam.

Eventualmente, escrevi um simples AWS Lambda (levou uma semana para aprender como fazer) que encaminha e-mails recebidos para a API do Discourse. Muito limpo. Sem POSTIX.