Instalar um servidor de e-mail próprio com Modoboa no Debian

Publicado a Atualizado a 6 min de leitura

O instalador do Modoboa configura o Postfix, o Dovecot, o webmail e o SSL numa só passagem. Veja como instalar o seu próprio servidor de e-mail no Debian e definir os registos DNS necessários.

Prefere ter os seus e-mails num servidor próprio, sob o seu próprio domínio, em vez de os deixar num fornecedor de correio gratuito? O Modoboa é uma das soluções mais cómodas para isso. O instalador que vem incluído configura o Postfix, o Dovecot, a base de dados, o filtro de spam, o webmail e uma interface de administração numa só passagem.

Este guia descreve a instalação em Debian 12 e Debian 11. O Debian 10 já não é suportado e não deve servir de base a um novo servidor de e-mail.

Requisitos

  • Um vServer próprio ou um servidor root com uma instalação Debian acabada de fazer. Recomendamos (não é obrigatório, mas é sensato) reservar um servidor pequeno exclusivamente para o serviço de correio, porque o hostname e o reverse DNS são adaptados ao domínio de e-mail.
  • Acesso root através de SSH.
  • Um domínio próprio, no qual possa definir os registos DNS por si mesmo.
  • Um endereço IPv4 fixo para o qual possa criar um registo de reverse DNS.
  • As portas de correio têm de estar acessíveis: 25 (SMTP), 587 e 465 (envio pelos seus utilizadores), 143 e 993 (IMAP), além de 80 e 443 para o webmail e para a emissão do certificado.

Importante: execute a instalação num sistema acabado de instalar. Um servidor web já em funcionamento ou uma base de dados existente fazem o instalador abortar com frequência.

Preparar o sistema

Comece por atualizar a lista de pacotes e todos os pacotes já instalados:

apt update && apt upgrade -y

Instale depois os pacotes que o instalador espera encontrar:

apt-get install sudo git python3 mariadb-server -y

Conclua a configuração da base de dados respondendo às perguntas do assistente. Defina nessa altura uma palavra-passe segura para o administrador da base de dados:

sudo mysql_secure_installation

Definir o hostname

O servidor precisa de um hostname completo, coerente com o domínio de e-mail que vai usar mais tarde. Sem este passo, a instalação falha:

hostnamectl set-hostname mail.<DOMINIO>.<EXTENSAO>

O ideal é criar já agora, no DNS, o registo A exatamente para este nome. O instalador pede mais tarde um certificado Let's Encrypt, e isso só resulta se o nome já apontar para o IP do seu servidor.

Descarregar o instalador do Modoboa

cd /tmp
git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer

Gerar e adaptar o ficheiro de configuração

Deixe primeiro o instalador criar apenas o ficheiro de configuração e parar logo a seguir:

python3 ./run.py --stop-after-configfile-check <DOMINIO>.<EXTENSAO>

Abra o ficheiro gerado:

nano installer.cfg

Adapte as secções seguintes. Assim o servidor recebe um certificado SSL gratuito da Let's Encrypt e liga-se à base de dados local:

[certificate]
generate = true
type = letsencrypt

[letsencrypt]
email = admin@<DOMINIO>.<EXTENSAO>

[database]
engine = mysql
host = 127.0.0.1
install = true

Indique um endereço de e-mail que leia de facto. A Let's Encrypt envia por essa via os avisos, caso uma renovação não se concretize.

Iniciar a instalação

python3 ./run.py mail.<DOMINIO>.<EXTENSAO>

O processo demora alguns minutos. Aproveite o tempo para criar os registos DNS.

Criar os registos DNS

Registo A e registo MX

O registo A aponta para o IP do seu servidor, o registo MX diz ao resto do mundo qual é o host que aceita o correio do seu domínio. A prioridade "10" é o valor habitual quando existe apenas um servidor de e-mail:

1.º registo:
Subdomínio: mail
Tipo: A (IPv4)
Destino: <IP-Servidor>
O resultado deve ficar assim: mail.<DOMINIO>.<EXTENSAO> IN A <IP-Servidor>

2.º registo:
(Subdomínio: @)
Tipo: MX
Destino: mail.<DOMINIO>.<EXTENSAO>
O resultado deve ficar assim: @ IN MX 10 mail.<DOMINIO>.<EXTENSAO>

SPF, DKIM e DMARC

Sem estes três registos, as suas mensagens vão com toda a probabilidade parar à pasta de spam dos destinatários. Os grandes fornecedores exigem-nos hoje de forma explícita.

O SPF define que servidores podem enviar em nome do seu domínio. Fica como registo TXT no domínio principal:

Tipo: TXT
Nome: @
Valor: v=spf1 mx -all

O DKIM assina criptograficamente as suas mensagens de saída. O Modoboa consegue gerar as chaves de cada domínio por si próprio. Depois da instalação, encontra a chave pública na interface de administração, nas definições do domínio em causa. É esse valor que introduz como registo TXT no DNS.

O DMARC indica aos destinatários como devem tratar as mensagens que falham o SPF ou o DKIM. Comece com uma definição de simples observação e aperte-a mais tarde:

Tipo: TXT
Nome: _dmarc
Valor: v=DMARC1; p=none; rua=mailto:postmaster@<DOMINIO>.<EXTENSAO>

Reverse DNS (PTR)

O registo PTR resolve o seu endereço IP de volta para o hostname. Muitos servidores de e-mail recusam liminarmente as ligações sem um registo PTR correspondente. Na KernelHost, define-o por si mesmo na área de cliente:

"Os Meus Serviços" -> "Selecionar o servidor" -> "Clicar no botão Reverse DNS" -> mail.<DOMINIO>.<EXTENSAO>

O que importa é que o registo PTR e o hostname coincidam exatamente.

Primeiros passos depois da instalação

Se a instalação correu bem, reinicie o servidor uma vez:

reboot

A partir daí chega à interface de administração em https://mail.<DOMINIO>.<EXTENSAO>. Inicie sessão com a conta de administrador que o instalador criou e altere a palavra-passe logo à primeira. Crie a seguir o seu domínio e as caixas de correio pretendidas.

Teste depois nos dois sentidos: envie uma mensagem do seu novo servidor para uma caixa de correio externa e outra do exterior para o seu novo endereço. Para confirmar que o SPF, o DKIM, o DMARC e o PTR funcionam mesmo, o caminho mais rápido é um dos testadores de correio disponíveis gratuitamente na Internet.

Erros frequentes

  • A instalação aborta de imediato: o hostname não é um nome de domínio completo. Verifique-o com hostname -f.
  • O certificado não é emitido: o registo A de mail.oseudominio não aponta para o servidor, ou a porta 80 está bloqueada. A Let's Encrypt valida o domínio pela porta 80.
  • As mensagens vão parar ao spam: normalmente falta o registo PTR, ou o SPF e o DKIM não estão definidos. Verifique os quatro registos antes de colocar o servidor em produção.
  • As mensagens de saída são rejeitadas: o endereço IP pode constar de uma lista de bloqueio. A maioria dos operadores disponibiliza uma forma de consultar essa situação e de pedir a remoção.
  • O instalador comunica um erro na base de dados: o MariaDB ainda não foi concluído com mysql_secure_installation, ou a secção da base de dados no ficheiro installer.cfg não está correta.
  • Depois de um reinício nada funciona: verifique os serviços envolvidos com systemctl status postfix dovecot nginx.

Um servidor de e-mail próprio exige mais manutenção do que outros serviços: atualizações, backups das caixas de correio e atenção permanente à entregabilidade. Se assumir esse trabalho, ganha em troca o controlo total sobre a sua comunicação.

Autor: XEfnexX (pseudónimo)

Perguntas frequentes

De que versão do Debian preciso para o Modoboa?
Use o Debian 12 ou o Debian 11 numa instalação limpa. O Debian 10 já não é suportado e não deve ser utilizado para um novo servidor de e-mail.
Porque é que as minhas mensagens vão parar à pasta de spam?
Na maioria dos casos falta o registo de reverse DNS, ou não estão definidos registos SPF, DKIM e DMARC. Verifique os quatro pontos antes de colocar o servidor em produção.
Posso instalar o Modoboa num servidor que já aloja um site?
Desaconselhamos. O instalador espera um sistema limpo e aborta com frequência quando já existe um servidor web ou uma base de dados em funcionamento.
Que portas tenho de abrir?
A porta 25 para a receção de correio, 587 e 465 para o envio pelos seus utilizadores, 143 e 993 para IMAP, além de 80 e 443 para o webmail e para a emissão do certificado SSL.
Como defino o registo de reverse DNS?
O registo PTR é definido por si na área de cliente, em Os Meus Serviços: selecione o servidor, abra Reverse DNS e introduza aí o hostname do seu servidor de e-mail.

Servidor de e-mail Modoboa Postfix Dovecot Debian SPF-DKIM-DMARC Reverse DNS