Que portas estão abertas, e porque é que a sua integração fica pendurada sem erro

«A integração não liga e não dá erro nenhum.» Quando um site tenta falar com um serviço de fora e a ligação simplesmente fica pendurada, a causa é quase sempre uma porta fechada — e, ao contrário do que muita gente supõe, não é verdade que a saída esteja toda aberta.

Há duas listas, e confundi-las custa horas

Sentido O que é
Entrada O que o mundo pode alcançar no servidor: o seu site, o FTP, o cPanel, o correio. Esta lista é fixa e igual para todos.
Saída O que o seu site pode alcançar lá fora quando chama uma API, envia por um SMTP externo ou liga a um serviço. Esta é uma lista branca: o que não está nela não passa.

A confusão habitual é ver uma porta aberta na entrada e concluir que também se pode sair por ela. São listas diferentes, e há portas numa que não estão na outra.

Entrada: o que se alcança no servidor

Para quê Portas
O site 80 e 443 — e é a 443 que interessa.
Correio 587 para enviar, 993 e 995 para receber com cifra, 110 e 143 sem cifra. Ver POP ou IMAP: qual escolher
Ficheiros 21 para FTP, e a porta de SSH que lhe for indicada — não é a 22.
Painéis 2083 cPanel, 2087 WHM, 2096 webmail. As versões sem cifra (2082, 2086, 2095) também respondem, mas use sempre as cifradas.
O SSH não está na porta do costume. A porta 22 está fechada de propósito — é a que os varredores automáticos martelam dia e noite. O acesso existe noutra porta, que lhe damos quando pedir. Se o seu programa de FTP ou de SSH dá tempo esgotado, é quase sempre isto e não um bloqueio da sua rede. Sobre bloqueios a sério, ver porque é que o seu IP é bloqueado.

Saída: onde as integrações partem

Esta é a parte que interessa a quem programa, e a que quase ninguém documenta. A regra é simples de dizer: o que a Web usa está aberto; o resto pede-se.

Tipo de ligação Estado
APIs por HTTPS (portas 443 e 80) Aberto. Gateways de pagamento, APIs de mensagens, serviços de mapas, webhooks — a esmagadora maioria das integrações modernas passa por aqui e funciona sem pedir nada.
SMTP externo na porta 587 Aberto. É a porta certa para ligar o seu site a um serviço de envio de fora.
SMTP externo na porta 465 Fechado. Ver o aviso a seguir — é o tropeção mais comum de todos.
Base de dados externa (3306, 1433, 5432) Fechado. O site não liga a uma base de dados noutro servidor.
Portas fora do comum (8443, 8080, e afins) Fechado por omissão. Pode ser aberto caso a caso — peça.
Se o formulário de contacto ou a loja não envia e-mail: troque 465 por 587. É o caso que mais tempo faz perder. Muitos tutoriais e muitos plugins vêm com a porta 465 pré-preenchida para SMTP externo — e essa ligação não sai daqui. Nada dá erro claro: o envio fica pendurado e falha por tempo esgotado. Mude para 587 com STARTTLS e passa a funcionar. Se o problema for outro, porque é que o seu e-mail não envia nem recebe tem o resto do caminho.

E os chats no site?

Perguntam-nos muito, e a resposta é sim — com uma distinção que decide tudo:

1 Widget de terceiros (Tawk.to, Crisp, WhatsApp, Messenger e semelhantes): funciona sempre. É só um bocado de JavaScript na página; a conversa corre nos servidores deles e não usa portas suas.
2 Chat feito por si em PHP, que guarda as mensagens na base de dados e as vai buscar de tempos a tempos: funciona. É um site normal — mas cuidado com o consumo, porque um pedido de dois em dois segundos por cada pessoa ligada soma depressa.
3 Chat em Node com websockets: corre no Setup Node.js App do cPanel, servido pelo mesmo endereço do site — ver que tecnologias correm aqui. O que não dá é pô-lo a ouvir numa porta própria aberta ao exterior.
4 IRC ou um servidor de mensagens seu, a ouvir numa porta: não cabe no partilhado. Isso é um serviço, e um serviço quer um servidor — ver alojamento partilhado ou VPS.

Como pedir uma porta

Se a sua integração precisa mesmo de uma porta que não está aberta, diga-nos — algumas abrem-se. Mande as três coisas que precisamos para decidir:

Porta e protocolo:   ex. 2087 TCP, saida
Para onde:           o dominio ou o IP do servico externo
Para que serve:      o que a integracao faz

Sem o destino não conseguimos abrir só o que é preciso, e abrir uma porta para o mundo inteiro num servidor partilhado não é coisa que façamos de ânimo leve — ver o que fazemos pela segurança.

Como saber se o problema é mesmo a porta

Antes de nos escrever, um teste de meio minuto separa «porta fechada» de «credenciais erradas». No Terminal do cPanel:

curl -v -m 10 telnet://smtp.exemplo.com:587
O que vê O que significa
Connected to… A porta está aberta. Se a integração continua a falhar, o problema é a senha, o utilizador ou a configuração — não a rede.
Fica parado até esgotar o tempo A porta está fechada à saída. É o sintoma clássico, e é por isso que não aparece erro nenhum na aplicação.
Could not resolve host Não é porta nenhuma: o nome está errado ou o DNS não responde.

Se quer mandar nas portas

Num plano partilhado a firewall é comum à máquina inteira e protege toda a gente que lá está — por isso não se abre por conta. Num VPS ou servidor dedicado a firewall é sua e abre o que quiser, com a responsabilidade que isso traz: ver manter o seu VPS seguro e VPS gerido ou não gerido.

A sua integração fica pendurada sem dar erro? Diga-nos o destino e a porta.

Abrir um pedido

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 900,00 MT/mês

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?