Montando um servidor de e-mails completo com Postfix, Dovecot, ClamAV, SpamAssassin, Procmail e Postgrey (Grey List)
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).
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 [email protected].
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//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes