Olá. Tenho um Discourse sem Docker rodando no meu servidor local. Também instalei o iRedMail. Primeiro, tentei usar o servidor SMTP do mail.ru. Mensagens de teste foram enviadas, assim como convites. Mas nenhuma notificação por e-mail chegou, e a redefinição de senha também não funcionou. Decidi que deveria instalar meu próprio servidor de e-mail local e verificar os logs para entender por que as mensagens não estavam sendo enviadas. Fiz isso. Mensagens locais são entregues entre caixas de correio. Isso é o que preciso para testes. Pensei que seria suficiente para o Discourse e o e-mail locais. Configurei meu servidor SMTP local. Enviei um e-mail de teste… e ele chegou! Vencedor (não). Olhei para o arquivo /var/log/mail.log do servidor de e-mail.
Ok. Agora estou enviando um convite para a mesma caixa… Olhando os logs do servidor de e-mail… …e nada. Está vazio. Não sei qual é o problema.
Tudo o que estou pedindo é um guia de “como fazer” para que o Discourse se comunique com o Postfix.
No momento, tenho uma conta de administrador ativa porque a habilitei manualmente, já que, como você deve ter adivinhado, não recebi o e-mail de verificação. Fornecerei quaisquer arquivos, como configurações e logs, mediante solicitação.
Isso fornecerá uma saída muito detalhada do handshake entre você e o servidor SMTP; e normalmente esse registro detalhado fornecerá as pistas para resolver seu problema.
Olá! Não tenho muita experiência. Instalei o Discourse e um servidor de e-mail pela primeira vez. Poderia detalhar exatamente o que preciso fazer? Obrigado.
Primeiro, você precisa “esquecer” temporariamente o Discourse e focar em configurar seu relay de e-mail SMTP, testá-lo e garantir que ele possa retransmitir e-mails.
Criei duas caixas de correio no meu domínio local “@ugda.space”. E as mensagens estão chegando uma para a outra. Para as caixas do Gmail, Mail e Yandex, as mensagens não chegam uma à outra. Não configurei isso, pois pensei que teria comunicação suficiente apenas localmente para os testes.
@Anv Vou ser direto: uma boa regra não escrita deveria ser algo como “não peça às pessoas que conversem com você se você não estiver disposto a se esforçar para ouvi-las”. Por “ouvir”, quero dizer considerar o que elas estão dizendo. Participar de um fórum conta como “pedir às pessoas que conversem com você”, imagino. Especialmente se você estiver pedindo ajuda.
Continuar repetindo a mesma coisa e forçar seu interlocutor a também se repetir não leva a lugar nenhum. Para ninguém.
Agora, por que você ainda não executou esse comando de linha?
Entendo sua frustração; e sinto muito não ter mais tempo livre para depurar todos os problemas do seu relay SMTP cada vez que você responde.
Parece que seu host de e-mail SMTP está recebendo e-mails; mas isso não significa necessariamente que ele funcionará como um relay SMTP.
Lembro, de cabeça, que existe uma flag para usar o sendmail e outros clientes de e-mail para verificar se o host SMTP está funcionando corretamente como relay. Você pode pesquisar sobre a opção sendmail -G (ou procurar outra maneira de testar). Basicamente, você precisa enviar o e-mail para um endereço de teste diferente do host em que está trabalhando, usando seu novo host SMTP como relay.
Um pouco de história
Antigamente, a maioria dos hosts SMTP fazia relay de e-mails imediatamente; mas depois todos os hosts SMTP na internet se tornaram grandes caixas de SPAM, porque spammers exploravam a funcionalidade de relay (sem o conhecimento do dono da caixa) e enviavam spam para o mundo todo.
A conclusão é que você precisa verificar se seu novo host SMTP pode fazer relay dos e-mails para você.
Você olhou atentamente para o tutorial de configuração e viu se ele mencionava a configuração do host SMTP como relay?
Estou apenas pensando em voz alta e espero que isso ajude, de alguma pequena forma, a levar você ao próximo passo no seu projeto de host SMTP.
Você mencionou que tem o Discourse instalado sem Docker. Seria possível fazer uma instalação nova e limpa da maneira “clássica” (com Docker), inserindo o e-mail que você criou durante essa nova instalação? Ou você não consegue executar o Docker na máquina que está usando?
Tentei usar o docker, mas não recebi nenhum e-mail. Nem sequer consegui criar uma conta de administrador. Decidi remover o docker porque eu era inexperiente.
Tenho certeza de que isso não será muito útil, mas, como “apenas mais um ponto de dados”, nunca tive problemas ao configurar o envio de e-mails via SMTP no Discourse, seja em uma instalação de produção baseada em Docker ou em um ambiente de desenvolvimento no macOS (sem Docker); porém, sempre utilizei um serviço SMTP de terceiros.
Vocês chamaram minha atenção; agora estou muito interessado nesse pequeno mistério e vou tentar encontrar tempo nas próximas semanas para configurar um relay SMTP em uma partição Ubuntu Linux de um VPS e ver se consigo fazer o Discourse funcionar com um relay SMTP “antigo”, em vez de depender de “soluções de terceiros”.
Peço desculpas antecipadamente se levar algumas semanas para montar essa configuração. Estou ficando para trás em uma série de burocracias governamentais chatas porque tenho me divertido muito aprendendo sobre o desenvolvimento de plugins do Discourse e como o Rails funciona com todas as suas partes móveis.
Após alguns testes e erros, consegui fazer o Discourse funcionar com o Postfix. Seguem os passos que utilizei, espero que sejam úteis:
Configure um registro A apontando para seu novo servidor, por exemplo forum.domain.com.
Instale o Postfix, defina forum.domain.com como myhostname e adicione 172.17.0.0/16 a mynetworks para que o container do Discourse possa se comunicar com o Postfix sem autenticação. 172.17.0.0/16 é a rede padrão usada pelos containers do Docker.
Certifique-se de que o Postfix pode enviar e-mails. Eu prefiro usar swaks.
swaks -t your_name@gmail.com
Você deverá receber um e-mail com o assunto “This is a test mailing”.
Em containers/app.yml, certifique-se de comentar as 3 linhas referentes a DISCOURSE_SMTP_USER_NAME, DISCOURSE_SMTP_PASSWORD e DISCOURSE_SMTP_ENABLE_START_TLS.
E defina DISCOURSE_SMTP_DOMAIN como forum.domain.com (certifique-se de substituir pelo seu domínio aqui).
Para testar, você pode conectar ao container do Discourse com docker exec -it app bash e executar: