Eu estava tentando enviar e-mails após uma troca de servidor de e-mail, antes funcionava bem, no entanto, agora não consigo enviar e-mails. O problema é que a conexão está 100% funcionando, como você pode ver. Mas por algum motivo, ele não consegue enviar o e-mail.
Endereço de e-mail para teste de e-mail? ('n' para pular) [community@brohosting.eu]:
Enviando e-mail para community@brohosting.eu. . .
Testando o envio para community@brohosting.eu usando smtppro.zoho.eu:587, nome de usuário: info@brohosting.eu com autenticação de login.
Conexão com o servidor SMTP bem-sucedida.
Enviando para community@brohosting.eu. . .
Falha ao enviar e-mail.
fim do arquivo alcançado
Verifique se seu provedor de hospedagem de VPS desbloqueou a porta SMTP (embora a conexão pareça ter sido confirmada)… verifique também os logs do seu serviço de e-mail para obter evidências da solicitação.
Não deveria haver nenhuma solução para isso. Por que eu precisaria modificar algo, se a conexão foi bem-sucedida?
Além disso, sim, encontrei vários tópicos como esse, inclusive um tópico onde você respondeu, mas não vou voltar para a porta 465 que está obsoleta. Obviamente, o problema é com o Discourse ou sua biblioteca de envio de e-mail.
Eu posso compartilhar, mas como seria mal configurado se a conexão fosse bem-sucedida?
## este é o modelo de contêiner Docker Discourse autônomo e tudo-em-um
##
## Após fazer alterações neste arquivo, você DEVE reconstruir
## /var/discourse/launcher rebuild app
##
## TENHA MUITO CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário
templates:
- "templates/postgres.template.yml"
- "templates/redis.template.yml"
- "templates/web.template.yml"
- "templates/web.ratelimited.template.yml"
## Descomente estas duas linhas se desejar adicionar Lets Encrypt (https)
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
## quais portas TCP/IP este contêiner deve expor?
## Se você quiser que o Discourse compartilhe uma porta com outro servidor web como Apache ou nginx,
## veja https://meta.discourse.org/t/17247 para detalhes
expose:
- "8080:8080" # http
- "15432:5432" # PostgreSQL
# - "8443:8443" # https
params:
db_default_text_search_config: "pg_catalog.english"
## Defina db_shared_buffers para um máximo de 25% da memória total.
## será definido automaticamente pelo bootstrap com base na RAM detectada, ou você pode substituir
#db_shared_buffers: "256MB"
## pode melhorar o desempenho da classificação, mas adiciona uso de memória por conexão
#db_work_mem: "40MB"
## Qual revisão Git este contêiner deve usar? (padrão: tests-passed)
#version: tests-passed
env:
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8
LANGUAGE: en_US.UTF-8
EMBER_CLI_PROD_ASSETS: 1
# DISCOURSE_DEFAULT_LOCALE: en
## Quantas requisições web concorrentes são suportadas? Depende da memória e dos núcleos da CPU.
## será definido automaticamente pelo bootstrap com base nas CPUs detectadas, ou você pode substituir
#UNICORN_WORKERS: 3
## TODO: O nome de domínio que esta instância do Discourse responderá
## Obrigatório. Discourse não funcionará com um número IP simples.
DISCOURSE_HOSTNAME: community.brohosting.eu
## Descomente se você quiser que o contêiner seja iniciado com o mesmo
## nome de host (-h option) especificado acima (padrão "$hostname-$config")
#DOCKER_USE_HOSTNAME: true
## TODO: Lista de e-mails separados por vírgula que serão feitos administradores e desenvolvedores
## na inscrição inicial, exemplo 'user1@example.com,user2@example.com'
DISCOURSE_DEVELOPER_EMAILS: 'community@brohosting.eu'
## TODO: O servidor de e-mail SMTP usado para validar novas contas e enviar notificações
# ENDEREÇO SMTP, nome de usuário e senha são obrigatórios
# ATENÇÃO: o caractere '#' na senha SMTP pode causar problemas!
DISCOURSE_SMTP_ADDRESS: smtppro.zoho.eu
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: info@brohosting.eu
DISCOURSE_SMTP_PASSWORD: "XXXXXXXXXXXX"
DISCOURSE_SMTP_ENABLE_START_TLS: true # (opcional, padrão true)
DISCOURSE_SMTP_DOMAIN: brohosting.eu
DISCOURSE_SMTP_AUTHENTICATION: login
DISCOURSE_NOTIFICATION_EMAIL: community@brohosting.eu
## Se você adicionou o modelo Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
# LETSENCRYPT_ACCOUNT_EMAIL: info@brohosting.eu
## O endereço CDN http ou https para esta instância do Discourse (configurado para puxar)
## veja https://meta.discourse.org/t/14857 para detalhes
#DISCOURSE_CDN_URL: https://discourse-cdn.example.com
## A chave de endereço IP do serviço de geolocalização MaxMind para consulta de endereço IP
## veja https://meta.discourse.org/t/-/137387/23 para detalhes
#DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456
## O contêiner Docker é sem estado; todos os dados são armazenados em /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## Plugins vão aqui
## veja https://meta.discourse.org/t/19157 para detalhes
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
- git clone https://github.com/discourse/discourse-chat.git
- git clone https://github.com/discourse/discourse-reactions.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/discourse/discourse-voting.git
- git clone https://github.com/discourse/discourse-chat-integration.git
## Quaisquer comandos personalizados para executar após a construção
run:
- exec: echo "Início dos comandos personalizados"
## Se você quiser definir o endereço de e-mail 'De' para seu primeiro registro, descomente e altere:
## Após receber o primeiro e-mail de inscrição, comente a linha novamente. Ela só precisa ser executada uma vez.
#- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
- exec: echo "Fim dos comandos personalizados"
A boa notícia é que você não passou 5 dias depurando a biblioteca smtp como você sugeriu!
(Eu passei uma dúzia de horas ao longo de muitos dias recentemente depurando o código que inseria um menu suspenso que não funcionava. Eu examinei o café que inseria o menu suspenso. Eu examinei o café que produzia os dados para o menu suspenso. Eu o comparei com o funcionamento de outros menus suspensos. Então, eu encontrei uma pequena linha de css que eu havia inserido que fez com que não houvesse espaço para o menu suspenso se expandir.)
É por isso que a instalação padrão inclui uma lista de provedores de e-mail recomendados. Se você quiser se desviar dessas recomendações, também aceitará a complexidade técnica adicional que isso introduz. Nem todos os servidores de e-mail se comportam da mesma forma, não cabe ao Discourse abordar isso.
O resumo do acima é que você configurou mal o Zoho. O Discourse não pode ver a configuração lá e assume que você está fornecendo informações corretas. Se você tivesse executado novamente ./discourse-setup, ele teria perguntado novamente o endereço de envio, que você teria inserido incorretamente devido a essa má configuração.
Podemos salvar os usuários de muitos problemas, mas raramente de si mesmos. Da próxima vez, sugiro focar nos aspectos mais prováveis e verificar os detalhes em sistemas externos, antes de insistir que o problema está no código que está sendo utilizado para atender a dezenas de milhões de usuários. Provavelmente o levará à sua resposta muito mais rapidamente.
Você está certo, mas, novamente, você também poderia mencionar isso no guia de solução de problemas de e-mail, mesmo que esta seja uma etapa bastante autoexplicativa antes de configurar o Discourse.
De qualquer forma, sou grato aos colegas acima pela ajuda.
Mas não está claro que “fim de arquivo alcançado” sempre significará “você falhou em configurar seu serviço de e-mail para o endereço de envio que você usou” ou o que quer que tenha sido que você fez para corrigir as coisas.
Acontece que há muitas coisas que podem dar errado depois que o Discourse se conecta com sucesso a um servidor de e-mail. Se você quiser uma mensagem de erro melhor, peça ao Zoho para fornecer uma em vez de apenas encerrar a conexão.