Tenho meu próprio servidor de e-mail utilizando Postfix, Dovecot, MariaDB, Spamassassin, Clamav, Amavisd-new, Fail2ban, Nginx, Postfixadmin e Roundcube sob o CentOS 8.
Embora já tenha diversas receitas de como configurar este pacote, precisei de muitas horas para entender como manter o serviço rodando corretamente, cada configuração no main.cf e no master.cf e no fim conseguir diminuir a enxurrada de spam que chega a cada instante.
E anti-spam é o foco desta publicação. Sofri e continuo sofrendo com as constantes tentativas de utilizarem meus serviços como um zumbi ou disseminador de vírus, fraudes e tudo o mais que puderem.
Perdi a conta de quantas vezes meu serviço de DNS parou por excesso de tentativas de conexão que entupiam a memória e forçava o S.O. a cortar processos para economizar recursos e o named era o escolhido por ser o elo mais fraco.
Então, este artigo tem foco na configuração adequada para serviços de email privado, de poucos usuários e poucos domínios. Certamente muito do que está neste pequeno manual serve para serviços mais parrudos, mas acredito que para estes casos o uso de ferramentas ou serviços dedicados e especializados deva ser sempre levado em consideração.
Então deixemos de lado o falatório para irmos direto ao mão na massa.
Instalação dos pacotes
O primeiro passo é instalar todos os pacotes que serão utilizados. O Roundcube e o Postfixadmin rodam sob um webserver com suporte a PHP e cujas contas de e-mail possam ser armazenadas em um servidor de banco de dados. Como Webserver eu utilizo o Nginx e embora prefira o PostgreSQL vou utilizar o MariaDB como SGBD devido ao fato de que a maioria já o utiliza (devido ao WordPress provavelmente).
Então, ao final do processo de instalação, deveremos ter instalado alguns novos repositórios de pacotes.
Ative os repositórios de Extra Packages para a sua distribuição, caso ainda não o tenha feito. Para o CentOS 8 os comando abaixo fará isso.
$ sudo dnf install epel-releaseAdicionalmente, instale os pacotes curl, htop, vim, yum-utils, wget, net-tools, chrony e certbot que serão necessários em outros pontos da configuração.
$ sudo dnf install -y curl htop vim yum-utils wget net-tools chrony certbotPostfix
Postfix é um MTA (mail transfer agent). Um MTA faz a ponte entre os computadores para a troca de mensagens de correio eletrônico. Para o nosso caso, é o elemento principal.
A versão do Postfix que utilizarei neste documento é a 3.3. Para saber qual a versão que será instalada digite:
$ sudo dnf info postfixPara instalar execute o comando
$ sudo dnf install -y postfix postfix-mysql postfix-pcreVamos deixar o serviço parado por enquanto mas já configurado para iniciar junto com o Sistema Operacional.
$ sudo systemctl enable postfixDovecot
Dovecot é um Servidor de Email Imap e Pop3. Com ele que poderemos enviar e receber as mensagens via Postfix e entre outras coisas controlar o acesso ao serviço via autenticação.
Para instalar o Dovecot com suporte a mysql basta executar o comando:
$ sudo dnf install -y dovecot dovecot-mysqlMais uma vez, vamos ativar o serviço, porém deixá-lo parado.
$ sudo systemctl enable dovecotAmavis
Amavis é um filtro de conteúdo para correio eletrônico. Com ele é possível filtrar mensagens nocivas usando configurações contra spam, vírus e outros malwares. Abaixo dos comandos que o instalam. Ele requer muitas dependências que serão atualizadas e/ou instaladas junto. Uma dessas dependencias é o SpamAssassin que será configurado mais adiante, juntamente com todos os outros pacotes que estamos instalando.
Primeiro certifique-se de que o repositorio PowerTools está habilitado, pois é a partir dele que instalaremos o Amavisd-New.
$ sudo dnf config-manager --set-enabled powertoolsEm seguida instalamos o Amavis e algumas dependencias sendo uma delas o ClamAV que é um antivírus simples e bastante eficiente para os tipos mais comuns de ameaças e totalmente gratuito.
$ sudo dnf -y install amavisd-new clamd perl-Digest-SHA1 perl-IO-stringyNovamente, vamos ativar os serviços para que sempre iniciem de forma automática, mas por enquanto deixando-os parados.
$ sudo systemctl enable amavisd spamassassinMariaDB (ou MySQL)
Normalmente, quem usa WordPress já possui instalado e configurado o MariaDB ou o MySQL. Se esse for o seu caso, pode pular esta etapa.
Eu particularmente prefiro o PostgreSQL, mas como a intenção deste documento é permitir que DevOps consigam ter seus próprios serviços e nem sempre dá pra ter várias instâncias resolvi usar o MariaDB. Dessa forma, in case you need to add WordPress later, you won't need to add an additional DBMS or even use wrappers for it to support PostgreSQL.
Não se preocupe com as configurações neste momento, pois as detalharei mais adiante em outra publicação. Continuando com a instalação devemos executar o comando:
$ sudo dnf install -y mariadb-servere em seguida ativar o serviço para iniciar junto com o sistema
$ sudo systemctl enable mariadbWebserver (Nginx + Php-Fpm)
The last elements to be installed are part of the Webserver. It is possible that you already have one running like Apache, so this point can be skipped. Se você está iniciando um novo servidor ou se não tem intimidade com a configuração do Apache e PHP, I recommend following the tips in this installation.
Eu gosto muito do Nginx e vou usar em conjunto com o Php-Fpm.
$ sudo dnf install -y nginx php-fpmNeste ponto já temos todos os arquivos necessários para iniciar a configuração do Servidor de Email.
Sou muito preguiçoso
Não gosta de ficar digitando ou não está preocupado com os detalhes de cada item instalado. Seus problemas acabaram!
Você pode executar todos os comandos deste documento com as linhas abaixo:
ATENÇÃO! Este script é apenas um arquivo com as linhas de comando. Eventualmente pode não funcionar corretamente dependendo das configurações do seu sistema.
$ sudo dnf update
$ sudo dnf install -y epel-release
$ sudo dnf config-manager --set-enabled powertools
$ sudo dnf -y install --enable-repo=epel-release,powertools curl htop vim yum-utils wget net-tools chrony certbot postfix dovecot amavisd-new clamd perl-Digest-SHA1 perl-IO-stringy mariadb-server ngixn php-fpm
$ sudo systemctl enable postfix mariadb spamassassin amavisd dovecot nginx php-fpm Com tudo instalado podemos iniciar as configurações. Comecemos pelo MariaDB.
Deixe um comentário