Montando um servidor de e-mails completo com Postfix, Dovecot, ClamAV, SpamAssassin, Procmail e Postgrey (Grey List)
![](https://www.aprendendolinux.com/wp-content/uploads/2023/06/HeaderTI-1-1024x260.jpg)
Prezados Colegas,
Primeiramente saudações pinguianas a todos.
Sei que já tem muito tempo que não posto nada por aqui, mas hoje resolvi escrever um artigo sobre um tema que é para muitos, um tanto quanto assustador (pelo menos foi pra mim no começo de tudo).
![](https://www.aprendendolinux.com/wp-content/uploads/2012/09/Postfix.png)
Vou partir de um princípio que você já tenha tudo necessário para ter um servidor de e-mails: IP Fixo, DNS Reverso configurado, portas 25, 110 e 143 abertas no Firewall e etc.
Vamos agora colocar a mão na massa. O primeiro passo é instalar os pacotes que precisamos:
apt-get install postfix sasl2-bin libauthen-sasl-perl libsasl2-modules-sql libgsasl7 dovecot-imapd dovecot-pop3d dovecot-common clamav clamav-base clamav-daemon clamav-freshclam clamsmtp libclamav6 spamassassin procmail postgrey
É bem provável que os deamons do ClamAV não iniciem ou apresentem alguma mensagem de erro. Isso é porque o banco de dados de vírus está vazio. Então, vamos atualiza-los:
freshclam
Agora, vamos começar a configurar o Postfix:
Lembre-se que é válido sempre fazer uma cópia de segurança de todos os os arquivos originais.
Primeiro, o main.cf:
cp /etc/postfix/main.cf /etc/postfix/main.cf.default
Agora vamos edita-lo:
vim /etc/postfix/main.cf
Não vou entrar no mérito de explicar o que significa cada opção, então deixe-o assim:
mydomain = meudominio.com.br myhostname = nomedoservidor.$mydomain myorigin = $mydomain mydestination = $myhostname, $mydomain mynetworks = 127.0.0.0/8 home_mailbox = /home/$USER/Maildir/ smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_helo_required = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023 smtpd_tls_auth_only = yes smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 content_filter = scan:127.0.0.1:10025 receive_override_options = no_address_mappings mailbox_command = /usr/bin/procmail -f- -a "$USER"
Agora, o segundo arquivo, o master.cf:
cp /etc/postfix/master.cf cp /etc/postfix/master.cf.default
Agora, vamos edita-lo:
cp /etc/postfix/master.cf
Deixe-o assim:
smtp inet n - - - - smtpd -o content_filter=spamassassin pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp relay unix - - - - - smtp -o smtp_fallback_relay= showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes -o smtp_enforce_tls=no 127.0.0.1:10026 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xfoward_hosts=127.0.0.0/8 spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Agora, precisamos criar os diretórios sasl e ssl:
mkdir -p /etc/postfix/sasl /etc/postfix/ssl
Agora, precisamos criar as chaves do Postfix, mas antes disso, precisamos configurar o sasl.
Vamos fazer backup do arquivo original:
cp /etc/default/saslauthd /etc/default/saslauthd.default
Agora vamos edita-lo:
vim /etc/default/saslauthd
Deixe-o assim:
START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Vamos colocar então, o usuário sasl no grupo do postfix:
usermod -G sasl postfix
Agora precisamos restartar o serviço:
/etc/init.d/saslauthd restart
Agora chegou a hora de criar os certificados TLS. Vamos então, entrar no diretório em que vão ficar os certificados:
cd /etc/postfix/ssl/
Agora, vamos começar a criação dos certificados.
Primeiro comando:
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
Segundo comando:
chmod 0600 smtpd.key
Terceiro comando:
openssl req -new -key smtpd.key -out smtpd.csr
Quarto comando:
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
Quinto comando:
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
Sexto comando:
mv -f smtpd.key.unencrypted smtpd.key
Sétimo comando:
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Agora precisamos criar o arquivo “/etc/postfix/sasl/smtpd.conf”:
vim /etc/postfix/sasl/smtpd.conf
Deixe-o assim:
pwcheck_method: saslauthd mech_list: login
Agora, chegou a a hora de configurar o Dovecot:
Primeiro o backup:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.default
Agora vamos editar o arquivo:
vim /etc/dovecot/dovecot.conf
Deixe-o assim:
protocols = imap imaps pop3 pop3s disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " login_processes_count = 3 login_max_processes_count = 8 login_process_size = 64 mail_privileged_group = mail mail_location = maildir:~/Maildir protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol managesieve { } auth default { mechanisms = login plain passdb pam { } userdb passwd { } user = root } dict { } plugin { }
Agora, com a ajuda de um comando do Dovecot, vamos criar a estrutura das pastas para os novos usuários:
maildirmake.dovecot /etc/skel/Maildir
Agora, vamos criar as pastas para o webmail e os demais clientes de e-mail:
mkdir -p /etc/skel/Maildir/.Archives /etc/skel/Maildir/.Drafts /etc/skel/Maildir/.Junk /etc/skel/Maildir/.Sent /etc/skel/.Trash
Agora edite o arquivo subscriptions:
vim /etc/skel/Maildir/subscriptions
Deixe-o exatamente assim:
INBOX Trash Sent Drafts Archives Junk
Agora, está na hora de configurar o SpamAssassin:
cp /etc/default/spamassassin /etc/default/spamassassin.default
Agora vamos editar o arquivo /etc/default/spamassassin:
vim /etc/default/spamassassin
Deixe-o assim:
ENABLED=1 SAHOME="/var/lib/spamassassin/" OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s /var/log/spamd.log" PIDFILE="${SAHOME}spamd.pid" CRON=0
Agora, por ultimo, vamos configurar o Procmail.
Para isso, crie o arquivo /etc/procmailrc:
vim /etc/procmailrc
Deixe-o assim:
SHELL="/bin/bash" SENDMAIL="/usr/sbin/sendmail -oi -t" LOGFILE="/var/log/procmail.log" DEFAULT="$HOME/Maildir/" MAILDIR="$HOME/Maildir/" DROPPRIVS = yes :0 * ^X-Spam-Status: YES .Junk/
Agora vamos configurar o Postgrey, sempre lembrando de preservar o arquivo original:
cp /etc/default/postgrey /etc/default/postgrey.default
Agora vamos editar o arquivo de configuração:
vim /etc/default/postgrey
Deixe-o assim:
POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=60"
Agora, precisamos reiniciar todos os serviços:
Primeiro o Postfix:
/etc/init.d/postfix restart
Depois o Postgrey
/etc/init.d/postgrey restart
Depois o Dovecot:
/etc/init.d/dovecot restart
Depois o ClamAV (os dois deamons)
/etc/init.d/clamsmtp restart /etc/init.d/clamav-daemon restart
Por fim, o SpamAssassin:
/etc/init.d/spamassassin restart
Agora crie um usuário para teste:
adduser henrique
Tudo funcionado! Você poder enviar e receber e-mails com o endereço henrique@seudominio.com.br.
Agora é só correr para o abraço! Basta configurar o seu cliente preferido de e-mail e pronto!
No próximo artigo, ensinarei a configurar um webmail.
Espero que tenha colaborado.
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https://pag.ae/7WRSPXdKp
- Pix: bradesco@henrique.com.br
- PicPay: @henrique_fagundes
- PagSeguro: magnatahp@gmail.com
- PayPal: magnatahp@gmail.com
- Bitcoin: 1Fzwag6pyAWKvUFcPc2Jh9GaSRFkcRQY2K
Favorecido: Luiz Henrique Marques Fagundes