Ajuda necessária, estou bloqueado na configuração de e-mail de depuração (Infomaniak/Brevo)

Olá!

Estou instalando o Discourse para nossa pequena associação sem fins lucrativos. Escolhi uma instância em nuvem Ubuntu 22.04 em um Public Cloud da Infomaniak e para ter nossos e-mails transacionais na Brevo, pois eles têm 300 e-mails/mês em seu plano gratuito.

Passei por vários problemas, um por um, para configurar o servidor, e a documentação e os posts aqui me ajudaram muito…

MAS
Agora cheguei a um ponto em que não sei como avançar.

  1. Minha instância está acessível no subdomínio forum.aether-labs.fr

  2. Minha conta na Brevo está funcionando corretamente, pois consegui enviar e-mails de noreply@forum.aether-labs.fr do Thunderbird.

  3. Mas não recebo meu primeiro e-mail de administrador para validar a conta.

Então li em detalhes o post Troubleshoot email on a new Discourse install (sem link por causa da regra de novo usuário) e tentei algumas coisas.

  1. O contêiner do aplicativo (parece que?) consegue alcançar a porta do servidor SMTP da Brevo.
root@server-1:/var/discourse# 
root@server-1:/var/discourse# ./launcher enter app
x86_64 arch detected.
root@server-1-app:/var/www/discourse# 
root@server-1-app:/var/www/discourse# openssl s_client -connect smtp-relay.sendinblue.com:587 -starttls smtp
CONNECTED(00000003)depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1depth=0 CN = *.sendinblue.com
verify return:1
---
Certificate chain
 0 s:CN = *.sendinblue.com
   i:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
 1 s:C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
   i:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
 2 s:C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
   i:C = GB, ST = Greater Manchester, L = Salford, O = Comodo CA Limited, CN = AAA Certificate Services
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGODCCBSCgAwIBAgIQf3BN6DJXk+R4MhMClPwXSzANBgkqhkiG9w0BAQsFADCB
jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
MB4XDTIyMTIwMTAwMDAwMFoXDTIzMTIxMzIzNTk1OVowGzEZMBcGA1UEAwwQKi5z
ZW5kaW5ibHVlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKym
RK7t+EAo9Vtl+7laiPy2QTvaxT7WLrLGNGzSzorOBTKkjpjEOveSaa9SMav+qX/T
n4Q/eVQdjggQqFrUAYAN7aXa83K9zYMrSAzsPzg/k3O5iXl3GC5KT3yF9IzNNso0
oljczFaYDdhLr6iovk03DXQB0hMmfX3RLJyqYmyGEshoJwSAMTfW06Iob25JFVG7
tKngYEQMx/IC/WsFKuJ8t2AKaK7xZyEklQqJ95j9lzbfP27VNIkfcZ3DjMDK3shL
xgkpsys8LiH5P1MUAEq4fmOE9IIkewGYMAuKSRyzH1DdgeDvMW8RYcVwGmAfEjQ4
W/515j9q6f1OLQPK1zUCAwEAAaOCAwEwggL9MB8GA1UdIwQYMBaAFI2MXsRUrYrh
d+mb+ZsF4bgBjWHhMB0GA1UdDgQWBBQt3X5DvoJzqs7qZ1t/7m1fRPcJGTAOBgNV
HQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
KwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUFBwIB
FhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUFBwEB
BHgwdjBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdv
UlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEFBQcw
AYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wKwYDVR0RBCQwIoIQKi5zZW5kaW5i
bHVlLmNvbTIOc2VuZGluYmx1ZS5jb20wggF9BgorBgEEAdZ5AgQCBIIBbQSCAWkB
ZwB1AK33vvp8/xDIi509nB4+GGq0Zyldz7EMJMqFhjTr3IKKAAABhM6AGCkAAAQD
AEYwRAIgLXDREGRQg02jNvL1Vvuwmbc8G1OpnwgHOsWKB/Gi5hQCIEmjtO9/O9DQ
nBNawCpH/ppW57f49W90ecV0Ng2qHWs9AHcAejKMVNi3LbYg6jjgUh7phBZwMhOF
TTvSK8E6V6NS61IAAAGEzoAX8gAABAMASDBGAiEAzTTpiWsKzHjVN7czz0Iw+TW8
17jAlGb8/LvgNuyb+yoCIQD4W8vpQd7aoLwFL1ZuuEh3zhrDL/iNa1FbnPTXrCSx
hQB1AOg+0No+9QY1MudXKLyJa8kD08vREWvs62nhd31tBr1uAAABhM6AF8EAAAQD
AEYwRAIgaLYUtDrQms9/CbKsZIsJ0ootg6Swnori9rmkiQlZklwCICerSmuiXVAg
thR3zAcjsEd4o1hXgMjEjM3ct4T1WDLdMA0GCSqGSIb3DQEBCwUAA4IBAQC+X/Us
keEDvt4AG0j9CgcP+QrZliJMsKNz7YR8Mt+NJiXr69Kg/hZNvw5aToCgjgbPlzPj
cs4i/6plivGmBsH94qIcl+PbHm1wJFSodDvahKuP0xZbBcynel9cIeCLRfYLr8nI
qJnB7sqK3Fpda98EY4x5kYbbiKJ2CaMABD8WZBEbJglTY3cmZkpI6m76sEgrlVm+
O+jp2fw7cFda+vzUmBmd8z1i7dZbB7Oj4Wy/SjT0SPbousz7JXXBh2YDiIzLBfvt
8mhjeQmLZMCnvL74zxFfuB44v4X0SIfQPjSgZy8vTYYMrSn40pzLbL1np7t+jpEb
ratD0fgmtozDRDWw
-----END CERTIFICATE-----
subject=CN = *.sendinblue.com

issuer=C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA

---
No client certificate CA names sent
Peer signing digest: SHA512
Peer signature type: RSA
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 5482 bytes and written 476 bytes
Verification: OK
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
    Session-ID: FF96A2562FFDC00C5948FE7E6123CE9CD4CFB4939A4546728F60584ED2EC12EB
    Session-ID-ctx: 
    Master-Key: 287A2ECAB44E3F1EB919B4AD0EF98981A05F866381485781BB46AFEA2F361E987C31E57DA1098B01F69B75679E07E430
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 6d 30 ab bf 0a 44 79 06-0a 1a 67 1a 25 b5 f8 05   m0...Dy...g.%...
    0010 - 8e 33 6c 9a db 35 cd 9e-64 d6 a3 44 59 36 d4 e1   .3l..5..d..DY6..
    0020 - 69 b2 46 6a d5 7a 22 25-c2 36 bd bc ef ca d8 bf   i.Fj.z"%.6......
    0030 - 1c e2 b5 31 4e ab 43 cf-ea a0 1a b8 39 69 cd 5c   ...1N.C.....9i.\
    0040 - 15 b5 94 17 9c 70 d0 9d-ff 7c 7f e9 3f c8 87 a2   .....p...|..?...
    0050 - d0 12 5d a2 2b 6c e3 54-aa 33 10 fa b5 08 57 9f   ..].+l.T.3....W.
    0060 - 64 ce cc 08 53 24 f1 5c-4f 6b 4c 19 f1 f8 83 be   d...S$.\OkL.....
    0070 - 97 11 17 3f 83 5f 9f 9c-16 73 86 98 c8 d6 72 a8   ...?._...s....r.
    0080 - 44 7a bd 43 e3 40 44 a5-f4 6d 7f 36 19 e4 f3 84   Dz.C.@D..m.6....
    0090 - ec 3f 0b 65 0c 53 ef 73-ef 43 19 8c 34 27 87 40   .?.e.S.s.C..4'.@
    00a0 - 7e 52 5f 6f 7a 2d e6 08-a6 fc 6f 77 a9 47 f3 fa   ~R_oz-....ow.G..
    00b0 - eb 56 ac 1d f0 42 de 45-37 22 ec 5e 13 48 09 41   .V...B.E7".^.H.A

    Start Time: 1700936536
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
    Extended master secret: no
---
250 STARTTLS
^C
root@server-1-app:/var/www/discourse# 
root@server-1-app:/var/www/discourse# 

O último log é 250 STARTTLS em vez de 250 DSN especificado no post anterior e parece ok para o não especialista em mim.

  1. Mas o discourse-doctor não consegue enviar e-mail e diz que a porta está fechada (tentei com 587, 2525 e 465 sem starttls)
==================== TESTE DE E-MAIL ====================
Para um teste robusto, obtenha um endereço de http://www.mail-tester.com/
Ou simplesmente envie uma mensagem de teste para você mesmo.
Endereço de e-mail para teste de e-mail? ('n' para pular) [contact@aether-labs.fr]: test-f2ps9wb2f@srv1.mail-tester.com
Enviando e-mail para test-f2ps9wb2f@srv1.mail-tester.com. . . 
Testando o envio para test-f2ps9wb2f@srv1.mail-tester.com usando smtp-relay.sendinblue.com:587, nome de usuário:forum@aether-labs.fr com autenticação simples.
======================================== ERRO ========================================
Falha na conexão com a porta 587.
====================================== SOLUÇÃO =======================================
O problema mais provável é que seu servidor tenha tráfego SMTP de saída bloqueado.
Se você estiver usando um serviço como Mailgun ou Sendgrid, tente usar a porta 2525.
=======================================================================================

Portanto, como a partir de (4) parece que o tráfego SMTP de saída não está bloqueado, não sei como continuar e qual configuração mudar para ter uma configuração correta dos e-mails transacionais.

Você pode verificar com o provedor da sua VM se as suas portas de saída estão bloqueadas.

Obrigado @pfaffman!
Acabei de enviar um e-mail para eles.

Mas o fato de

openssl s_client -connect smtp-relay.sendinblue.com:587 -starttls smtp

funcionar é estranho, se eu colocar smtp-relay.sendinblue.com:586 eu não tenho os resultados, então eu adivinharia que o tráfego não está bloqueado, não é? Quero dizer, os pacotes chegam a smtp-relay.sendinblue.com:587 se houver respostas…

Então o suporte me disse que estava tudo ok com a configuração e que as portas de saída não estavam bloqueadas.

Então tentei enviar e-mail através do openssl completamente, e sim, consegui me enviar um e-mail de dentro do container docker.

root@server-1-app:/var/www/discourse#  openssl s_client -starttls smtp -connect smtp-relay.sendinblue.com:587

EHLO jai
AUTH PLAIN
AGZvcnVtQGFldGhlci1sYWJ... # cortado por segurança
mail from: noreply@forum.aether-labs.fr
rcpt to: test-j0erqjxm2@srv1.mail-tester.com
data
subject: test smtp from inside


ok
.

… mas o comando discourse-doctor ainda me diz que a conexão com smtp-relay.sendinblue.com:587 falhou.

Então li o script discourse-doctor, e vi que o teste está vinculado a um job rake chamado emails:test, que encontrei em lib/tasks/emails.rake e vi que essa mensagem acontece quando a “execução expirou”.

Existe alguma opção para alterar o valor do timeout antes de considerar a execução expirada?

Editar: ok, então se eu editar app/services/email_settings_validator.rb e colocar manualmente o timeout para 30, a conexão está ok, mas o envio do e-mail ainda falha (ligado ao TestMailer, acho que não posso aumentar esse…)

root@server-1-app:/var/www/discourse# rake emails:test[test-j0erqjxm2@srv1.mail-tester.com]
Testando o envio para test-j0erqjxm2@srv1.mail-tester.com usando smtp-relay.sendinblue.com:587, nome de usuário:forum@aether-labs.fr com autenticação plain.
Conexão bem-sucedida com o servidor SMTP.
Enviando para test-j0erqjxm2@srv1.mail-tester.com. . . 
Falha ao enviar e-mail.
execução expirou

Como estou realmente no mínimo de requisitos do discourse nesta instância (1 VCPU + 2GB RAM), também posso tentar atualizar para algo melhor (como 2 VCPU + 4GB RAM).

Você tem no ambiente:\n\n\nDISCOURSE_SMTP_ENABLE_START_TLS: true\n\n\nÉ o padrão, então você não deve precisar dele, mas talvez você o tenha desativado?

Está definido como true, sim!
(Editei minha mensagem anterior com meu experimento com timeouts…)

Quanto tempo o comando openssl leva para conectar e negociar TLS?

quase 10 seg

real	0m9.798s
user	0m0.007s
sys	0m0.010s

Uau, esse é um tempo absurdamente longo.

Leva o mesmo tempo do sistema host?

Acabei de fazer o teste
~10 seg do docker
\u003c1 seg do host (certamente o tempo para eu pressionar ctrl+D para parar, é realmente quase instantâneo)

Isso é razoável.

Parece que você tem algo fundamentalmente quebrado com a rede de contêineres… esses dois comandos devem levar o mesmo tempo:

(do host):point_down:t3:

○ → time openssl s_client -starttls smtp -connect smtp-relay.sendinblue.com:587 </dev/null > /dev/null
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = *.sendinblue.com
verify return:1
250 STARTTLS
DONE

real	0m0.277s
user	0m0.007s
sys	0m0.011s

(via docker):point_down:t3:

○ → docker run --rm discourse/base:2.0.20231023-1945 bash -c 'time openssl s_client -starttls smtp -connect smtp-relay.sendinblue.com:587 </dev/null' > /dev/null
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = *.sendinblue.com
verify return:1
250 STARTTLS
DONE

real	0m0.239s
user	0m0.006s
sys	0m0.000s
1 curtida

Não é :sob:

root@server-1:/var/discourse# time openssl s_client -starttls smtp -connect smtp-relay.sendinblue.com:587 < /dev/null > /dev/null
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = *.sendinblue.com
verify return:1
250 STARTTLS
DONE

real	0m0.126s
user	0m0.003s
sys	0m0.007s
root@server-1:/var/discourse# docker run --rm discourse/base:2.0.20231023-1945 bash -c 'time openssl s_client -starttls smtp -connect smtp-relay.sendinblue.com:587 < /dev/null' > /dev/null
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 CN = *.sendinblue.com
verify return:1
250 STARTTLS
DONE

real	0m8.125s
user	0m0.007s
sys	0m0.000s

… devo desinstalar / reinstalar o docker?
Eu apenas fiz alguns comandos apt e deixei o padrão do docker-ce, então não sei o que pode estar errado…

O único mod que fiz foi adicionar o dns como sugerido em outro post porque primeiro tive erros de “host desconhecido”

root@server-1:/var/discourse# cat /etc/docker/daemon.json
{
  "dns": ["83.166.143.51", "83.166.143.52", "8.8.8.8"]
}

OK, funcionou!

Mudei meu /etc/docker/daemon.json para que o Google (8.8.8.8) ficasse em primeiro e não por último, e obtive um tempo de resposta decente para STARTTLS… e o discourse-doctor enviou e-mails com sucesso :slight_smile:

Muito obrigado pelo seu tempo @supermathie e @pfaffman

Vou adicionar uma nota na outra postagem para dizer que o Google deve ser o primeiro na lista!

Nem todas as sugestões são aplicáveis a todos os casos. Esse também é o perigo de adotar o conselho de outra pessoa apenas porque funcionou para ela.

No seu caso, parece que os servidores de nomes do Google são mais confiáveis do que os fornecidos pelo seu provedor de internet, então você deve usá-los.

2 curtidas

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