Capaz de receber e-mail no mail-receiver mas NÃO no Discourse?

Isso é para uma instalação inicial, e eu não sou nenhum guru de DNS de forma alguma! Aqui está onde estou:

  • Os testes de saída de e-mail estão funcionando bem. Estou usando o MailGun com o subdomínio “mg” recomendado por eles. Estou enviando na porta 2525. Tenho a API do MailGun para webhooks inserida no campo respectivo nas configurações (eles têm TRÊS APIs — será que esta é a correta??). Também tenho registros MX para o subdomínio “mg” inseridos nas minhas configurações de DNS. A verificação de validação do MailGun diz que tudo está funcionando corretamente, assim como o mail-tester.com.
  • A entrada está configurada com um subdomínio chamado “inbound”. Se eu enviar um e-mail de uma conta do Gmail para fake@inbound.[meudominio].org, consigo ver esse e-mail chegando no log do mail-receiver. Se eu enviar, a partir do Discourse, um e-mail de teste para o mesmo endereço via Configurações > E-mail, o e-mail parece desaparecer — nada aparece na lixeira de rejeitados. Estou usando entrega direta simples de e-mail de entrada para o restante.

Devido a outros problemas autoinfligidos no processo de configuração, optei por começar do zero: excluí meu droplet, reinstalei o Discourse e estou começando tudo de novo. No entanto, não excluí a conta do MailGun e estou usando a mesma API de webhook de antes. Isso poderia ser o problema? Estou, sim, usando uma nova chave de API gerada pelo Discourse (a antiga, obviamente, foi vaporizada quando excluí o droplet).

A única outra coisa que consigo pensar é no endpoint no mail-receiver.yml. O meu está assim: DISCOURSE_MAIL_ENDPOINT: 'https://inbound.[meudominio].org/admin/email/handle_mail'

Alguma ideia de onde está o problema? (Para completar, eu tinha tudo funcionando há pouco tempo — antes de excluir o droplet. Parece que sou um aprendiz lento :stuck_out_tongue_winking_eye:). Obrigado a todos!

Isso deve ser o domínio do seu fórum, não o seu e-mail. Você pode confirmar que seu fórum não está em inbound.[meudominio].org? Por exemplo, se o meta estivesse usando este método, a URL se pareceria com isto:

DISCOURSE_MAIL_ENDPOINT: 'https://meta.discourse.org/admin/email/handle_mail'

Além disso… isso não tem nada a ver com o Mailgun, exceto para garantir que você ignore a instrução do Mailgun de adicionar registros MX para o domínio. Conforme:

Nota: provedores de e-mail de saída, como o Mailgun, podem pedir que você adicione registros MX apontando para seus servidores. Você deve removê-los, para que os registros MX do seu fórum apontem apenas para o domínio do seu fórum. Os registros SPF e DKIM ainda devem apontar para os servidores do seu provedor de e-mail de saída, para que você possa enviar e-mails.

@tobiaseigen Estamos chegando mais perto! Fiz a alteração removendo o subdomínio de e-mail recebido do endpoint. Salvei e reiniciei o receptor de e-mail (porque não sei o que estou fazendo!). Testei. Sem sucesso. Em seguida, fiz uma reconstrução completa do aplicativo. Depois, criei duas novas contas usando endereços de e-mail separados. Usei a conta de administrador para enviar uma mensagem privada (PM) para uma delas. Isso gerou um e-mail conforme o esperado. Em seguida, respondi ao PM por e-mail. Aqui está o resultado no log de e-mail:

<22>Nov 25 02:38:20 postfix/pipe[89]: AB09913F5CB: to=<replies+da32f82583043bb63fee8be53f9bd3fd@inbound.[mydomain].org>, relay=discourse, delay=0.35, delays=0.19/0/0/0.15, dsn=4.3.0, status=deferred (falha temporária)

De fato, estamos chegando mais perto! Não tenho certeza sobre o que se trata essa falha temporária? Já se passaram 13 minutos e ainda não está entregando no Discourse. Estranho.

Devo mencionar que criei o subdomínio “inbound” porque quero que um endereço de e-mail admin@[mydomain].org seja tratado por um servidor de e-mail diferente.

Estou com um pouco de dificuldade para entender seu uso de nomes de domínio. No meu site, o DISCOURSE_MAIL_ENDPOINT e o registro MX para e-mail de entrada são do mesmo domínio, apontando para o servidor Discourse, conforme explicado no tópico original em Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver. Parece que você está tentando usar domínios diferentes.

Geralmente, você deve usar um subdomínio do tipo forum.meudominio.org para o seu Discourse, para separar seu fórum do seu site principal e do e-mail em meudominio.org.

Fico feliz em esclarecer :slightly_smiling_face: e vou fingir que meu domínio é thesite.org para simplificar. O que vejo é um problema de SSL nos logs do receptor de e-mail:
<19>Nov 25 19:11:29 receive-mail[160]: Failed to POST the e-mail to https://inbound.thesite.org/admin/email/handle_mail: hostname "inbound.thesite.org" does not match the server certificate (OpenSSL::SSL::SSLError)

Para responder à sua pergunta, eu tinha dois objetivos, que presumo serem extremamente comuns:

  1. admin@thesite.org se torna um endereço para os usuários entrarem em contato com o administrador
  2. thesite.org inicia o fórum (sem subdomínio)

Atualmente, minhas configurações de DNS na Namecheap são assim (TTL = Auto e Priority = 10):

1   A Record   @                  (IP address)     
2   A Record  inbound.            (IP Address)    
3   CNAME     email.mg.           mailgun.org.   
4   CNAME     inbound.            thesite.org.   
5   CNAME     www.                thesite.org.    
6   TXT       @                   forward-email=(stuff)
7   TXT       mg                  v=spf1 include:mailgun.org ~all
8   TXT       smtp._domainkey.mg. k=rsa; p=(stuff)
9   MX        @                   mx1.forwardemail.net.  
10  MX        @                   mx2.forwardemail.net.
11  MX        inbound.            thesite.org.
12  MX        mg.                 mxa.mailgun.org.
13  MX        mg.                 mxb.mailgun.org.

Minhas configurações em containers/mail-receiver.yml são:
MAIL_DOMAIN: inbound.thesite.org
DISCOURSE_MAIL_ENDPOINT: 'https://thesite.org/admin/email/handle_mail'
DISCOURSE_API_KEY: (stuff)
DISCOURSE_API_USERNAME: system ← igual à chave de API
* nota—> Deixei as linhas do LetsEncrypt como estavam (não removi o “#”)

Outras configurações:

  • alterei o nome de host via linha de comando para inbound.thesite.org
  • e-mail de contato = admin@thesite.org
  • e-mail de notificação = noreply@mg.thesite.org
  • e-mail de resposta por email1 = replies+%{reply_key}@inbound.thesite.org
  • e-mail de resposta por email2 = %{reply_key}@inbound.thesite.org
  • encontrar postagem relacionada com chave = ON
  • polling manual = ON
  • chave de API do Mailgun = INSERIDA …mas isso pode ser um problema porque é de uma tentativa de instalação anterior
  • Configurações > E-mails > Configurações: Endereço = smtp.mailgun.org
  • Configurações > E-mails > Configurações: Porta = 2525
  • Configurações > E-mails > Configurações: user_name = postmaster@mg.thesite.org

Alguma ideia de como prosseguir daqui? …e um enorme OBRIGADO antecipado! Também estou chamando @pfaffman, pois ele também foi tão gentilmente um recurso me ajudando com lutas passadas envolvendo a configuração. Seu guia “Straightforward” também foi extremamente útil. Abraços!

Você reconstruiu tanto os contêineres de e-mail quanto os do aplicativo? Acho que a solução mais simples é remover o que tenta fornecer um certificado ao receptor de e-mail. O certificado funciona para o site?

Se o site do Discourse não estiver em inbound.thesite.org, esse é o problema. A ideia é que o nome de host tanto do site do Discourse quanto do receptor de e-mail seja o mesmo. Você precisará consultar Configurando o Let’s Encrypt com Múltiplos Domínios para corrigir isso.

Isso vai um pouco além do escopo pretendido do tutorial do mail-receiver. Se isso não for suficiente para colocar você no caminho certo e você tiver orçamento, sinta-se à vontade para entrar em contato comigo.

Então a questão se torna: é possível ter ambos os objetivos que defini acima (eles parecem absurdamente comuns)? A única solução alternativa é redirecionar, nas configurações de DNS, os visitantes que digitam www.thesite.org e/ou thesite.org para subdominio.thesite.org? Se isso for verdade, terei que me contentar em alterar o endereço de e-mail visível para algo pouco atraente, como admin@subdominio.thesite.org.

Posso aceitar a mudança do e-mail de administrador se for absolutamente necessário. Parece que estamos ignorando algo óbvio, mas talvez eu esteja completamente perdido (provavelmente estou!).

Se o que você deseja é que o receptor de e-mail receba mensagens em um domínio diferente do seu domínio Discourse, acredito que é possível. A maneira mais fácil é não usar o certificado Let’s Encrypt no receptor de e-mail.

@pfaffman você é um gênio! Funcionou!! :clap: :clap: :clap: Seguindo o guia Configurando o Let’s Encrypt com Múltiplos Domínios, a recriação do Discourse seguida pela recriação do mail-receiver (provavelmente apenas um dos dois era necessário) resolveu. Voilá!

Mais tarde hoje à noite, gostaria de copiar e colar a publicação original “Entrega direta simples para e-mails recebidos” em um Google Doc e oferecer minhas sugestões de edição. Sem culpa de ninguém, há partes da publicação original que não são intuitivas para alguém como eu, que não conhece ou entende coisas de linha de comando. Acredito que os dois objetivos que defini acima são muito comuns em muitas instalações, e agora sei que o objetivo final pode ser alcançado.

Tenho outras sugestões para todo o tutorial de configuração. Estou mantendo uma lista de sugestões de edição para tornar o processo o mais simples possível.

Muito obrigado por me ajudar aqui! Super apreciado!