Configuração · 5 min read · Jan 03, 2026

Mailscanner/Exim Gateway With Communigate PRO Guide - Page 2

Anti Spam

Se você quiser rejeitar mensagens de servidores sem DNS reverso, adicione isso sob acl_check_rcpt:, há uma lista de exceções à qual você pode adicionar domínios onde a acl não deve ser aplicada e tenta entregar uma mensagem de teste ao endereço de envio para verificar se o remetente é válido.

drop  message   = REJECTED - We don't accept messages from hosts without reverse DNS
        log_message = No reverse DNS
domains = ! lsearch;/etc/exim/checks_exempt_hosts
        !verify = reverse_host_lookup
        !verify = sender/callout=2m,defer_ok
        !condition =  ${if eq{$sender_verify_failure}{} }

Para rejeitar mensagens de clientes que não fornecem um HELO/EHLO, adicione isso ao acl_check_rcpt:

drop  message  = REFUSED - no HELO/EHLO greeting
        log_message = remote host did not present greeting
        condition = ${if def:sender_helo_name {false}{true}}

Você pode limitar a taxa de conexões ao seu servidor, adicione isso ao acl_check_connect: para fazê-lo (leia a documentação do exim sobre os parâmetros se você quiser ajustá-lo para o seu site).

deny ratelimit = 250 / 15m / strict
       message = You can only send $sender_rate per $sender_rate_period
       log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
accept

Pare bots de spam desonestos de bagunçar sua máquina.

smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1

Permita o pipelining apenas do localhost para permitir que você use o mailfeeder para liberar e-mails posteriormente.

pipelining_advertise_hosts = 127.0.0.1

Verificação de Endereço

Isso usa o roteador check_backend para se comunicar com seu sistema communigate pro via ldap para garantir que um endereço exista antes de aceitar e-mails para esse endereço.

Adicione seus servidores ldap padrão à configuração do exim.

ldap_default_servers = xxx.xxx.xxx.xxx

Configure domínios que têm uma conta catchall (sem verificação se o endereço existe antes de aceitar e-mails.

# exemplo /etc/exim/catchall_domains
somedomain.com

Especifique isso na configuração do exim.

domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domains

Crie e adicione os domínios CGP habilitados para ldap ao arquivo /etc/exim/ldap-domains. A primeira coluna é o alias do domínio ou domínio e a segunda é o domínio real como existe no ldap, pois quando você sincroniza os domínios CGP com o ldap, ele não copia os aliases de domínio também.

#exemplo  /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.com

Crie o roteador check_backend, este deve ser o primeiro roteador em sua configuração.

check_backend:
 driver = redirect
domains = ! +domains_with_catchall : +relay_to_domains
 allow_fail
 allow_defer
 forbid_file
 forbid_pipe
 data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Unknown user}}
 #version 5.x use this instead
 #data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: User Unknown}}

Entrega Limpa Exim

Esta é a configuração que é usada para entregar o e-mail limpo que o mailscanner já escaneou. O arquivo de configuração é /etc/exim/exim_out.conf. Para isso, você pode usar a configuração padrão com todas as verificações e acls removidas.

Você precisa adicionar este roteador para entregar o e-mail limpo aos servidores CGP reais. Se você estiver executando um cluster, este roteador é capaz de espalhar as entregas pelos servidores que você configurou em /etc/exim/mail-routes, tornando-o totalmente redundante.

deliver_clean:
  driver = manualroute
domains = +relay_to_domains
  transport = remote_smtp
  hosts_randomize = true
  route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}

Configurar MySQL

Adicione isso ao arquivo de configuração /etc/my.cnf:

socket=/var/lib/mysql/mysql.sock
skip-networking

Isso configura o mysql para se comunicar apenas via socket, não tcp, o que é melhor para segurança e desempenho.

Inicie o mysql, isso inicializará os bancos de dados padrão.

service mysqld start

Defina a senha do usuário root:

mysqladmin -u root password NOVASENHA

Crie o banco de dados mailwatch e preencha as tabelas:

mysql -p < /usr/local/src/mailwatch-1.0.4/create.sql

Crie o usuário mysql para registro do mailwatch e mailscanner:

mysql  
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'senha';

Crie o usuário administrador do mailwatch:

mysql mailscanner -u mailwatch -p  
Enter password: ******  
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); 

Configurar MailScanner

Introdução

O Mailscanner tem várias opções de configuração, eu só vou me concentrar naquelas que são necessárias para fazer o sistema funcionar. Para personalizar ainda mais o sistema, leia a documentação do mailscanner ou veja os arquivos de configuração de exemplo que forneci.

Configuração Básica

Por favor, edite as seguintes variáveis de configuração em /etc/MailScanner/MailScanner.conf:

Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes
  • Defina permissões
chown exim.exim -R /var/spool/MailScanner/incoming  
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}  
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}

Anti Vírus

Se você tiver um segundo scanner de vírus, defina

Virus Scanning = yes
Virus Scanners = "nome do scanner de vírus"

Listas Negras e Brancas

Usaremos listas brancas e negras baseadas em SQL (mysql) para integrar facilmente com a interface do mailwatch, permitindo que os usuários adicionem remetentes às listas brancas e negras a partir da interface web.

Edite o arquivo de configuração do mailscanner e adicione:

Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20

Edite o arquivo /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:

sub CreateList {
  my($type, $BlackWhite) = @_;
  my($dbh, $sth, $sql, $to_address, $from_address, $count);
  my($db_name) = 'mailscanner';
  my($db_host) = 'localhost';
  my($db_user) = 'mailwatch';
  my($db_pass) = 'senha';

Integração Mailwatch

Edite o arquivo de configuração do mailscanner e adicione:

Always Looked Up Last = &MailWatchLogging

Edite o arquivo /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm:

my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'senha';

Configurar Spamassassin

Esta configuração usará um banco de dados mysql para armazenar as informações do bayes. Portanto, criaremos um banco de dados e um usuário que serão usados para se conectar ao banco de dados. Também usaremos regras extras (SARE hospedadas por Daryl C. W. O’Shea http://www.dostech.ca/) para que possamos configurar o sa-update para baixá-las automaticamente.

Criar Banco de Dados MySQL

mysqladmin -p create bayes

Preencha o banco de dados:

mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sql

Crie o usuário:

mysql -p  
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'senha';

Configurar Para Usar DB

Edite o arquivo /etc/mail/spamassassin/local.cf e adicione:

bayes_store_module  Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn       DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username  bayes
bayes_sql_password  senha

Atualizações de Regras SARE

Importe a chave GPG usada para assinar as regras:

wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEY

Crie o arquivo de canais /etc/mail/spamassassin/sare-sa-update-channels.txt:

updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net

Crie um script de atualização /usr/local/bin/update-sa:

#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88A

Torne-o executável e adicione-o ao cron:

chmod +x /usr/local/bin/update-sa  
ln -s /usr/local/bin/update-sa /etc/cron.daily/  
ln -s /usr/local/bin/update-sa /etc/cron.hourly
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.