Solucionar migração de e-mails cPanel ao Postfix no FreeBSD 14.3

Por Equipe Técnica AviraHost · 12 min de leitura · Atualizado em · Postfix, FreeBSD, cPanel, migracao-email, IMAPSync, e-mail-corporativo, AviraHost · 0

Solucionar migração de e-mails cPanel ao Postfix no FreeBSD 14.3 é o processo de transferir caixas corporativas, histórico IMAP e autenticação de um ambiente cPanel para um MTA Postfix nativo no FreeBSD 14.3, sem perda de mensagens e com DNS (MX, SPF, DKIM, DMARC) alinhado ao novo IP. Para concluir com segurança, siga estes passos:

  1. Inventariar contas, cotas e pastas no cPanel e reduzir o TTL do MX
  2. Instalar e configurar Postfix, Dovecot e SASL no FreeBSD 14.3
  3. Criar usuários e maildirs no destino com as mesmas cotas lógicas
  4. Sincronizar histórico com IMAPSync (dry-run e depois full)
  5. Publicar SPF/DKIM/DMARC e só então apontar o MX
  6. Rodar sincronização delta final e validar filas e logs

Pré-requisitos

  • Acesso root ou sudo no FreeBSD 14.3 (SSH) e acesso ao cPanel/WHM de origem
  • IP público fixo no destino (exemplo de documentação: 203.0.113.40) e PTR coerente
  • Domínio com gestão de zona DNS (MX, TXT); TTL baixo já planejado
  • Pacotes via pkg: postfix, dovecot, cyrus-sasl, opendkim (ou equivalente), imapsync
  • Portas 25/465/587 e 993 liberadas no firewall do FreeBSD e no provedor
  • Lista de usuários, senhas (ou hashes se migrar de forma controlada) e cotas das caixas
  • Janela de manutenção e backup completo da conta cPanel antes de qualquer corte

Se o servidor FreeBSD ainda não estiver acessível por SSH, confira o material sobre acessando servidores VPS Linux da AviraHost e adapte o fluxo de chaves ao seu ambiente.

Solucionar migração de e-mails cPanel ao Postfix no FreeBSD 14.3: inventário e preparação

Antes de tocar no Postfix, o inventário no cPanel evita surpresa de cota, alias e pasta compartilhada. No painel, anote cada endereço, redirecionamento e lista. Via SSH na origem, as caixas em formato Maildir costumam ficar sob ~/mail/seudominio.com.br/ por usuário. Prefira migração por protocolo IMAP (IMAPSync) em vez de copiar só arquivos brutos: isso preserva flags, UIDs relativos e estrutura de pastas entre stacks diferentes.

Reduza o TTL dos registros MX e TXT relacionados a e-mail com pelo menos 24–48 horas de antecedência. Assim a troca de MX propaga rápido na hora do cutover. Documente o IP atual do cPanel e o IP do FreeBSD 14.3. Confirme que o hostname do destino resolve para o IP que entrará no SPF e no PTR.

Atenção: não apague contas no cPanel nem altere o MX neste estágio. A origem deve continuar recebendo até a sincronização inicial e os testes SMTP/IMAP no destino estarem estáveis.

pkg update
pkg install -y postfix dovecot cyrus-sasl opendkim ca_root_nss
Output esperado:
The following 12 package(s) will be affected...
-----
Number of packages to be installed: 12
...

No FreeBSD, habilite os serviços no boot com sysrc após a configuração mínima, não antes de validar postfix check e o socket SASL. Um guia complementar de stack de e-mail em VPS está em passo a passo para configurar servidor de e-mail no VPS Linux — use-o como referência de checklist, ajustando caminhos e rc.conf ao FreeBSD 14.3.

Configurar Postfix e entrega local no FreeBSD 14.3

A entrega local no destino precisa existir antes de qualquer IMAPSync “de verdade”. Edite o main.cf do Postfix com hostname, domínio e interfaces explícitas. Em FreeBSD o caminho padrão costuma ser /usr/local/etc/postfix/main.cf.

myhostname = mail.seudominio.com.br
mydomain = seudominio.com.br
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP
smtpd_tls_cert_file = /usr/local/etc/ssl/mail.seudominio.com.br.fullchain.pem
smtpd_tls_key_file = /usr/local/etc/ssl/mail.seudominio.com.br.privkey.pem
smtpd_use_tls = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
postfix check
sysrc postfix_enable="YES"
service postfix restart
postconf mail_version
Output esperado:
(sem erros no postfix check)
mail_version = 3.x.x

Crie usuários de sistema ou virtual (conforme o modelo escolhido) e o Maildir inicial. Em modelo simples com contas de sistema:

pw useradd joao -m -s /usr/sbin/nologin
mkdir -p /home/joao/Maildir/{cur,new,tmp}
chown -R joao:joao /home/joao/Maildir
chmod -R 700 /home/joao/Maildir

Integre o Dovecot para IMAP/POP e o socket de autenticação SASL usado pelo Postfix na submissão (587/465). Sem isso, clientes corporativos autenticam no cPanel antigo e falham no novo host. Teste localmente com swaks ou envio autenticado antes de expor o MX público.

pkg install -y swaks
swaks --to [email protected] --server 127.0.0.1 --from [email protected]
Output esperado:
=== Trying 127.0.0.1:25...
=== Connected to 127.0.0.1.
...
-> MAIL FROM:<[email protected]>
<- 250 2.1.0 Ok
...

IMAPSync: copiar histórico do cPanel sem duplicar mensagens

A sincronização IMAP é o núcleo para solucionar migração de e-mails cPanel ao Postfix no FreeBSD 14.3 com histórico íntegro. Instale o IMAPSync no host que tiver rota estável até a origem e o destino (pode ser o próprio FreeBSD).

pkg install -y imapsync
imapsync --host1 origem.seudominio.com.br --user1 [email protected] --password1 'SENHA_ORIGEM' \
  --host2 203.0.113.40 --user2 [email protected] --password2 'SENHA_DESTINO' \
  --ssl1 --ssl2 --dry
Output esperado:
....
Host1 Nb messages:     15420 messages
Host2 Nb messages:         0 messages
...
This is a dry run, no message transferred.

Remova --dry após validar pastas e contagens. Use janelas curtas, rode por caixa e compare totais por pasta (INBOX, Sent, Trash, custom). No final da migração, deixe a origem em modo somente leitura (ou suspenda envio SMTP da conta) e execute um delta:

imapsync --host1 origem.seudominio.com.br --user1 [email protected] --password1 'SENHA_ORIGEM' \
  --host2 203.0.113.40 --user2 [email protected] --password2 'SENHA_DESTINO' \
  --ssl1 --ssl2 --delete2 --expunge2

Atenção: flags como --delete2 alteram o destino. Só use quando tiver certeza de que o destino é cópia controlada da origem e há backup. Para a maioria dos cutovers, a primeira carga sem delete e um segundo passe só com mensagens novas é mais seguro.

Repita para cada usuário. Automatize com um arquivo de senhas protegido (chmod 600) e nunca versionado em git público. Se alguma pasta falhar por nome inválido, normalize no Dovecot (namespace e separador) e rode de novo só aquela pasta com opções de folder do IMAPSync.

DNS, MX e autenticação de domínio após o cutover

Registros de zona DNS definem se a mensagem chega ao FreeBSD ou continua no cPanel. Só altere o MX quando: (1) Postfix aceita SMTP externo, (2) caixas existem, (3) sincronização inicial ok, (4) SPF/DKIM prontos. Publique algo nesta linha (valores ilustrativos):

seudominio.com.br.   300  IN  MX  10 mail.seudominio.com.br.
mail.seudominio.com.br. 300 IN A 203.0.113.40
seudominio.com.br.   300  IN  TXT "v=spf1 ip4:203.0.113.40 -all"

Gere e publique DKIM no stack OpenDKIM + Postfix e mantenha DMARC em p=none na primeira semana para observar relatórios. Detalhes práticos de política estão no Guia DKIM, SPF e DMARC: configure e saia do spam e na checagem do checklist: como testar se o DKIM e SPF estão configurados. Para sintaxe de MX/TXT, use o guia de zona DNS: registros A, MX, CNAME e TXT do zero.

service opendkim enable
service opendkim start
postconf -e "smtpd_milters = inet:localhost:8891"
postconf -e "non_smtpd_milters = inet:localhost:8891"
postconf -e "milter_default_action = accept"
service postfix reload

Após o MX, monitore a fila:

mailq
tail -f /var/log/maillog
Output esperado:
Mail queue is empty
... postfix/smtp[...]: ... status=sent (250 2.0.0 Ok)

Faça a última sincronização delta do IMAPSync para capturar mensagens que chegaram na origem durante a propagação. Só então oriente os usuários a apontar clientes IMAP/SMTP para o novo hostname com SSL/TLS.

Problemas comuns e como resolver

Sintoma: Postfix recusa relay ou clientes não autenticam na 587

Causa: SASL/Dovecot sem socket no chroot do Postfix ou smtpd_sasl_path incorreto no FreeBSD.
Solução: confira no Dovecot o listener unix_listener em /var/spool/postfix/private/auth (ou caminho equivalente no ports), permissões do grupo postfix, e teste com postconf smtpd_sasl_type smtpd_sasl_path. Reinicie Dovecot e Postfix e valide com cliente autenticado.

Sintoma: IMAPSync termina com contagens diferentes ou pastas faltando

Causa: namespace distinto entre cPanel (Courier/Dovecot) e Dovecot no FreeBSD, ou pasta com caracteres especiais.
Solução: liste pastas com --justfolders, mapeie com --f1f2 quando necessário e rode de novo só as pastas divergentes. Evite copiar “Arquivo morto” duplicado se o cliente já recria a pasta no destino.

Sintoma: e-mail cai em spam ou falha DMARC após sair do cPanel

Causa: SPF ainda cita só o IP antigo, DKIM ausente no novo MTA ou PTR do 203.0.113.40 não confere com mail.seudominio.com.br.
Solução: atualize SPF com o IP do FreeBSD, publique o seletor DKIM correto, alinhe From/DKIM/SPF e peça PTR ao provedor. Mantenha DMARC em monitoramento até os relatórios estabilizarem.

Sintoma: fila cheia com “connection timed out” na porta 25

Causa: bloqueio de saída SMTP no datacenter ou firewall pf/ipfw sem regra de saída.
Solução: teste nc -vz 203.0.113.10 25 a um MX externo, revise regras pf e abra ticket com o provedor se a 25 estiver filtrada; use submission autenticada internamente e relay legítimo se aplicável.

Perguntas frequentes sobre migração de e-mails cPanel ao Postfix no FreeBSD 14.3

Como exportar as caixas de e-mail do cPanel antes da migração?

No cPanel, use o Gerenciador de Arquivos ou SSH para acessar maildir em ~/mail, ou faça backup completo da conta. Para migração seletiva, anote usuários, senhas e cotas e prefira sincronização IMAP com IMAPSync em vez de copiar só arquivos brutos.

O que é necessário no FreeBSD 14.3 para receber e-mail com Postfix?

Instale Postfix via pkg, configure myhostname, mydomain e inet_interfaces, abra as portas SMTP no firewall e defina o MX apontando ao IP público. Integre Dovecot ou similar para IMAP/POP e autenticação SASL se os clientes enviarem pelo mesmo host.

Como migrar o histórico de mensagens sem duplicar e-mails?

Use IMAPSync com opções de dry-run, depois sincronize origem cPanel e destino Postfix/Dovecot. Rode em janelas curtas, mantenha a origem somente leitura no final e confira contagens de mensagens por pasta antes de alterar o MX definitivamente.

Quando devo alterar o registro MX na migração cPanel para Postfix?

Só após o destino aceitar SMTP, as caixas existirem e uma sincronização inicial estiver ok. Reduza o TTL do MX com antecedência, aponte o MX ao FreeBSD, monitore filas e logs e faça uma última sincronização delta para capturar mensagens chegadas durante a troca.

SPF, DKIM e DMARC precisam ser refeitos no Postfix FreeBSD?

Sim. Atualize o SPF com o IP ou include do novo servidor, gere chaves DKIM no stack Postfix e publique o TXT no DNS. Valide DMARC em modo monitor antes de rejeitar, para não perder entrega após sair do cPanel.

Conclusão

  • Prepare inventário, TTL baixo e stack Postfix+Dovecot+SASL no FreeBSD 14.3 antes de qualquer corte de MX
  • Use IMAPSync com dry-run, carga completa e delta final para preservar histórico sem duplicar à toa
  • Reconfigure SPF, DKIM e DMARC no IP novo e só então aponte o MX, monitorando mailq e maillog

Leia também

Precisa de ajuda com migração de e-mails cPanel para Postfix?

Migrações de correio exigem corte de DNS, filas e autenticação bem alinhados. Se quiser apoio de quem opera infraestrutura no dia a dia, fale com o time técnico para revisar o plano de cutover do seu FreeBSD 14.3.

Falar com o suporte AviraHost


Esta resposta foi útil?