Problemas ao configurar hostmail

Olá. Espero que não se importe de eu me intrometer no tópico.

Meu provedor de hospedagem não tem problemas com e-mail. Todos os testes usando várias ferramentas funcionam - as portas estão abertas e o envio de e-mails deve ser possível. O problema é que não funciona com o Discourse.

https://carlosthomas.net/photos/picture.php?/911/category/8

Independentemente da porta que eu tente, ainda recebo os mesmos erros.

Criei contas manualmente e consigo fazer login, mas os e-mails são necessários para convites e validação. Testei com o MailGun e funciona - mas não consigo entender por que não funciona com meu provedor de hospedagem. Entrei em contato com eles e eles disseram que tudo deveria estar bem - então estou um pouco perdido.

https://carlosthomas.net/photos/picture.php?/913/category/8

Como um novo usuário, só posso postar dois links - mas esses devem levá-lo ao resto das fotos.

Me avisem se houver algum log que vocês gostariam que eu extraísse - tenho experiência limitada com *NIX, mas consigo seguir instruções. Agradeço antecipadamente.

Obrigado @JammyDodger pela divisão/movimentação. Espero obter alguma ajuda com isso. O servidor não é permanente - é para testes - portanto, quaisquer logs ou comandos necessários podem ser fornecidos para encontrar uma solução.

Basicamente - o e-mail funciona (na maioria das vezes) com o MailGun, mas não com o provedor de hospedagem. E-mails do MailGun para serviços gratuitos (GMAIL, etc.) funcionam bem. Tentativas de enviar do MailGun para meu domínio/e-mail hospedado falham. Não tenho certeza do que está acontecendo. O uso do e-mail do domínio funciona muito bem em qualquer outro aplicativo - OSTicket/InvoiceNinja/Windows Mail/ThunderBird/etc.

Qualquer ajuda é apreciada. Agradeço antecipadamente.

É bastante estranho, com certeza, se suas credenciais do hostmail funcionam em outras ferramentas e assumindo que foram coladas corretamente na configuração do discourse. Você tem ferramentas de segurança que podem bloquear o domínio do hostmail?

Você também pode tentar olhar em \u003cdiscourse_url\u003e/logs para ver se há um erro detalhado sobre o que está acontecendo.

Obrigado pela sua resposta. Aqui estão algumas informações.

Message (12 copies reported)

Job exception: execution expired


Backtrace

/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `open'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:631:in `tcp_socket'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:641:in `block in do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:186:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/timeout-0.4.0/lib/timeout.rb:193:in `timeout'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:640:in `do_start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-smtp-0.4.0/lib/net/smtp.rb:610:in `start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'

Então, para esclarecer - “hostmail” é apenas o nome que dei, já que é o e-mail do meu provedor de hospedagem (GlowHost) do domínio que estou testando - discourse.carlosthomas.net - que funciona MAIS OU MENOS bem com o MailGun - mas não com o e-mail hospedado.

Eu não sabia sobre os /logs - posso refazer as configurações e limpar os logs, então tentar enviar e-mails e postar as informações, se você quiser. Eu também poderia limpar os logs agora - enviar para o Gmail - o que será bem-sucedido - então enviar para o meu e-mail hospedado - o que falhará - e enviar os logs.

Adicionando algum contexto. Amigos que administram um site em vBulletin 4.2.5 e estou hospedando temporariamente o Discourse para que eles possam ter uma ideia. O problema são os e-mails - consigo seguir instruções o suficiente para criar as contas manualmente, mas caso decidam pelo Discourse, eles precisarão dos e-mails para adicionar usuários. Há também a parte de importação - para a qual encontrei este link que acho que pode ajudar.

Mas o e-mail precisa ser resolvido. Estou mantendo a caixa com o Discourse ativa apenas até resolvermos essa questão. E estou tentando mostrar como é o suporte. Minha experiência com os detalhes nos fóruns e o que vi sugere que o uso/migração/suporte deve ser bastante fácil assim que os requisitos para hospedar a plataforma forem atendidos. E uma vez que os métodos oficiais sejam usados, obter suporte deve ser fácil o suficiente.

Mas sim - é aí que estamos. Aguardando feedback.

1 curtida

Olá a todos. Tentarei algumas coisas no fim de semana, se tudo correr bem. Pretendo formatar/reinstalar e postar o progresso. Se alguém tiver sugestões antes disso, por favor, me avise.

Quando chegar a esse ponto, pretendo extrair os logs que puder encontrar e postar aqui. Usarei algumas senhas geradas aleatoriamente para o processo, permitindo que as pessoas que queiram ajudar acessem. Vamos ver como vai.

Atualmente, estou fazendo verificações e alterações no arquivo app.yml. Limpei os logs antes e tentarei enviar e-mails e informarei.

EDIT
Portanto, limpar os logs e enviar e-mails para o Gmail ou para o meu próprio domínio não mostra erros. Recebo e-mails no Gmail, mas nenhum no meu domínio.

Os logs no MailGun basicamente dizem o seguinte:

{
	"recipient": "me@mydomain",
	"id": "SCBCSJxDSqupdU9Da29rRw",
	"envelope": {
		"sender": "postmaster@mg.mydomain",
		"targets": "me@mydomain",
		"transport": "smtp",
		"sending-ip": "192.168.0.1"
	},
	"timestamp": 1697462206.8430145,
	"user-variables": {},
	"message": {
		"headers": {
			"from": "Discourse Test Forum <postmaster@mg.mydomain>",
			"message-id": "9d3b190d-bcbd-4378-8eb6-fc90cd57fe35@discourse.mydomain",
			"to": "me@mydomain",
			"subject": "[Discourse Test Forum] Email Deliverability Test"
		},
		"attachments": [],
		"size": 4546
	},
	"storage": {
		"region": "us-west1",
		"key": "BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA",
		"env": "production",
		"url": "https://storage-us-west1.api.mailgun.net/v3/domains/mg.mydomain/messages/BAABAQUOTl3y4PtvsqlN5Z2OvaxXslLlZA"
	},
	"reason": "generic",
	"delivery-status": {
		"enhanced-code": "",
		"mx-host": "mydomain",
		"description": "",
		"certificate-verified": true,
		"attempt-no": 1,
		"code": 550,
		"message": "Verification failed for <bounce+674b6a.be6180c-me=mydomain@mg.mydomain>\nThe mail server does not recognize bounce+674b6a.be6180c-me=mydomain@mg.mydomain as a valid sender.\nSender verify failed",
		"session-seconds": 40.878,
		"tls": true
	},
	"campaigns": [],
	"severity": "permanent",
	"tags": [],
	"recipient-domain": "mydomain",
	"flags": {
		"is-routed": false,
		"is-authenticated": true,
		"is-test-mode": false,
		"is-system-test": false
	},
	"log-level": "error",
	"event": "failed"
}

Eu só recebo isso se tentar no meu próprio domínio. Se eu tentar em qualquer outro domínio, tudo bem - e-mail gratuito ou não.

Configurações atuais no app.yml são:

## este é o modelo de contêiner Docker autônomo e completo
##
## 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"
  ## Descomente a próxima linha para habilitar o ouvinte IPv6
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Descomente estas duas linhas se desejar adicionar o 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:
  - "80:80"   # http
  - "443:443" # 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: "2048MB"

  ## pode melhorar o desempenho da ordenaçã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
  # 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: 8

  ## TODO: O nome de domínio que esta instância do Discourse responderá
  ## Obrigatório. O Discourse não funcionará com um número IP simples.
  DISCOURSE_HOSTNAME: mydomain

  ## 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: 'me@mydomain'

  ## 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
  # AVISO o caractere '#' na senha SMTP pode causar problemas!

  DISCOURSE_SMTP_ADDRESS: smtp.mailgun.org
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: postmaster@mg.mydomain
  DISCOURSE_SMTP_PASSWORD: "mailgunpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (opcional, padrão true)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: postmaster@mg.mydomain


  ## Se você adicionou o modelo Lets Encrypt, descomente abaixo para obter um certificado SSL gratuito
  LETSENCRYPT_ACCOUNT_EMAIL: freemailaccount

  ## 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 API do MaxMind Geolocation 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-spoiler-alert.git
          - git clone https://github.com/discourse/discourse-solved.git
          - git clone https://github.com/discourse/discourse-docs.git
## Quaisquer comandos personalizados para executar após a compilação
run:
  - exec: echo "Início dos comandos personalizados"
  ## Se você quiser definir o endereço de e-mail 'De' para o 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"

As únicas alterações feitas neste arquivo seriam:

  DISCOURSE_SMTP_ADDRESS: smtp.mydomain
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: email@mydomain
  DISCOURSE_SMTP_PASSWORD: "mydomainmailpassword"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true             # (opcional, padrão true)
  #DISCOURSE_SMTP_FORCE_TLS: true
  DISCOURSE_SMTP_DOMAIN: mydomain
  DISCOURSE_NOTIFICATION_EMAIL: email@mydomain

Assim que eu receber uma resposta de alguém, farei essas alterações e verificarei novamente os logs. Ou… talvez eu apenas faça isso - poste os logs - e espere por uma resposta. Não deve demorar muito. Veremos.

1 curtida

Sinceramente, não sei. :thinking: Isso não parece ser um problema com o Discourse. Quero dizer, o e-mail foi enviado corretamente pelo Discourse, mas o Mailgun falhou em entregá-lo ao endereço de e-mail.

Erro 550 significa “A caixa de correio do usuário estava indisponível (por exemplo, não encontrada)

1 curtida

Obrigado pela sua resposta. Não sei o que está acontecendo - o e-mail funciona bem. Apenas não gosta do meu domínio, acho.

Mudei a configuração para usar meu e-mail de domínio para enviar. Vou verificar os logs agora e ver quais erros recebo.

EDIT
Nenhum erro nos logs - mas recebi isto.

Vou tentar a partir de ./discourse-doctor - mas os logs estão realmente vazios em /logs.

E recebo os mesmos erros postados no início.

O endereço de e-mail em uso funciona. Copio e colo os detalhes, incluindo a senha. Testei o mesmo e-mail no ThunderBird / Windows Mail sem problemas. Então…

Contatei o suporte do meu provedor de hospedagem anteriormente - esta foi a resposta.

Então, não sei. Talvez haja algo que estou perdendo? E-mails de teste funcionam com 465 / 587 e não há problemas. Estou perdido.

Existem caracteres especiais que seriam bloqueados ou causariam um problema com as configurações de e-mail?

Alterei as configurações para a porta 465 e só estou vendo isso em /logs.

Nada de consequências graves, eu acho.

Gostaria de enviar elogios e agradecimentos ao @Arkshine pela assistência até agora. Aparentemente, o VPS não consegue alcançar o domínio hospedado - por isso os e-mails não funcionam. Isso é bem estranho, mas estou entrando em contato com o provedor de hospedagem para verificar. Atualizarei.

Isso foi bem rápido e fácil. Um simples ping para o domínio hospedado a partir de uma sessão SSH para o VPS executando o Discourse mostrou o que estava acontecendo. Vamos ver como vai.

EDIT
Gostaria que o @Arkshine tivesse respondido para que eu pudesse marcar isso como a solução. De qualquer forma - ouvi de volta do provedor de hospedagem. Aparentemente, seus servidores bloquearam automaticamente o IP do VPS devido a tentativas falhas de SMTP. Não tenho certeza do que aconteceu com isso - mudarei as configurações e executarei os testes novamente e verei. Deve estar tudo bem agora - o IP hospedado é alcançável por ping do VPS agora. Testei as configurações de e-mail e estamos prontos para ir!

Espero que esta informação ajude alguém. Se eu pudesse editar o OP, eu apenas colocaria um TLDR - ou eles podem simplesmente clicar no link para ir para a solução.

Novamente - muito obrigado ao @Arkshine por toda a ajuda. Continue o bom trabalho!

2 curtidas

Concordo, ele é de grande ajuda e um ótimo recurso. :slight_smile:

3 curtidas

Gostaria também de mencionar que o DP e o fundo do perfil dele são muito legais. Gostei.

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.