Configurar mail-receiver, mas agora o site não envia mais e-mails?

Hm. Eu tenho a mesma configuração Vultr que @MathiasFoster e @jryans aqui, e encontrei o mesmo problema (Net::OpenTimeout). ufw allow https fez meu e-mail de entrada funcionar.

Mas agora o site não envia nenhum e-mail. Antes de configurar o e-mail de entrada, o e-mail de saída estava funcionando bem.

Não tenho nada complicado acontecendo:
notification_email é admin@tasat.org.
O e-mail de saída usa smtp.titan.email na Hostinger.

mail_receiver.yml contém:

`MAIL_DOMAIN` = forum.tasat.org
`DISCOURSE_MAIL_ENDPOINT` = https://forum.tasat.org/admin/email/handle_mail
`DISCOURSE_API_KEY` = [redacted]

Em e-mails pulados, estou vendo \u003creplies+verp-14c9cc6eb915b08d4983c90c744ba4b4@forum.tasat.org\u003e: Endereço do remetente rejeitado: não pertence ao usuário admin@tasat.org

Sou novo em fazer e-mails. Devo remover forum. das strings do mail_receiver.yml e tornar "replies@tasat.org" um alias de envio de "admin@tasat.org"..?

O receptor de e-mail é independente do Discourse e do envio de e-mails, ele atua apenas como um servidor de e-mail simples configurado apenas para receber e-mails, usando a API do Discourse para enviar esses e-mails para o Discourse.

A única coisa que consigo pensar na configuração que pode afetar o envio é definir reply by email address, embora isso deva apenas definir Reply-To nos e-mails de saída e não afetar o endereço do remetente.

Apenas para confirmar, parece que você tem estes (entre outros) em app.yml:

DISCOURSE_SMTP_USER_NAME: admin@tasat.org
DISCOURSE_NOTIFICATION_EMAIL: admin@tasat.org

E este em reply by email address:

replies+%{reply_key}@forum.tasat.org

Está correto?

Se sim, os e-mails de notificação que não aceitam respostas ainda funcionam? Acredito que a verificação de e-mail é um exemplo disso, então você poderia tentar criar uma conta e ver se esse e-mail é enviado com sucesso.

Com essa configuração, o que deveria acontecer para e-mails que podem aceitar respostas é que o e-mail enviado usa:
From: admin@tasat.org (também endereço do remetente)
Reply-To: replies+abc123@forum.tasat.org

Normalmente, o Reply-To não é tratado como parte das informações do remetente, ele apenas fornece um endereço padrão To a ser usado quando as pessoas respondem, mas talvez a Hostinger o trate como tal. Você pode adicionar um alias de envio para replies@forum.tasat.org.

1 curtida

O que acontece se você tentar enviar um e-mail de teste para um endereço que você obtém em https://www.mail-tester.com/?

Não consigo ver como mudar ufw allow https poderia afetar o recebimento de e-mails.

Pode ser que a vultr não esteja permitindo conexões de saída para a porta 25. Isso explicaria o envio de e-mails não funcionando.

O envio e o recebimento de e-mails são em grande parte separados um do outro.

Acredito que o Vultr (ou talvez apenas a instalação do Docker quando o ufw está presente) tenha algumas regras que impedem os contêineres de se comunicarem entre si, o que significa que o receptor de e-mail não consegue se conectar ao Discourse. ufw allow https contorna isso.

1 curtida

Mas o docker ignora o ufw, não é?

1 curtida

Na rede padrão, somente se um contêiner se conectar diretamente a outro contêiner por endereço IP local, esse é o endereço IP local do próprio contêiner.

Quando o receptor de e-mail consulta o nome de domínio do seu Discourse, ele não obterá esse IP local, portanto, ele terá que sair de sua rede Docker e passará pelo ufw pelo menos uma vez para alcançar o Discourse.

1 curtida

Eu estava pensando neste tópico, onde você também estava participando:

1 curtida

Essa é uma situação separada, embora relacionada. São conexões vindas de fora e o Docker adiciona regras para permitir a passagem de portas expostas.

Não sou muito familiarizado com as regras de cadeia netfilter/iptables, mas acredito que o acima mostra:

  1. Se a conexão estiver vindo de docker0, ou seja, da rede docker padrão, retorne para a cadeia anterior (pare de processar as regras nessa cadeia).
  2. Caso contrário, se a conexão estiver vindo de qualquer coisa que não seja docker0, se for também https ou http, especifique DNAT fazendo com que ela avance para a cadeia FORWARD.

Portanto, com o arranjo mostrado no outro tópico, o que acontece é que se o tráfego https ou http vier de fora, ele será direcionado para o docker. Se o tráfego vier da rede docker, no entanto, ele será retornado e rejeitado ou descartado pela cadeia INPUT.

O que ufw allow https faz é adicionar uma regra à cadeia INPUT aceitando-a. Dessa forma, quando a conexão for retornada para a cadeia INPUT como acima, ela será aceita e encontrará o docker escutando, sendo finalmente roteada para o contêiner.

1 curtida

@Simon_Manning @pfaffman

EDIT: veja o final da mensagem

Obrigado pelas respostas! Tive que me ausentar por um tempo, mas estou voltando a isso…

Sim, é o que tenho no momento.

Quando tento criar uma conta agora, o botão de envio não faz nada. Como se soubesse que não vai funcionar. (E nada aparece em Skipped ou em outro lugar.)

Editar: Configurei “replies@tasat.org” como um alias de envio para admin@tasat.org e confirmei que funciona para enviar e receber. Também confirmei a entrega de um e-mail enviado de um cliente externo endereçado para replies+verp-174bc7d8411bc4ec2cfa84c55bd31425@forum.tasat.org

No interesse de tentar algo, mudei reply by email address:
de replies+%{reply_key}@forum.tasat.org
para replies+%{reply_key}@tasat.org

Mas isso não muda os resultados.

Ele não chega ao mail-tester. Todas as tentativas de saída acabam em “skipped” com uma variedade desta mensagem:

553 5.7.1 <replies+verp-8c79cd4e83023bda6df0624c2cacd36e@tasat.org>:
Endereço do remetente rejeitado: não é propriedade do usuário admin@tasat.org

Talvez isso seja interessante..? Quando executo discourse-doctor, o e-mail de saída falha da seguinte forma:

==================== TESTE DE E-MAIL ====================
Para um teste robusto, obtenha um endereço em http://www.mail-tester.com/
Enviando e-mail para REDACTED . .
Testando o envio para admin@tasat.org usando smtp.titan.email:587,
usuário:admin@tasat.org com autenticação simples.
Conexão com o servidor SMTP bem-sucedida.
Enviando para admin@tasat.org. . .
E-mail não foi enviado.

Motivo: 553 5.7.1 <replies+verp-3cc19f7b135e6f56219e030999db9e29@tasat.org>:
Endereço do remetente rejeitado: não é propriedade do usuário admin@tasat.org

Enviar diretamente para o endereço replies+ (ou um endereço forum.tasat.org) de um cliente de e-mail funciona – ele segue o alias “replies” e chega à caixa de entrada do administrador. De onde vem a rejeição?

Dei uma olhada na seção do artigo “Impedir que o e-mail do host de saída interfira”. Não tenho o caminho /etc/postfix – mas aqui está a saída do meu netstat:

root@forum:/var/discourse# netstat -tulpn | grep :25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1487576/docker-prox
tcp6       0      0 :::25                   :::*                    LISTEN      1487581/docker-prox

EDIT PRINCIPAL – Recebi uma resposta do suporte da Titan hoje à noite: “O endereço reply-to e o endereço do remetente devem ser os mesmos, caso contrário, o e-mail não será enviado.” Então, acho que todo o troubleshooting foi em vão e tenho que procurar um novo host de e-mail que não imponha esse requisito.

Certamente não é exaustivo, mas há algumas recomendações de serviço de envio na documentação de instalação, juntamente com algumas informações básicas sobre como usá-los no Discourse: discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

O tópico a seguir (linkado na parte inferior desse documento) também tem informações sobre o tratamento de devoluções para esses e outros:

Eu uso o plano flexível da Mailgun (inteiramente dentro da franquia gratuita) pessoalmente, mas sei que houve confusão em torno de seus preços e potencialmente as coisas mudaram para novos usuários desde que entrei. A última vez que vi (não faço ideia se ainda é verdade), era possível mudar para o flexível após o término do teste, era apenas incrivelmente confuso.

Certo.
Você pode mudar para o mailgun flex, embora eles dificultem a compreensão. Cerca de uma vez por mês, eu os envio um e-mail perguntando por que é tão difícil de encontrar.

@Simon_Manning e @pfaffman – obrigado novamente pelas contribuições e dicas, me colocaram no caminho certo.

Decidi experimentar o MailerSend, já que o plano gratuito atual deles é bem generoso. Deve atender ao nosso esforço sem fins lucrativos por um tempo. As coisas estão funcionando bem até agora :grin:

5 curtidas