Imagens da assinatura de e-mail não aparecem? Verifique o Hotlink no cPanel

Ilustração sobre Hotlink Protection causando imagens quebradas no WordPress

Uma assinatura HTML de e-mail pode carregar imagens diretamente de um site WordPress, como logotipo e ícones de redes sociais. Porém, essas imagens podem deixar de aparecer no Thunderbird, Outlook ou em outros clientes de e-mail mesmo sem nenhuma alteração na assinatura.

Foi exatamente o que aconteceu em um caso que diagnostiquei: o HTML continuava funcionando, os textos apareciam normalmente, mas todas as imagens da assinatura estavam quebradas.

Sintoma

A assinatura estava configurada no Thunderbird em HTML e utilizava imagens hospedadas no próprio domínio:

<img src="https://meusite.com/assinatura-email/logotipo.png">

O texto, a tabela e os links da assinatura apareciam normalmente. Apenas as imagens não eram carregadas.

A primeira suspeita poderia ser alguma alteração de segurança ou permissão do Thunderbird. Antes de modificar o programa, porém, vale fazer um teste muito mais simples.

1. Teste a imagem diretamente no navegador

Copie o endereço utilizado no atributo src da imagem e abra-o no navegador:

https://meusite.com/assinatura-email/logotipo.png
Se a imagem também não abrir no navegador, o problema provavelmente não está no cliente de e-mail.

No meu caso, em vez da imagem, o navegador apresentou a página 404 do WordPress.

2. Confirme se o arquivo realmente existe

No cPanel, acesse:

Gerenciador de Arquivos → public_html

Localize a pasta onde as imagens estão armazenadas e confirme se os arquivos existem.

No caso diagnosticado, os arquivos estavam presentes no servidor e as permissões também estavam corretas:

Pasta: 0755
Arquivos: 0644

Isso criou uma situação importante para o diagnóstico: o arquivo existia fisicamente, mas não podia ser acessado pela URL pública.

3. Verifique o .htaccess

O próximo passo é verificar o arquivo:

public_html/.htaccess

No caso encontrado, havia regras semelhantes a estas:

RewriteCond %{HTTP_REFERER} !^https://meusite.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://www.meusite.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ - [F,NC]

Essas regras pertenciam a uma configuração de Hotlink Protection.

A proteção contra hotlink impede que outros sites ou aplicações carreguem diretamente imagens hospedadas no servidor. Isso pode ser útil para evitar o consumo indevido de banda, mas cria um problema quando essas imagens precisam ser utilizadas externamente.

Uma assinatura de e-mail é justamente um desses casos.

4. Por que a assinatura parou de funcionar?

O Thunderbird precisava carregar as imagens hospedadas no domínio. Como a solicitação não estava partindo de uma página do próprio site, a regra do .htaccess bloqueava o acesso.

Por isso acontecia algo aparentemente contraditório:

HTML da assinatura funcionando + arquivos existentes no servidor + imagens quebradas no e-mail.

O problema não estava no Thunderbird nem nos arquivos. Estava na regra de acesso do servidor.

5. Solução

Depois de fazer um backup do .htaccess, as regras correspondentes à proteção contra hotlink foram removidas.

Em seguida, o endereço da imagem foi testado novamente no navegador. A imagem voltou a ser exibida e, ao abrir uma nova mensagem no Thunderbird, a assinatura também voltou ao normal.

Também é importante verificar no cPanel:

cPanel → Segurança → Hotlink Protection

No caso analisado, havia ainda uma particularidade: o cPanel informava que o Hotlink Protection estava desabilitado, mas as antigas regras permaneciam no .htaccess.

Ou seja, desabilitar a ferramenta no painel não havia eliminado o bloqueio que já estava gravado no arquivo.

Ficha de consulta rápida

Quando imagens externas de uma assinatura de e-mail deixarem de aparecer:

  1. Abra a URL da imagem diretamente no navegador.
  2. Se der erro, confirme no cPanel se o arquivo existe.
  3. Confira 0755 para a pasta e 0644 para os arquivos.
  4. Examine o .htaccess.
  5. Procure regras com HTTP_REFERER e extensões como jpg, png e gif.
  6. Verifique Hotlink Protection no cPanel.
  7. Faça backup antes de modificar o .htaccess.
  8. Depois da correção, teste primeiro a URL no navegador e depois crie uma nova mensagem no cliente de e-mail.

Diagnóstico em uma frase

Se a imagem existe no servidor, mas sua URL pública não abre, verifique as regras do .htaccess antes de culpar o WordPress ou o programa de e-mail.