Como montar o seu próprio servidor de e-mail

Se você sempre quis ter o seu próprio servidor de e-mail, este guia é para você! Monte um servidor de e-mail completo em menos de uma hora com o script EmailWiz do Luke Smith e o webmail Roundcube, tudo numa VPS de US$ 2–3/mês.

Introdução

Quer ter o seu próprio e-mail ultraprivado, como name@yourdomain.com, com uma interface de webmail bonita? Este guia mostra como montar um servidor de e-mail completo em menos de uma hora usando o lendário script EmailWiz do Luke Smith + o webmail Roundcube — tudo numa VPS de US$ 2–3/mês.

Tudo é gratuito, de código aberto e 100% sob o seu controle.

Passo 0: Arrume uma VPS barata

Bons provedores com promoções frequentes:

Requisitos:

  • Qualquer localização (EUA funciona bem)
  • Debian 10 ou 11 (vamos usar o Debian 10 neste guia)
  • Pelo menos 1 GB de RAM (2 GB ou mais recomendado)
  • Defina o hostname no cadastro como o seu domínio (por exemplo, sobremail.com)

Espere a implantação → pegue a senha de root no e-mail → entre via SSH.

Passo 1: Proteção básica da VPS

ssh root@your-vps-ip
apt update && apt upgrade -y

Troque a senha de root:

passwd

Crie e envie uma chave SSH (faça isso a partir da sua máquina local):

ssh-copy-id root@your-vps-ip

Agora desative o login por senha:

nano /etc/ssh/sshd_config

Altere:

PasswordAuthentication no
UsePAM no

Depois:

systemctl restart sshd

Agora só a sua chave SSH funciona — muito mais seguro.

Passo 2: Instale o EmailWiz (o script mágico)

apt install curl nginx python3-certbot-nginx -y

Aponte estes registros DNS para o IP da sua VPS:

  • yourdomain.com → IP da VPS (registro A)
  • mail.yourdomain.com → IP da VPS (registro A)

Rode o script do Luke:

curl -LO lukesmith.xyz/emailwiz.sh
sh emailwiz.sh

Siga as perguntas:

  • Responda Yes/Y para tudo
  • Quando pedir o “System mail name” → digite SÓ yourdomain.com (NÃO mail.yourdomain.com!)

Espere ~5–10 minutos. Quando terminar, ele te dá três registros DNS para adicionar:

  1. Registro TXT do DKIM (mail._domainkey.yourdomain.com)
  2. Registro TXT do DMARC (_dmarc.yourdomain.com)
  3. Registro TXT do SPF (domínio raiz)

Adicione-os no seu provedor de DNS (Cloudflare, Namecheap etc.).

Passo 3: Configure o DNS reverso (essencial para a entregabilidade!)

No painel da Cloudcone → Networking → rDNS → defina como yourdomain.com NÃO ative o IPv6 (a Cloudcone ainda não suporta rDNS em IPv6 — isso vai prejudicar a entregabilidade).

Passo 4: Crie sua primeira caixa de e-mail

useradd -G mail -m yourusername
passwd yourusername

Agora o seu e-mail é: yourusername@yourdomain.com

Teste no Thunderbird/cliente IMAP:

  • IMAP: mail.yourdomain.com (porta 993, SSL/TLS)
  • SMTP: mail.yourdomain.com (porta 465, SSL/TLS)

Passo 5: Instale o webmail Roundcube

Adicione o backports + o repositório do PHP 8.x:

apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
apt update
apt install -y php8.0-fpm php8.0-common php8.0-gd php8.0-imap php8.0-mysql php8.0-curl php8.0-zip php8.0-xml php8.0-mbstring php8.0-intl mariadb-server

Proteja o MySQL:

mysql_secure_installation

Crie o banco de dados do Roundcube:

mysql -u root -p
CREATE DATABASE roundcube;
CREATE USER 'roundcubeuser'@'localhost' IDENTIFIED BY 'strongpassword';
GRANT ALL ON roundcube.* TO 'roundcubeuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Baixe e extraia o Roundcube (a versão completa mais recente):

cd /var/www
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz
tar xvf roundcubemail-1.6.9-complete.tar.gz
mv roundcubemail-1.6.9 roundcube
rm roundcubemail-1.6.9-complete.tar.gz
chown -R www-data:www-data /var/www/roundcube/temp /var/www/roundcube/logs
mysql roundcube < /var/www/roundcube/SQL/mysql.initial.sql

Configuração do Nginx para o Roundcube (/etc/nginx/sites-enabled/roundcube):

server {
    listen 80;
    listen [::]:80;
    server_name yourdomain.com;
    root /var/www/roundcube;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
        expires 360d;
        access_log off;
    }
}

Teste e recarregue o Nginx, depois obtenha o SSL:

nginx -t && systemctl reload nginx
certbot --nginx -d yourdomain.com

Acesse https://yourdomain.com/installer → siga o assistente:

  • Banco de dados: roundcube, usuário roundcubeuser, a senha que você definiu
  • Host IMAP: localhost
  • Host SMTP: localhost
  • Host padrão: mail.yourdomain.com

Ative todos os plugins menos o Enigma (ele quebra as identidades em versões mais antigas).

Ao terminar, apague o instalador:

rm -rf /var/www/roundcube/installer

Passo 6: Ajustes de qualidade de vida

Edite /var/www/roundcube/config/config.inc.php:

// Login with just username (no need to type @domain.com)
$config['username_domain'] = 'yourdomain.com';

// Stay logged in for 6 months
$config['session_lifetime'] = 259200;

// Disable Enigma if you enabled it
// Remove 'enigma' from $config['plugins'] array

Aumente o tamanho dos anexos:

nano /etc/php/8.0/fpm/php.ini
upload_max_filesize = 50M
post_max_size = 50M

Depois:

systemctl restart php8.0-fpm

Passo 7: Proteção contra força bruta com o Fail2Ban

apt install fail2ban -y
cd /var/www/roundcube/plugins
wget https://github.com/texxasrulez/roundcube_fail2ban/archive/refs/tags/1.4.zip
unzip 1.4.zip
mv roundcube_fail2ban-1.4 fail2ban
rm 1.4.zip

Ative na configuração do Roundcube (config.inc.php):

$config['plugins'][] = 'fail2ban';

Adicione a jail (/etc/fail2ban/jail.local – crie se não existir):

[roundcube]
enabled = true
port = http,https
filter = roundcube
action = iptables-multiport[name=roundcube, port="http,https"]
logpath = /var/www/roundcube/logs/errors.log
maxretry = 5
bantime = 3600

Crie o filtro (/etc/fail2ban/filter.d/roundcube.conf):

[Definition]
failregex = IMAP Error: Login failed for .* from <HOST>
ignoreregex =

Reinicie:

systemctl restart fail2ban php8.0-fpm

Pronto! Agora o seu webmail está protegido.

Resultado final

Agora você tem:

  • Servidor de e-mail completo com DKIM, SPF e DMARC
  • Webmail Roundcube bonito e rápido
  • Zero envolvimento do Google/Microsoft
  • Login uma vez a cada 6 meses
  • Proteção contra força bruta
  • Tudo por ~US$ 50/ano

Bem-vindo à verdadeira liberdade no e-mail.

Obrigado pela leitura! 😊

Criado com Hugo
Tema Stack desenvolvido por Jimmy