Tenho meu próprio servidor de e-mail utilizando postfix, dovecot, MariaDB, spamassassin, clamav, Amavisd-new, fail2ban, nginx, postfixadmin e roundcube sob o CentOS 7.
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 para o CentOs, Postfix, Dovecot, SpamAssassin, MariaDB, Nginx, PHP, PostfixAdmin, RoundCube e opcionalmente o Amavis e o Clamav.
Ative os repositórios de Extra Packages para a sua distribuição, caso ainda não o tenha feito. Para o CentOS 6 ou 7 os comando abaixo farão isso.
$ sudo yum install epel-release
$ sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm Adicionalmente, instale os pacotes curl, htop, vim, yum-utils, wget, net-tools, ntp e certbot que serão necessários em outros pontos do documento.
$ sudo yum install -y curl htop vim yum-utils wget telnet net-tools ntp python2-certbot-nginxPostfix
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 e para instalá-lo utilizei o repositório GhettoForge.
Para isso execute os comandos abaixo:
# importando a chave
$ sudo rpm --import http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7
# instalando o repositorio GhettoForge
$ sudo rpm -Uvh http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpmPara se certificar de que o repositório está ativo verifique se o pacote postfix3 está disponível
$ sudo yum info postfix3 --enablerepo=gf-plusNota: O repositório gf-plus é instalado desativado e é melhor mantê-lo assim, pois ele contém versões de pacotes que conflitam com versões existentes nos repositórios base da instalação do CentOS.
A saída deverá ser algo como:
(..)
Available Packages
Name : postfix3
Arch : x86_64
Epoch : 2
Version : 3.3.3
Release : 1.gf.el7
Size : 3.0 M
Repo : gf-plus/x86_64
Summary : Postfix Mail Transport Agent
URL : http://www.postfix.org
License : IBM
Description : Postfix is a Mail Transport Agent (MTA), supporting LDAP, SMTP AUTH (SASL),
: TLSCom o repositório configurado e pronto para uso, vamos remover o postfix atual (que costuma ser instalado por padrão no CentOS) pela versão mais atual.
$ sudo yum remove -y postfix && sudo yum -y install postfix3 postfix3-ldap postfix3-mysql postfix3-pcre --enablerepo=gf-plusVamos deixar o serviço parado por enquanto mas já configurado para iniciar junto com o Sistema Operacional.
$ sudo systemctl enable postfix && sudo systemctl stop 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 basta executar o comando:
$ sudo yum install -y dovecot dovecot-mysqlMais uma vez, vamos ativar o serviço, porém deixá-lo parado.
$ sudo systemctl enable dovecot && sudo systemctl stop 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. No nosso caso usaremos a versão amavisd-new. Abaixo dos comandos que o instalam. Ele requer muitas dependências que serão atualizadas e/ou instaladas junto. Uma dessas dependências é o SpamAssassin que será configurado mais adiante, juntamente com todos os outros pacotes que estamos instalando.
$ sudo yum install -y amavisd-newComplementando a instalação de elementos de filtro de conteúdo nocivo, instalaremos também o ClamAV que é um antivírus simples e bastante eficiente para os tipos mais comuns de ameaças e totalmente gratuito.
$ sudo yum install -y clamavNovamente, vamos ativar os serviços para que sempre iniciem de forma automática, mas por enquanto deixando-os parados.
$ sudo systemctl enable spamassassin && sudo systemctl stop spamassassin
$ sudo systemctl enable amavisd && sudo systemctl stop amavisdMariaDB (ou MySQL)
Normalmente, quem usa WordPress já possui instalado e configurado o MariaDB ou o MySQL. 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.
Since the intention is to install the latest version, we will use the official repository. Below are all the necessary commands.
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
$ sudo yum install -y MariaDB-server MariaDB-client
$ sudo systemctl enable mariadb && sudo systemctl stop mariadbWebserver (Nginx and PHP)
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. If you are starting a new server, I recommend following the tips in this installation.
I really like Nginx and I will use it together with PHP-FPM. Again, I will use repositories that allow installing the latest possible versions.
$ sudo rpm --import https://nginx.org/keys/nginx_signing.key
$ sudo yum -y install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ sudo yum-config-manager --enable remi-php73
$ sudo yum install -y nginx php php-fpm php-imap php-gd php-intl php-mcrypt php-mysql php-mysqlnd php-pdo php-xml php-xmlrpc php-tidy php-pecl-zip
$ sudo systemctl enable nginx && sudo systemctl stop nginx
$ sudo systemctl enable php-fpm && sudo systemctl stop php-fpmRoundcube and Postfixadmin
Os últimos itens a serem instalados são o Roundcube e o Postfixadmin. O Roundcube é um cliente de e-mail web para ser usado com PHP e o Postfixadmin é um gerenciador web de contas e domínios para o Postfix também usado com PHP. Como são aplicações PHP para serem usadas dentro do Webserver, caso esteja usando Apache ou outro Webserver, será necessário adaptar algumas informações. Aqui usarei diretórios default.
$ cd /var/www/html
$ sudo wget https://github.com/roundcube/roundcubemail/releases/download/1.3.9/roundcubemail-1.3.9-complete.tar.gz
$ sudo tar -xzvf roundcubemail-1.3.9-complete.tar.gz
$ sudo wget -O postfixadmin-3.2.gz https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.2/postfixadmin-3.2.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fpostfixadmin%2Ffiles%2Flatest%2Fdownload
$ sudo tar -xzvf postfixadmin-3.2.gzNeste 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:
$ sudo yum install -y curl htop vim yum-utils wget epel-release
$ curl -sS https://www.marcosregis.com/download/regis-mailserver-centos7-script | sudo bashATENÇÃO! Este script é apenas um arquivo com as linhas de comando. Eventualmente pode não funcionar corretamente dependendo das configurações do seu sistema.
Com tudo instalado podemos iniciar as configurações. Comecemos pelo MariaDB.
Deixe um comentário