Aqui falaremos sobre os procedimentos que utilizamos para instalar o SpamAssassin sobre o CentOS (sugerimos que leiam nosso artigo sobre nossa Instalação Padrão do CentOS 7, disponível também nas referências abaixo). . Antes de iniciar esse procedimento, recomendamos uma lida em nosso artigo (neste link, ou nas referências abaixo) comparando algumas soluções antispam, para lhe ajudar a decidir se esta solução é a melhor para seu caso.

Lembre-se de alterar as partes em cinza para o padrão de sua empresa.

Após o SO instalado, para poder conectar via ssh e executar os commandos mínimos execute como root:

yum install gcc vim open-vm-tools unzip ntp net-tools wget telnet rsync -y
  • Criar o Servidor. Estes procedimentos foram baseados na versão ASSP 2.6.1, caso queira usar outra versão, acesse https://sourceforge.net/projects/assp/ e use a versão desejada. Lembre-se de verificar o nome DNS que será usado e adaptar a este manual (que aqui será usado como: antispam.suaempresa.com.br), caso o endereço seja diferente altere em todos os locais com o mesmo realce de cor cinza.
  • Configurando o Postfix. A aplicação SPAMASSASSIN filtra as mensagens, mas o envio de e-mails é feito pelo Postfix. Para realizar a configuração básica do postfix siga as etapas abaixo:
echo "# CONFIGURACAO PADRAO" >> /etc/postfix/main.cf
echo "" >> /etc/postfix/main.cf
echo "biff = no" >> /etc/postfix/main.cf
echo "append_dot_mydomain = no" >> /etc/postfix/main.cf
echo "readme_directory = no" >> /etc/postfix/main.cf
echo "myhostname = antispam.suaempresa.com.br" >> /etc/postfix/main.cf
echo "mydomain = suaempresa.com.br" >> /etc/postfix/main.cf
echo "myorigin = $mydomain" >> /etc/postfix/main.cf
echo "inet_interfaces = all" >> /etc/postfix/main.cf
echo "relay_domains = suaempresa.com.br" >> /etc/postfix/main.cf
echo "mynetworks = 127.0.0.0/8 sua_rede/sua_mascara" >> /etc/postfix/main.cf
echo "mailbox_command = procmail -a \"$EXTENSION\"" >> /etc/postfix/main.cf
echo "recipient_delimiter = +" >> /etc/postfix/main.cf
echo "" >> /etc/postfix/main.cf
echo "# REGRA DE TRANSPORTE (PARA O EXCHANGE)" >> /etc/postfix/main.cf
echo "transport_maps = texthash:/etc/postfix/transport" >> /etc/postfix/main.cf
echo "suaempresa.com.br smtp:[seu_IP]:25" >> /etc/postfix/transport
echo "# HARDENING" >> /etc/postfix/main.cf
echo "smtpd_banner = antispam.suaempresa.com.br ESMTP" >> /etc/postfix/main.cf
echo "disable_vrfy_command = yes" >> /etc/postfix/main.cf
echo "smtpd_helo_required = yes" >> /etc/postfix/main.cf
echo "smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname" >> /etc/postfix/main.cf
echo "mynetworks_style = host" >> /etc/postfix/main.cf
echo "smtpd_delay_reject = yes" >> /etc/postfix/main.cf
echo "smtpd_error_sleep_time = 1s" >> /etc/postfix/main.cf
echo "smtpd_soft_error_limit = 10" >> /etc/postfix/main.cf
echo "smtpd_hard_error_limit = 20" >> /etc/postfix/main.cf
echo "smtpd_client_connection_count_limit = 10" >> /etc/postfix/main.cf
echo "smtpd_client_connection_rate_limit = 60" >> /etc/postfix/main.cf

systemctl restart postfix
  • Adicionando Consulta DNS e RBLs. Para adicionar uma segurança ao Postfix, execute:
echo "" >> /etc/postfix/main.cf
echo "# DNS e RBLs" >> /etc/postfix/main.cf
echo "smtpd_recipient_restrictions =" >> /etc/postfix/main.cf
echo "        permit_mynetworks," >> /etc/postfix/main.cf
echo "        reject_unauth_destination," >> /etc/postfix/main.cf
echo "        reject_unauth_pipelining," >> /etc/postfix/main.cf
echo "        check_client_access texthash:/etc/postfix/rbl_whitelist," >> /etc/postfix/main.cf
echo "        reject_unknown_reverse_client_hostname," >> /etc/postfix/main.cf
echo "        reject_invalid_helo_hostname," >> /etc/postfix/main.cf
echo "        reject_non_fqdn_helo_hostname," >> /etc/postfix/main.cf
echo "        reject_non_fqdn_sender," >> /etc/postfix/main.cf
echo "        reject_non_fqdn_recipient," >> /etc/postfix/main.cf
echo "        reject_unknown_sender_domain," >> /etc/postfix/main.cf
echo "        reject_unknown_recipient_domain," >> /etc/postfix/main.cf
echo "        reject_invalid_hostname," >> /etc/postfix/main.cf
echo "        check_client_access texthash:/etc/postfix/client_checks," >> /etc/postfix/main.cf
echo "        reject_rbl_client zen.spamhaus.org," >> /etc/postfix/main.cf
echo "        reject_rbl_client bl.spamcop.net," >> /etc/postfix/main.cf
echo "        reject_rbl_client b.barracudacentral.org" >> /etc/postfix/main.cf
echo "        permit" >> /etc/postfix/main.cf

touch /etc/postfix/rbl_whitelist
touch /etc/postfix/client_checks

systemctl restart postfix
  • Instalando o SpamAssassin. Para instalar e configurar o spamassassin, execute:
yum install spamassassin -y

sed -i "s/rewrite_header/\#rewrite_header/g" /etc/spamassassin/local.cf

echo "report_safe 0" >> /etc/mail/spamassassin/local.cf
echo "required_score 5.0" >> /etc/mail/spamassassin/local.cf
echo "use_bayes 1" >> /etc/mail/spamassassin/local.cf
echo "bayes_auto_learn 1" >> /etc/mail/spamassassin/local.cf
echo "bayes_min_spam_num 30" >> /etc/mail/spamassassin/local.cf
echo "" >> /etc/mail/spamassassin/local.cf
echo "score ALL_TRUSTED -4.000" >> /etc/mail/spamassassin/local.cf
echo "score DATE_IN_PAST_12_24 2.000" >> /etc/mail/spamassassin/local.cf
echo "score DCC_CHECK 2.500" >> /etc/mail/spamassassin/local.cf
echo "score DNS_FROM_AHBL_RHSBL 0" >> /etc/mail/spamassassin/local.cf
echo "score FORGED_OUTLOOK_HTML 1.500" >> /etc/mail/spamassassin/local.cf
echo "score HEADER_FROM_DIFFERENT_DOMAINS 2.000" >> /etc/mail/spamassassin/local.cf
echo "score HTML_FONT_LOW_CONTRAST 2.00" >> /etc/mail/spamassassin/local.cf
echo "score HTML_IMAGE_RATIO_02 2.000" >> /etc/mail/spamassassin/local.cf
echo "score RCVD_IN_BRBL_LASTEXT 3.500" >> /etc/mail/spamassassin/local.cf
echo "score RCVD_IN_PBL 0.905" >> /etc/mail/spamassassin/local.cf
echo "score RCVD_IN_RP_CERTIFIED -2.500" >> /etc/mail/spamassassin/local.cf
echo "score T_HTML_ATTACH 2.000" >> /etc/mail/spamassassin/local.cf
echo "score T_LONG_HEADER_LINE_80 0.500" >> /etc/mail/spamassassin/local.cf
echo "score T_NOT_A_PERSON 0.500" >> /etc/mail/spamassassin/local.cf
echo "score T_OBFU_HTML_ATTACH 1.000" >> /etc/mail/spamassassin/local.cf
echo "score T_REMOTE_IMAGE 2.500" >> /etc/mail/spamassassin/local.cf
echo "score UPPERCASE_50_75 0.700" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_BLACK 4.250" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_DBL_REDIR 1.500" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_DBL_SPAM 5.000" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_JP_SURB 5.000" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_JP_SURBL 5.000" >> /etc/mail/spamassassin/local.cf
echo "score URIBL_WS_SURBL 5.000" >> /etc/mail/spamassassin/local.cf
echo "score SUBJ_ALL_CAPS 1.000" >> /etc/mail/spamassassin/local.cf
echo "score LOTS_OF_MONEY 0.700" >> /etc/mail/spamassassin/local.cf
echo "score T_HK_MUCHMONEY 0.700" >> /etc/mail/spamassassin/local.cf
echo "score T_KHOP_FOREIGN_CLICK 0.700" >> /etc/mail/spamassassin/local.cf
echo "score T_SHORTENED_URL_HREF 0.400" >> /etc/mail/spamassassin/local.cf
echo "score T_URL_SHORTENER 0.400" >> /etc/mail/spamassassin/local.cf
echo "score BAD_ENC_HEADER 0.400" >> /etc/mail/spamassassin/local.cf
echo "score T_UNKNOWN_ORIGIN 0.700" >> /etc/mail/spamassassin/local.cf
echo "score RP_MATCHES_RCVD -0.000" >> /etc/mail/spamassassin/local.cf
echo "score BAYES_90 4.300" >> /etc/mail/spamassassin/local.cf
echo "score BAYES_80 3.500" >> /etc/mail/spamassassin/local.cf
echo "score BAYES_60 3.000" >> /etc/mail/spamassassin/local.cf
echo "score BAYES_50 2.500" >> /etc/mail/spamassassin/local.cf
echo "score BAYES_00 -0.500" >> /etc/mail/spamassassin/local.cf 

groupadd spamd

useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd

chown spamd:spamd /var/log/spamassassin

sed -i "s/smtp      inet  n       -       n       -       -       smtpd/smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamassassin/g" /etc/postfix/master.cf

echo "spamassassin unix - n n - - pipe flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}" >> /etc/postfix/master.cf

systemctl enable spamassassin

sa-update && systemctl restart spamassassin

systemctl restart postfix

echo "00 01 * * * root /bin/sa-update && systemctl restart spamassassin" >> /var/spool/cron/root

ln -s /etc/mail/spamassassin /etc/spamassassin
  • Habilitando o Pyzor
yum install pyzor --enablerepo=fedora-source -y

echo "use_pyzor 1" >> /etc/mail/spamassassin/local.cf
echo "pyzor_path /usr/bin/pyzor" >> /etc/mail/spamassassin/local.cf
echo "pyzor_timeout 20" >> /etc/mail/spamassassin/local.cf
  • Instalando o antivírus ClamAV. Para instalar, configurar e colocar sua inicialização automática, execute:
yum install amavisd-new clamav clamav-devel clamav-scanner-systemd clamav-server clamav-server-systemd clamav-update --enablerepo=fedora-source -y

sed -i '/^Example/d' /etc/freshclam.conf
sed -i 's/#LogFileMaxSize 2M/LogFileMaxSize 2M/g' /etc/freshclam.conf
sed -i 's/#LogRotate yes/LogRotate yes/g' /etc/freshclam.conf

echo "d /var/run/clamd.amavisd 0755 amavis amavis -" >> /etc/tmpfiles.d/clamd.amavisd.conf

sed -i "1 i\ " /usr/lib/systemd/system/clamd@.service
sed -i "1 i\WantedBy=multi-user.target" /usr/lib/systemd/system/clamd@.service
sed -i "1 i\[Install]" /usr/lib/systemd/system/clamd@.service
sed -i "s/host.example.com/antispam.suaempresa.com.br/g" /etc/amavisd/amavisd.conf
sed -i "s/example.com/suaempresa.com.br/g" /etc/amavisd/amavisd.conf
sed -i "s/\# $myhostname/$myhostname/g" /etc/amavisd/amavisd.conf
sed -i "s/\# $notify_method/$notify_method/g" /etc/amavisd/amavisd.conf
sed -i "s/\# $forward_method/$forward_method/g" /etc/amavisd/amavisd.conf
sed -i "s/final_spam_destiny       = D_DISCARD/final_spam_destiny       = D_PASS/g" /etc/amavisd/amavisd.conf
sed -i "s/final_bad_header_destiny = D_BOUNCE/final_bad_header_destiny = D_PASS/g" /etc/amavisd/amavisd.conf
sed -i "s/= D_DISCARD/= D_REJECT/g" /etc/amavisd/amavisd.conf
sed -i "s/= D_BOUNCE/= D_REJECT/g" /etc/amavisd/amavisd.conf
sed -i "s/$sa_tag_level_deflt  = 2.0/$sa_tag_level_deflt  = -9999/g" /etc/amavisd/amavisd.conf
sed -i "s/\*\*\*Spam\*\*\* //g" /etc/amavisd/amavisd.conf

sed -i "$((`grep -n final_virus_destiny /etc/amavisd/amavisd.conf | cut -d: -f1`+1)) i$virus_quarantine_to      = undef;" /etc/amavisd/amavisd.conf
sed -i "$((`grep -n final_banned_destiny /etc/amavisd/amavisd.conf | cut -d: -f1`+1)) i$banned_quarantine_to     = undef;" /etc/amavisd/amavisd.conf
sed -i "$((`grep -n final_bad_header_destiny /etc/amavisd/amavisd.conf | cut -d: -f1`+1)) i$bad_header_quarantine_to      = undef;" /etc/amavisd/amavisd.conf

echo "30  3  *  *  *  /usr/local/bin/freshclam --quiet" >> /var/spool/cron/root

systemctl enable clamd@amavisd
systemctl start clamd@amavisd

systemctl enable amavisd
systemctl start amavisd

Para bloquear mais algumas extensões de arquivos anexos, execute:

sed -i "s/cpl)/cpl|vbe|com|reg|msi|ps1)/g" /etc/amavisd/amavisd.conf

Para adicionar o antivirus ao SMTP, execute:

echo "" >> /etc/postfix/main.cf
echo "# AMAVIS" >> /etc/postfix/main.cf
echo "content_filter=smtp-amavis:[127.0.0.1]:10024" >> /etc/postfix/main.cf
echo "smtp-amavis unix -    -    n    -    2 smtp" >> /etc/postfix/master.cf
echo "    -o smtp_data_done_timeout=1200" >> /etc/postfix/master.cf
echo "    -o smtp_send_xforward_command=yes" >> /etc/postfix/master.cf
echo "    -o disable_dns_lookups=yes" >> /etc/postfix/master.cf
echo "127.0.0.1:10025 inet n    -    n    -    - smtpd" >> /etc/postfix/master.cf
echo "    -o content_filter=" >> /etc/postfix/master.cf
echo "    -o local_recipient_maps=" >> /etc/postfix/master.cf
echo "    -o relay_recipient_maps=" >> /etc/postfix/master.cf
echo "    -o smtpd_restriction_classes=" >> /etc/postfix/master.cf
echo "    -o smtpd_client_restrictions=" >> /etc/postfix/master.cf
echo "    -o smtpd_helo_restrictions=" >> /etc/postfix/master.cf
echo "    -o smtpd_sender_restrictions=" >> /etc/postfix/master.cf
echo "    -o smtpd_recipient_restrictions=permit_mynetworks,reject" >> /etc/postfix/master.cf
echo "    -o mynetworks=127.0.0.0/8" >> /etc/postfix/master.cf
echo "    -o strict_rfc821_envelopes=yes" >> /etc/postfix/master.cf
echo "    -o smtpd_error_sleep_time=0" >> /etc/postfix/master.cf
echo "    -o smtpd_soft_error_limit=1001" >> /etc/postfix/master.cf
echo "    -o smtpd_hard_error_limit=1000" >> /etc/postfix/master.cf
echo "" > /var/log/maillog

init 6

Fontes/Referências

NVLAN – Comparativo Soluções Mail Gateway/Antispam OpenSource (gratuitas)
NVLAN – Instalação padrão do CentOS7

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria