Ok, então estou usando o Mailjet para o SMTP e estou enfrentando um problema com a validação. Primeiro, não consigo validar facilmente o e-mail individual noreply@discourse.example.com.
Preferiria validar o domínio discourse.example.com, mas aqui esbarro em dois problemas. Posso fazer isso com um arquivo de texto de nome especial, mas parece que o Discourse não permite isso (embora, neste ponto, esteja bastante tentado a configurar o arquivo de configuração do nginx para retornar algo para essa URL). Tudo bem, talvez o arquivo TXT do DNS? E aqui encontro dificuldades porque administro o DNS do domínio example.com e ele está me pedindo para inserir uma entrada essencialmente para mailjet.discourse.example.com, que é um subdomínio, e não tenho certeza de como inserir isso. Estou executando o BIND 9.3 mais ou menos no Ubuntu 16.04, e algumas orientações seriam úteis? Consigo encontrar informações sobre como adicionar uma entrada TXT para discourse.example.com, mas o Mailjet diz: “esquece isso, tem que ser mailjet_xxxxx.discourse.example.com”, ou seja, uma sub-rede, o que acho que significa zonas extras. NÃO sou um mago de DNS, embora seja bastante habilidoso em instalar coisas complexas.
Mas, no momento, estou tão perdido tentando todas as coisas possíveis, então… ajuda? Quero dizer, a melhor notícia possível seria alguém dizer: “Claro, você pode colocar um arquivo de texto no diretório raiz do Discourse assim…”
Você sabe quem é o seu registrador de domínio ou gerenciador de DNS?
Você precisará criar a entrada DNS no gerenciador de DNS fornecido pelo registrador ou, se usar algo como o Cloudflare, deverá criar os registros DNS lá.
OK, acabei de fazer o método de validação via TXT funcionar, mesmo com as “restrições” do Discourse. Então, se você quiser fazer isso para evitar mexer com coisas de DNS (o que, eeeeeeeee… para mim é muito mais assustador do que mexer em um servidor web, embora, é claro, sua experiência possa variar).
Você precisará ter permissão para editar o arquivo de configuração do nginx da sua instalação do Discourse. Onde exatamente ele está depende de onde (e com o quê) você instalou o Discourse. No meu caso, fiz uma instalação bare metal sem usar Docker. Encontrei o arquivo em /etc/nginx/conf.d/discourse.conf — sua experiência pode variar.
Nesse arquivo, haverá um bloco location assim:
location / {
....
}
onde também haverá várias diretivas location aninhadas internamente.
Crie um novo, também aninhado aqui (mas não aninhado dentro de outro location!)
location /stupidfilename.txt {
alias /var/www/stupidfilename.txt;
}
onde stupidfilename.txt é o nome especial do arquivo que eles pedem que você adicione, e onde o CAMINHO (/var/www) está fora do conteúdo do Discourse, mas acessível para URLs em geral no servidor. O que faz isso funcionar é que / é a raiz para o Discourse, então a URL parecerá estar sob seu Discourse em http://discourse.example.com/stupidfilename.txt (espaços adicionados para desativar o link falso).
então… coloque o arquivo fora do Discourse, configure o location para apontar para ele e reinicie o nginx.
tada…
(Voltei e editei esta resposta para melhorar a legibilidade etc., já que a marquei como minha solução)