Voltar para blog

Resolvendo lentidão crítica no Roundcube Webmail

27/08/2025 · 2 min · E-mail

Compartilhar

Seu servidor está ocioso, os sites carregam rápido, mas o Roundcube demora 30 a 60 segundos por clique? Esse padrão geralmente indica gargalo lógico (IMAP, DNS, sessão), não falta de hardware.

1) Sintoma clássico: servidor saudável, webmail lento

Métricas comuns durante o incidente:

Mesmo assim, o errors.log do Roundcube mostra falhas recorrentes de sessão, login IMAP e chamadas externas.

2) Causas técnicas mais frequentes

A) Banco: Duplicate entry ... for key 'PRIMARY'

Quando há atraso de resposta, o cliente pode reenviar requisição e gerar contenção em inserts de sessão/cache, criando efeito de travamento na UI.

B) IMAP: Empty startup greeting

Se o Dovecot limita conexões por IP e o webmail usa localhost, o teto é atingido rapidamente e conexões novas falham antes do handshake IMAP.

C) Timeouts externos (DNS/API/fontes)

Chamadas para recursos externos (como fontes remotas) podem bloquear renderização quando DNS/rede oscila (VPN, Tailscale, resolver lento).

3) Correção passo a passo

Passo 1: ajuste limites no Dovecot

No arquivo de configuração aplicável:

mail_max_userip_connections = 20
remote 127.0.0.1 {
  mail_max_userip_connections = 200
}

Reinicie:

systemctl restart dovecot

Passo 2: force loopback IPv4 no Roundcube

No config.inc.php, evite localhost:

$config['imap_host'] = '127.0.0.1:143';
$config['smtp_host'] = '127.0.0.1:587';

Isso reduz ambiguidades de resolução e evita caminhos IPv6/DNS desnecessários.

Passo 3: reduza dependências externas

Ainda no config.inc.php:

$config['standard_fonts'] = true;

A ideia é evitar que rendering dependa de fetch externo lento.

Passo 4: limpe estado de sessão/cache

Se o banco acumulou erro de duplicidade, limpe tabelas de trabalho:

mysql roundcube_db -e "TRUNCATE TABLE session; TRUNCATE TABLE cache; TRUNCATE TABLE cache_index; TRUNCATE TABLE cache_messages;"

Passo 5: reinicie workers PHP persistentes

Em ambientes LiteSpeed/lsphp, processos antigos podem manter config antiga:

killall -u webapps -9 lsphp
/usr/local/lsws/bin/lswsctrl restart

Lentidão crítica no Roundcube costuma ser efeito combinado de limite IMAP por IP, espera de rede externa e contenção em sessão/cache. Ao concentrar tráfego em 127.0.0.1, ampliar limites locais e limpar estado transitório, a interface volta a responder de forma consistente.

CC BY-NC

Este post está licenciado sob CC BY-NC.

Comentários

Participe da discussão abaixo.