Manual de configuração · v1.0.0 Windows .msi · Linux systemd · Docker

De um host novo ao fluxo de e-mails em produção em 8 etapas

Um servidor de e-mail depende mais da sua rede do que do seu hardware: se a porta 25 estiver bloqueada ou o DNS reverso (PTR) estiver ausente, as mensagens não serão entregues, independentemente da potência da CPU. Este guia conduz você, em ordem rigorosa, das verificações preliminares, passando pela instalação, DKIM com chave dupla, TLS e configuração de dispositivos móveis, até a primeira entrega verificada.

Capítulo 01

Como o nextxch inicializa e chega à produção

O nextxch reúne ESMTP, IMAP4rev2, POP3, JMAP, Exchange ActiveSync, CalDAV/CardDAV, ManageSieve, SpamGuard, o arquivo GoBD WORM, o Admin Cockpit (/admin/) e o nextxch Webmail PWA (/mail/) em um único binário com segurança de memória (~40 a 90 MB de RAM em repouso). Nada é baixado do GitHub na primeira inicialização, e não são necessários wrappers NSSM externos, Redis, Rspamd nem contêineres de webmail separados.

A ordem importa: Verifique o Capítulo 02 (porta 25 & DNS reverso no seu provedor) antes de executar qualquer comando, depois siga o Capítulo 04 para a sua plataforma e consulte o Capítulo 06 sempre que uma saída divergir do estado esperado.
ETAPA 01-02Instalar & entrarInstale o pacote verificado com SHA-256, abra as portas e faça login em /admin/.
ETAPA 03-05Domínio, TLS & Dual DKIMEmita o certificado ACME/PFX e publique os registros DNS RSA-2048 & Ed25519.
ETAPA 06-07Proteger & conectar dispositivosAtive SpamGuard, IPv6 dual-stack, GoBD e perfis QR/WhatsApp com 1 clique.
ETAPA 08Verificar o fluxo de e-mailsExecute o testador de MX/DANE de saída + teste de ida e volta via Message Trace.
Capítulo 02

Pré-requisitos de sistema & rede (checklist pré-voo)

Marque todos os 6 itens abaixo antes de instalar. Quatro deles são controlados fora do servidor, no painel de controle da hospedagem ou do DNS.

Porta Protocolo / serviço Direção Requisito e orientação
25 / TCPESMTP (MX servidor a servidor + STARTTLS/DANE)Entrada e saídaObrigatória - Essencial para receber e entregar e-mails da internet.
443 / TCPHTTPS (/admin/, /mail/, JMAP, ActiveSync, DAV, MTA-STS)Entrada (+ saída)Obrigatório - atende Webmail, admin, Mobile Push, DAV, JMAP e ACME.
465 / TCPSubmissão SMTPS (TLS implícito, RFC 8314)EntradaObrigatória - porta preferencial de submissão com TLS implícito (RFC 8314).
587 / TCPSubmissão SMTP (STARTTLS)EntradaObrigatório - submissão STARTTLS padrão para Outlook, impressoras e ERPs.
993 / TCPIMAPS (IMAP4rev2 TLS implícito)EntradaObrigatório - IMAP4rev2 criptografado com push IDLE sem polling.
80 / TCPHTTP (ACME HTTP-01 & Autoconfig)EntradaRecomendado (opcional ao usar TLS-ALPN-01 ou PFX do gateway).
4190 / TCPManageSieve (STARTTLS)EntradaOpcional (o editor visual de Sieve do Webmail já funciona pela porta 443).
143 / TCPIMAP (STARTTLS)EntradaOpcional (prefira a porta 993 com TLS implícito).
995 / TCPPOP3S (TLS implícito)EntradaOpcional (somente se o POP3 estiver ativado em Admin > Rede; desativado por padrão).
110 / TCPPOP3 (STLS)EntradaOpcional (prefira a porta 995 com TLS implícito).
Porte da implantação CPU RAM Disco & banco de dados recomendado
1 - 250 caixas de correio2 vCPU1 - 2 GBNVMe/SSD · SQLite WAL embutido + Zstandard (~40-90 MB de footprint do servidor).
250 - 2.500 caixas de correio4 vCPU4 - 8 GBNVMe + S3 híbrido opcional · PostgreSQL 18 ou Microsoft SQL Server (2019-2025).
Cluster HA 2.500+8+ vCPU16+ GBNós Active-Active em PostgreSQL 18 ou SQL Server Always On + S3 Object Lock.
Capítulo 03

Escolha da plataforma e do backend de armazenamento

Todas as plataformas executam exatamente o mesmo conjunto de recursos. Escolha o método de implantação e o backend SQL adequados à sua equipe de operações.

Plataforma Método Mais indicado para
Windows Server 2019-2025.msi / install.ps1Serviço nativo do Windows SCM sem Docker ou NSSM; ideal junto com Microsoft SQL Server ou migrações do hMailServer.
Linux (x86_64 & ARM64)install.sh · .deb · systemdDaemon systemd enxuto, sem root, em servidores Debian, Ubuntu LTS, RHEL/Rocky ou ARM64.
Docker Composenextxch/server:1.0.0Stacks de contêineres reproduzíveis em hosts Linux, VMs Proxmox, Synology, UGREEN e Unraid.
macOS & Kuberneteslaunchd / Helm v3Servidores de escritório Mac mini (launchd) ou clusters Kubernetes Active-Active horizontais.
Capítulo 04

O tutorial em 8 etapas: da instalação ao primeiro e-mail de teste verificado

Selecione abaixo sua plataforma de destino. Cada uma das 8 etapas explica o que faz, mostra o comando exato, confirma o resultado esperado e destaca a armadilha mais comum exatamente onde ela ocorre.

ETAPA 01

Instale o serviço & abra as portas do firewall

Baixa o pacote da versão, verifica seu digest SHA-256 e registra o serviço em segundo plano e o diretório de dados persistente.

# PowerShell (Admin): Downloads .msi (v1.0.0), verifies SHA-256 & launches setup
irm https://nextxch.com/install.ps1 | iex

# Ensure Windows Defender Firewall permits inbound mail & HTTPS ports
New-NetFirewallRule -DisplayName "nextxch" -Direction Inbound `
  -Protocol TCP -LocalPort 25,80,443,465,587,993,4190 -Action Allow
# Debian / Ubuntu / RHEL / macOS: Verifies SHA-256 & registers systemd unit
curl -fsSL https://nextxch.com/install.sh | sudo bash

# If UFW is enabled, allow required mail & HTTPS ports:
sudo ufw allow 25,80,443,465,587,993,4190/tcp
# Pulls SHA-256-verified nextxch/server:1.0.0 & writes docker-compose.yml
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- \
  --mode docker --domain firma.de --hostname mail.firma.de --admin admin@firma.de
Resultado esperado: o serviço está ativo, habilitado na inicialização e escutando nas portas HTTPS e de e-mail.
Armadilha comum: se a inicialização informar 'Address already in use', um MTA pré-instalado (Postfix/Exim) ou servidor web está ocupando a porta 25/80/443 -> veja o Capítulo 06 (#sym-port-bind).
ETAPA 02

Verificar a integridade do serviço & entrar em /admin/

Confirme nos logs que os listeners iniciaram sem erros e entre no Admin Cockpit com as credenciais de administrador definidas durante a instalação.

Get-Service nextxch
# Open in browser: https://mail.firma.de/admin/ (or http://localhost/admin/)
sudo systemctl status nextxch
sudo journalctl -u nextxch -n 30 --no-pager
# Open in browser: https://mail.firma.de/admin/
docker compose ps
docker compose logs --tail=30 nextxch
# Open in browser: https://mail.firma.de/admin/
Resultado esperado: o painel em tempo real em /admin/ abre e mostra listeners ativos para SMTP, IMAP e HTTPS.
ETAPA 03

Configurar domínio de e-mail & DKIM paralelo com duas chaves

Abra Domains & Routing -> Manage Domain em /admin/. O nextxch provisiona automaticamente dois pares de chaves DKIM paralelos: RSA-2048 (seletor s2026) e Ed25519 (seletor s2026ed).

Boa prática: publique AMBOS os registros TXT no DNS uma única vez na etapa 5; depois, você pode alternar os modos de assinatura (RSA-2048, Ed25519 ou Dual-Sign) no servidor instantaneamente, sem esperar pela propagação do DNS.
ETAPA 04

Ativar certificado TLS (ACME Let's Encrypt ou PFX do gateway)

Abra Segurança & certificados -> TLS & ACME. Assim que mail.company.com resolver para o seu host, solicite um certificado Let's Encrypt via HTTP-01 ou TLS-ALPN-01 (porta 443), ou envie um certificado .pfx/.pem do seu pfSense/gateway SSL.

Resultado esperado: o hot reload dinâmico de SNI em 0 ms ativa o certificado imediatamente em HTTPS, SMTPS, IMAPS e ManageSieve, sem reiniciar.
ETAPA 05

Publicar registros DNS e executar a verificação de DNS ao vivo

Copie os registros DNS calculados do DNS Advisor integrado (ou exporte o arquivo de zona BIND): MX, A/AAAA, SPF, ambos os seletores DKIM (s2026 + s2026ed), DMARC, MTA-STS, TLS-RPT e, opcionalmente, DANE TLSA (3 1 1) e BIMI.

Resultado esperado: clicar em 'Verificar DNS ao vivo' exibe selos verdes de aprovação para MX, SPF, ambos os seletores DKIM, DMARC e PTR.
Armadilha comum: muitos painéis de controle de DNS acrescentam seu domínio automaticamente; informe s2026._domainkey como host, e não s2026._domainkey.company.com -> veja #sym-dkim-dns.
ETAPA 06

Proteja o servidor antes da produção

Registre uma chave de acesso (WebAuthn) ou 2FA TOTP na sua conta de administrador, mantenha os limites do SpamGuard em 4.5 / 9.0 com o greylisting inteligente ativo e ative o arquivamento GoBD WORM em domínios comerciais.

Resultado esperado: proteção com banimento automático, TLS obrigatório antes da autenticação e limites de taxa de saída protegem automaticamente a reputação do seu IP.
ETAPA 07

Crie a primeira caixa de correio & conecte dispositivos móveis em 30 segundos

Crie sua primeira caixa de correio de usuário em Contas e listas, faça login em https://mail.company.com/mail/ e clique em 'Configuração do dispositivo' para gerar um QR code ou um link de onboarding com 1 clique seguro para mensageiros, com um perfil iOS/macOS assinado com CMS ou Exchange ActiveSync.

Resultado esperado: o iOS exibe um selo verde 'Verificado' no perfil e sincroniza imediatamente Mail, calendários, contatos e notas.
ETAPA 08

Confirme a entrega de entrada & saída via testador de MX ao vivo & Message Trace

Execute Diagnostics & Logs -> Outbound MX & DANE Tester contra gmail.com ou um endereço externo e, em seguida, envie um e-mail real a partir de /mail/ e responda para verificar o fluxo nos dois sentidos.

Resultado esperado: o Message Trace registra Delivered via TLS 1.3 em ambas as direções, e os cabeçalhos do destinatário externo mostram spf=pass, dkim=pass e dmarc=pass.
Capítulo 05

Operação atrás de pfSense / OPNsense, gateways SSL & proxies reversos

Ao implantar atrás de pfSense, OPNsense, Sophos ou HAProxy, configure estas três opções para diagnósticos precisos e preservação do IP real do cliente:

Cenário Configuração recomendada
Split-DNS / Hairpin-NATConfigure uma substituição de host Split-DNS no Unbound apontando mail.company.com para o IP interno da LAN, ou ative Pure NAT Reflection no seu gateway.
Protocolo PROXY do HAProxyAtive o protocolo PROXY v1/v2 restrito ao CIDR do seu proxy confiável, para que o SPF e o Auto-Ban vejam o IP remoto real em vez do IP do gateway.
Certificado do gatewaySincronize o certificado .pfx/.pem renovado do seu gateway com o nextxch para as portas 25/465/587/993; o SNI dinâmico recarrega a quente os certificados atualizados sem downtime.
Capítulo 06

Solução de problemas por sintoma (do erro à correção imediata)

Clique abaixo no sintoma que você observa ou digite parte da mensagem de erro na caixa de filtro rápido acima:

O verificador de portas externo informa 'Blocked / Timeout', embora o serviço esteja em execução TCP 25 / 465 / 993 Timeout
Causa raiz: ou ambos os hosts estão atrás do mesmo firewall pfSense/OPNsense sem Hairpin NAT (NAT Reflection), ou o firewall externo do seu provedor de nuvem ainda bloqueia a porta 25.
Correção: Verifique o Diagnóstico de rede em /admin/ (que detecta automaticamente gateways Hairpin NAT co-hospedados) e confirme se o firewall externo da nuvem permite TCP 25, 443, 465, 587 e 993.
O serviço não consegue fazer bind em uma porta na inicialização Address already in use (:25 / :80 / :443)
Causa raiz: um MTA pré-instalado (Postfix, Exim, Sendmail) no Linux ou IIS/Nginx/Apache já ocupa a porta 25, 80 ou 443.
Correção: verifique os listeners ativos via 'sudo ss -tulpn' no Linux (desative postfix/exim não utilizados) ou 'Get-NetTCPConnection -State Listen' no PowerShell.
E-mails de saída para Gmail, Microsoft 365 ou grandes ISPs são rejeitados 550-5.7.25 / 550-5.7.1 PTR missing
Causa raiz: seu host se conecta para fora via IPv6 em uma interface dual-stack, mas você configurou um registro PTR apenas para IPv4 e esqueceu o registro PTR de IPv6.
Correção: defina registros PTR correspondentes para AMBOS os seus endereços IPv4 e IPv6 no painel do seu provedor de hospedagem, de acordo com Smtp:ServerHostName.
O Live DNS Inspector não encontra seu registro TXT de DKIM ou DMARC publicado NXDOMAIN s2026._domainkey
Causa raiz: Muitos painéis de controle de DNS acrescentam automaticamente o apex da zona, transformando 's2026._domainkey.company.com' em 's2026._domainkey.company.com.company.com', ou dividem strings RSA-2048 longas com espaços indevidos.
Correção: informe no seu painel de DNS apenas o rótulo de host relativo ('s2026._domainkey', 's2026ed._domainkey', '_dmarc') e verifique com 'nslookup -type=txt s2026._domainkey.company.com'.
O ACME do Let's Encrypt não consegue emitir um certificado ou o navegador mostra um aviso de TLS ACME challenge failed
Causa raiz: ou o registro DNS A/AAAA de mail.company.com ainda não se propagou, ou a porta 80/443 é interceptada antes por outro proxy reverso.
Correção: Use TLS-ALPN-01 quando a porta 443 chegar diretamente ao nextxch, abra a porta 80 para HTTP-01 ou importe o certificado renovado do seu proxy reverso via PFX/PEM.
O iPhone abre um link de onboarding do WhatsApp / Teams sem iniciar imediatamente a instalação do perfil em Ajustes iOS In-App WebView
Causa raiz: o iOS restringe a instalação de perfis de sistema .mobileconfig exclusivamente ao Safari, enquanto os apps de chat abrem links primeiro em uma WebView incorporada.
Solução: toque no ícone de bússola do Safari ('Abrir no Safari'), conforme indicado na página de onboarding; crawlers de pré-visualização nunca consomem o token de uso único.
O contêiner Docker reinicia ou não consegue gravar no volume montado do host Access to path '/var/lib/nextxch' denied
Causa raiz: Propriedade rígida dos diretórios do host ou rótulos SELinux no RHEL/Rocky/Fedora bloqueiam gravações do contêiner em pastas montadas via bind mount.
Correção: use volumes Docker nomeados ou acrescente ':Z' aos bind mounts em hosts com SELinux em modo enforcing.
O cliente de e-mail não consegue entrar via IMAP ou SMTP 535 Authentication failed / TLS required
Causa raiz: o cliente tentou um login em texto simples sem TLS (bloqueado por RequireTlsForAuth) ou a 2FA está ativa na conta e uma senha de app é necessária para IMAP/SMTP legado.
Correção: configure a porta 993 (SSL/TLS) e a porta 465 (SSL/TLS) ou 587 (STARTTLS) com o endereço de e-mail completo como nome de usuário e gere uma senha de app dedicada quando a 2FA estiver ativada.
Capítulo 07

Próximos passos: upgrades em 10 segundos, backups e migração

Assim que o fluxo de e-mail nos dois sentidos for confirmado, seu servidor estará pronto para produção. Tenha à mão estes três fluxos de trabalho operacionais:

# 1) In-place upgrade (preserves configuration, certificates & mailboxes):
# Linux / macOS:
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update
# Windows PowerShell (Administrator):
irm https://nextxch.com/install.ps1 | iex

# 2) Backup scope (only 2 paths):
# - Config file: appsettings.Production.json (including license token)
# - Data dir:    Storage:DataDirectory (SQLite WAL / blobs / TLS certs)
#   or pg_dump / SQL Server backup when running an external DB cluster

Respostas rápidas antes da primeira inicialização

O nextxch exige NSSM ou Docker Desktop no Windows Server?

Não. Ao contrário de servidores que exigem wrappers de serviço NSSM no Windows, o nextxch se registra nativamente no Service Control Manager (SCM) do Windows por meio do nosso instalador .msi oficial, sem Docker Desktop, WSL2 ou Hyper-V.

O nextxch precisa de acesso à internet na primeira inicialização para baixar sua WebUI ou regras de spam?

Não. Todo o Admin Cockpit (/admin/), o nextxch Webmail PWA (/mail/), o mecanismo SpamGuard e todos os listeners de protocolo estão contidos no pacote verificado por SHA-256, permitindo uma inicialização 100% offline/air-gapped.

Por que o DNS reverso (PTR) precisa corresponder antes de enviar o primeiro e-mail de teste?

Grandes receptores como Gmail, Microsoft 365 e ISPs europeus verificam se tanto o seu endereço IPv4 público quanto o IPv6 resolvem via PTR de volta para o seu hostname SMTP EHLO exato (por exemplo, mail.company.com). A falta de registros PTR IPv6 em hosts dual-stack é a causa nº 1 de rejeições 550-5.7.25.

Como funcionam as atualizações in-place quando o servidor já está em produção?

Execute curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update no Linux/macOS ou irm https://nextxch.com/install.ps1 | iex no Windows (ou use o atualizador com 1 clique em /admin/). Seu appsettings.Production.json, certificados TLS, chaves DKIM e armazenamento de e-mails são preservados automaticamente.