Unbox TecnologiaRELATÓRIO TÉCNICO
29 SETEMBRO 2026
FOCO DIAGNÓSTICO · SUPORTE TÉCNICO

Relatório técnico
Conexão SMTP

Cliente: Foco Diagnóstico   |   Infraestrutura: Servidor Unbox

Responsável pela análise: Marco Moura - Unbox Tecnologia
Data: 29/09/2026   |   Horário de referência: Brasília (UTC-3)

1. Objetivo e resultado da análise

Investigar os impedimentos relatados pela equipe de suporte da Vertis na integração da rotina de envio de laudos com a conta de e-mail do Foco Diagnóstico. Foram analisadas a conversa de 22 e 29/09/2026, as telas do DirectAdmin e os resultados de testes executados no computador do responsável pela análise.

Resultado: a porta 587 respondeu aos comandos SMTP e aceitou STARTTLS. Nas duas negociações TLS consultadas, o servidor apresentou certificados dentro do período de validade. Esses resultados não reproduziram a indicação de certificado expirado recebida pela ferramenta da Vertis. A causa da divergência permanece em investigação; login e envio de mensagens ainda não foram testados nesta análise.

2. Configuração de referência

ItemValor
Domíniolaboratoriofocodiagnostico.com.br
Servidor SMTPmail.laboratoriofocodiagnostico.com.br
Endereço alternativo relatadosmtp.laboratoriofocodiagnostico.com.br
Porta / segurança587 / STARTTLS
Conta de integraçãoresultado@laboratoriofocodiagnostico.com.br
IP confirmado na consulta DNS186.209.113.111
Identificação SMTP do servidorpro125.dnspro.net.br / Exim 4.100

3. Primeiro erro relatado - 22/09/2026

O log da rotina registrou as etapas “Conectando”, “Autenticando” e “Enviando mensagem”, seguidas da resposta:
R1: HELO should be a FQDN or address literal (See RFC 2821 4.1.1.1)

A resposta indica recusa da identificação HELO/EHLO enviada pelo cliente SMTP. O trecho não informa o valor transmitido nem mostra o diálogo SMTP completo. As mensagens de progresso da aplicação, isoladamente, não comprovam autenticação bem-sucedida ou aceitação da mensagem pelo servidor.

4. Orientações e segundo erro relatado

Sobre HELO/EHLO: foi orientado verificar na biblioteca SMTP a identificação do cliente, mantendo o servidor de conexão e o usuário da conta. A equipe informou que a interface permite preencher apenas servidor, porta, usuário e senha. Isso não permite concluir que a biblioteca interna não ofereça configuração de HELO/EHLO. O nome “sistema.laboratoriofocodiagnostico.com.br” foi apenas um exemplo; sua existência no DNS não foi verificada.

Teste alternativo sugerido: foi mencionada a porta 465 com TLS implícito. Não foi apresentado resultado desse teste. A troca entre 587/STARTTLS e 465/TLS implícito não corrige, por si só, uma identificação HELO/EHLO inadequada.

Em 29/09, às 15:02: a ferramenta de diagnóstico da Vertis informou conexão e saudação EHLO/HELO estabelecidas, resposta SMTP 220 após STARTTLS e o erro “O certificado apresentado por mail.laboratoriofocodiagnostico.com.br está expirado”. A equipe relatou falha também com smtp.laboratoriofocodiagnostico.com.br, mas não forneceu os detalhes do certificado recebido ou o log completo desse segundo endereço.

5. Verificações realizadas no servidor Unbox

VerificaçãoEvidência e resultado
Certificado no DirectAdminPainel indicou certificado válido, renovação automática, emissão em 05/09/2026 às 00:22 e vencimento em 04/12/2026 às 00:22. Nomes incluídos: domínio principal, ftp, mail, pop, smtp, webmail e www.
Consulta DNS no Windowsnslookup mail.laboratoriofocodiagnostico.com.br retornou 186.209.113.111, coincidente com o IP da conta no painel. Foi consultado o resolvedor Google; a resposta não era autoritativa.
Disponibilidade de OpenSSLO comando openssl version não foi reconhecido no computador local. Foi adotado diagnóstico via PowerShell/.NET, sem instalação de software.
SMTP / STARTTLS às 23:05Conexão na porta 587: saudação 220; EHLO teste.unboxtecnologia.com.br aceito com 250; STARTTLS anunciado e aceito com “220 TLS go ahead”. Negociação TLS concluída.
Certificado com nome do domínioSubject: CN=ftp.laboratoriofocodiagnostico.com.br. Emissor: YE1 / Let’s Encrypt. Emissão: 05/09/2026 00:22:11. Vencimento: 04/12/2026 00:22:10.
SMTP / TLS às 23:14Mesma conexão e porta; negociação TLS usando pro125.dnspro.net.br. Subject: CN=pro125.dnspro.net.br. Emissor: YE2 / Let’s Encrypt. Emissão: 25/09/2026 05:07:44. Vencimento: 24/12/2026 05:07:43.

As datas e os horários acima foram transcritos do painel e das saídas locais dos testes. O CN com prefixo ftp não constitui, isoladamente, incompatibilidade: o painel mostra mail e smtp entre os nomes adicionais do certificado. Não foi feita validação programática desses nomes neste diagnóstico.

6. Evidências dos certificados recebidos

Negociação usando mail.laboratoriofocodiagnostico.com.br
Impressão digital SHA-1 (Thumbprint):
EF96F8126D6AF0C9AB8268EFE14A1EE4D8FA353C

Negociação usando pro125.dnspro.net.br
Impressão digital SHA-1 (Thumbprint):
B1BB4027A0EC8ACF1F00BB419562CEEAD3DE6C85

7. Conclusões e limites

1. O endereço mail consultado aponta para o IP informado no painel e o serviço SMTP respondeu na porta 587 a partir da rede usada no teste.
2. O servidor aceitou o EHLO utilizado no diagnóstico e iniciou TLS por STARTTLS.
3. Os dois certificados recebidos estavam dentro da validade em 29/09/2026. O erro de certificado expirado não foi reproduzido nessas condições.
4. O erro de HELO de 22/09 e o erro de TLS de 29/09 são falhas distintas. O diagnóstico posterior foi feito com outra ferramenta e não comprova que a rotina original tenha sido corrigida.
5. Não há evidência suficiente para atribuir a causa a uma configuração da Unbox ou a uma falha da Vertis.

Limite relevante: o script aceitou o certificado na conexão de diagnóstico para permitir sua leitura. Assim, a negociação concluída não comprova confiança da cadeia, correspondência do hostname, revogação ou autenticação SMTP. Não foram testados envio, entrega, porta 465, IPv6, acesso a partir da rede da Vertis ou conexão sem SNI. Nenhuma configuração da hospedagem foi alterada durante as verificações.

8. Hipóteses e próximos passos

Hipóteses ainda não confirmadas: seleção de certificado diferente por SNI; conexão a outro destino no ambiente da Vertis; relógio incorreto nesse ambiente; cadeia de confiança ou validação da ferramenta; ou mudança de estado entre o teste das 15:02 e os testes das 23h. A validade dos certificados consultados enfraquece, mas não elimina, a hipótese de outro certificado expirado.

Próxima ação: executar o mesmo diagnóstico no computador ou servidor em que ocorre a falha da Vertis e comparar Subject, Issuer, NotBefore, NotAfter e Thumbprint. Registrar data/hora do equipamento, IP resolvido e nome/versão da ferramenta. Solicitar o log detalhado da negociação TLS e o HELO/EHLO enviado pela rotina original, sem incluir senhas ou dados dos laudos.

Após a comparação: validar certificado, hostname e cadeia sem ignorar erros; testar autenticação; realizar envio controlado autorizado pelo cliente e conferir recebimento. Se for identificado certificado incorreto no servidor, corrigir sua seleção ou renovação. Se for identificado comportamento da biblioteca SMTP, ajustar a integração junto à Vertis.

9. Referências técnicas

DirectAdmin - mail_sni e certificados por domínio:
https://docs.directadmin.com/directadmin/general-usage/all-directadmin-conf-values.html
DirectAdmin - Exim e certificado padrão:
https://docs.directadmin.com/other-hosting-services/exim/
Microsoft - SslStream e validação de certificados:
https://learn.microsoft.com/dotnet/api/system.net.security.sslstream

Documento elaborado com base nas evidências disponíveis até 29/09/2026 às 23:14. Credenciais, chaves privadas e conteúdo de laudos foram omitidos.

10. Roteiro de testes para a equipe de desenvolvimento

Objetivo: reproduzir a conexão a partir do ambiente da Vertis e comparar o certificado recebido com os testes da Unbox. Execute no computador, servidor ou contêiner que realmente realiza o envio dos laudos. Testar apenas no notebook do suporte pode produzir um resultado diferente da aplicação.

Se o sistema roda como serviço, registre a conta de execução, a versão da biblioteca SMTP e a versão do sistema operacional/runtime. DNS, rede e certificados confiáveis podem variar conforme o ambiente e a conta utilizada. Os comandos abaixo consultam a conexão e o certificado; não usam senha e não enviam laudos.

10.1. Windows: conferir relógio, DNS e acesso à porta

Abra o Windows PowerShell, sem necessidade de executar como administrador. Cole os comandos abaixo. Confira a data e hora usando uma referência confiável; uma data futura incorreta pode fazer um certificado vigente parecer expirado.

Get-Date -Format "yyyy-MM-dd HH:mm:ss zzz"
Get-TimeZone | Select-Object Id, DisplayName
$PSVersionTable.PSVersion
nslookup mail.laboratoriofocodiagnostico.com.br
nslookup smtp.laboratoriofocodiagnostico.com.br
Test-NetConnection mail.laboratoriofocodiagnostico.com.br -Port 587 -InformationLevel Detailed

Como funciona: Get-Date e Get-TimeZone mostram relógio e fuso; nslookup consulta o destino de cada nome; Test-NetConnection testa a abertura da conexão TCP na porta 587. Esse último comando não valida TLS nem senha.

O que comparar: no teste Unbox, mail resolveu para 186.209.113.111. Registre todos os endereços recebidos, inclusive IPv6, se houver. TcpTestSucceeded: True indica acesso TCP; False exige investigar rede/firewall e disponibilidade antes de analisar o certificado. Falha de ping isolada não comprova bloqueio da porta SMTP.

10.2. Windows: consultar SMTP, TLS e certificados

Cole todo o bloco abaixo de uma vez. Não execute apenas a linha AuthenticateAsClient: as variáveis e a conexão são criadas dentro do bloco. O roteiro faz três conexões separadas na porta 587: mail com seu nome TLS, smtp com seu nome TLS e mail com o nome TLS do servidor.

& {
    function Test-SmtpCertificate {
        param([string]$SmtpServer, [string]$TlsName)
        $tcp = [System.Net.Sockets.TcpClient]::new()
        $ssl = $null
        Write-Host "`n=== Destino: ${SmtpServer}:587 | Nome TLS: $TlsName ==="
        try {
            $pending = $tcp.ConnectAsync($SmtpServer, 587)
            if (-not $pending.Wait(10000)) { throw "Tempo de conexão excedido (10 s)." }
            Write-Host "IP conectado: $($tcp.Client.RemoteEndPoint)"
            $stream = $tcp.GetStream()
            $stream.ReadTimeout = 15000
            $stream.WriteTimeout = 15000
            $reader = [System.IO.StreamReader]::new($stream)
            $writer = [System.IO.StreamWriter]::new($stream)
            $writer.NewLine = "`r`n"
            $writer.AutoFlush = $true

            function Read-SmtpReply {
                do {
                    $line = $reader.ReadLine()
                    if ($null -eq $line) { throw "Servidor encerrou a conexão." }
                    Write-Host $line
                } while ($line -match '^\d{3}-')
                return $line
            }

            $reply = Read-SmtpReply
            if ($reply -notmatch '^220 ') { throw "Saudação inesperada." }
            $writer.WriteLine("EHLO teste.unboxtecnologia.com.br")
            $reply = Read-SmtpReply
            if ($reply -notmatch '^250 ') { throw "EHLO não foi aceito." }
            $writer.WriteLine("STARTTLS")
            $reply = Read-SmtpReply
            if ($reply -notmatch '^220 ') { throw "STARTTLS não foi aceito." }

            $callback = [System.Net.Security.RemoteCertificateValidationCallback] {
                param($sender, $certificate, $chain, $errors)
                Write-Host "Validação do Windows (SslPolicyErrors): $errors"
                if ($chain) {
                    foreach ($status in $chain.ChainStatus) {
                        Write-Host "Cadeia: $($status.Status) - $($status.StatusInformation.Trim())"
                    }
                }
                # Aceita apenas nesta consulta, para ler mesmo um certificado inválido.
                return $true
            }
            $ssl = [System.Net.Security.SslStream]::new($stream, $false, $callback)
            $ssl.ReadTimeout = 15000
            $ssl.WriteTimeout = 15000
            $ssl.AuthenticateAsClient($TlsName)
            Write-Host "Protocolo negociado: $($ssl.SslProtocol)"
            $cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new(
                $ssl.RemoteCertificate
            )
            $cert | Format-List Subject, Issuer, NotBefore, NotAfter, Thumbprint
            foreach ($extension in $cert.Extensions) {
                if ($extension.Oid.Value -eq "2.5.29.17") {
                    Write-Host "Nomes adicionais (SAN):"
                    Write-Host ($extension.Format($true))
                }
            }
            Write-Host "Consulta concluída; autenticação e envio não foram testados."
        }
        catch { Write-Host "ERRO: $($_.Exception.Message)" }
        finally {
            if ($ssl) { $ssl.Dispose() }
            $tcp.Dispose()
        }
    }

    Test-SmtpCertificate -SmtpServer "mail.laboratoriofocodiagnostico.com.br" -TlsName "mail.laboratoriofocodiagnostico.com.br"
    Test-SmtpCertificate -SmtpServer "smtp.laboratoriofocodiagnostico.com.br" -TlsName "smtp.laboratoriofocodiagnostico.com.br"
    Test-SmtpCertificate -SmtpServer "mail.laboratoriofocodiagnostico.com.br" -TlsName "pro125.dnspro.net.br"
}

Etapas executadas: conexão TCP → leitura da saudação 220 → EHLO → resposta 250 → STARTTLS → resposta 220 → negociação TLS → leitura do certificado público. O nome de EHLO identifica o cliente SMTP; o nome TLS identifica o servidor esperado e permite a seleção de certificado por SNI. São funções diferentes e não devem ser confundidas com o usuário de e-mail.

O teste usa o EHLO de diagnóstico teste.unboxtecnologia.com.br, aceito no teste Unbox. Isso não comprova que o HELO/EHLO gerado pelo sistema original esteja correto. Para investigar a falha de 22/09, é necessário registrar o valor realmente enviado pela aplicação.

Atenção ao resultado: o callback permite continuar somente nesta consulta para exibir um certificado mesmo quando há erro. SslPolicyErrors: None significa que o Windows não apontou erros de nome ou cadeia nessa negociação, nas condições locais desse teste. Outros valores e as linhas “Cadeia” devem ser enviados completos para análise. A consulta não solicita uma checagem explícita de revogação e não substitui a validação pela biblioteca usada em produção.

Não copie a aceitação incondicional do certificado para a rotina de envio. Na aplicação, mantenha a validação TLS ativada. “Consulta concluída” significa apenas que os dados foram obtidos, não que o certificado foi aprovado ou que o envio funciona.

10.3. Como interpretar e comparar

Sinal observadoInterpretação / ação
NotAfter anterior à data correta do testeCertificado recebido está vencido. Informar Subject, Issuer, Thumbprint, nome TLS e IP conectado para localizar o certificado correspondente.
NotTimeValid na cadeiaAlgum certificado da cadeia está fora da validade ou o relógio está incorreto. O erro não prova que o certificado final do domínio seja o vencido.
RemoteCertificateNameMismatchO nome esperado não corresponde ao certificado recebido. Conferir SAN, hostname configurado e seleção por SNI.
RemoteCertificateChainErrorsHá problema de cadeia/confiança/validade. Ler os detalhes de ChainStatus; não tratar automaticamente como expiração.
Thumbprint diferente do teste UnboxFoi recebido outro certificado. Investigar destino DNS, SNI, intermediários de rede ou renovação ocorrida entre os testes.
PowerShell sem erros, aplicação com falhaComparar biblioteca, conta de execução, repositório de CAs, nome TLS/SNI, horário e configuração da aplicação. O resultado do Windows não comprova o comportamento de outra biblioteca.

Referência Unbox em 29/09/2026:
mail: vencimento 04/12/2026 00:22:10; Thumbprint EF96F8126D6AF0C9AB8268EFE14A1EE4D8FA353C.
Nome TLS pro125: vencimento 24/12/2026 05:07:43; Thumbprint B1BB4027A0EC8ACF1F00BB419562CEEAD3DE6C85. O endpoint smtp ainda não foi testado diretamente pela Unbox neste relatório. Após uma renovação, é esperado que a impressão digital mude.

10.4. Alternativa em Linux / contêiner com OpenSSL

Se o envio é realizado em Linux, execute dentro do mesmo ambiente da aplicação. Os comandos abaixo pressupõem OpenSSL instalado e um shell compatível. Use o teste abaixo em vez do roteiro Windows.

date -Iseconds
openssl version
getent ahosts mail.laboratoriofocodiagnostico.com.br
openssl s_client -connect mail.laboratoriofocodiagnostico.com.br:587 -starttls smtp -name teste.unboxtecnologia.com.br -servername mail.laboratoriofocodiagnostico.com.br -verify_hostname mail.laboratoriofocodiagnostico.com.br -verify_return_error -showcerts </dev/null

Como funciona: -starttls smtp inicia TLS após o diálogo SMTP; -name define o EHLO; -servername envia o nome SNI; -verify_hostname verifica o nome no certificado; -verify_return_error interrompe a negociação se a validação falhar; -showcerts exibe a cadeia fornecida pelo servidor. A validação depende das autoridades confiáveis instaladas nesse ambiente. Nenhuma credencial é usada.

Para comparar o comportamento sem SNI, execute este segundo comando. Ele mantém a validação do nome mail e pode revelar um certificado padrão incompatível com esse nome. Uma incompatibilidade nessa condição deve ser interpretada junto à configuração do cliente, sem concluir automaticamente que o certificado está vencido.

openssl s_client -connect mail.laboratoriofocodiagnostico.com.br:587 -starttls smtp -name teste.unboxtecnologia.com.br -noservername -verify_hostname mail.laboratoriofocodiagnostico.com.br -verify_return_error -showcerts </dev/null

Registre o resultado completo, incluindo Verify return code, quando exibido, e as mensagens de erro. Caso a conexão fique aguardando, encerre com Ctrl+C e informe a última linha apresentada. Não alterar porta ou desativar validação como tentativa de corrigir um resultado ainda não identificado.

10.5. Verificar a rotina original e devolver as evidências

  1. Ativar o log de diagnóstico SMTP/TLS da biblioteca e reproduzir uma tentativa controlada, com a validação de certificado ativada.
  2. Registrar servidor e IP efetivo, porta, STARTTLS, versão da biblioteca e nome enviado por SNI. Registrar o HELO/EHLO antes e, se houver, depois de STARTTLS.
  3. Enviar à Unbox as saídas dos comandos, data/hora/fuso e o erro completo da ferramenta. Omitir senhas, tokens, comandos AUTH com conteúdo, dados de pacientes e laudos.
  4. Após resolver a validação TLS, testar autenticação usando a conta configurada e um envio de mensagem de teste sem dados clínicos, para destinatário autorizado pelo cliente. Registrar a resposta final de aceitação e confirmar o recebimento.

Critério de conclusão: validação TLS aprovada na própria aplicação, autenticação confirmada, mensagem de teste aceita pelo SMTP e recebimento verificado. O código 220 no início da sessão ou após STARTTLS não comprova envio ou entrega.

Referências dos comandos: Microsoft - Test-NetConnection · OpenSSL - s_client. Este roteiro contém instruções para novos testes; não representa resultados já executados.