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)
acceptPare bots de spam desonestos de bagunçar sua máquina.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1Permita o pipelining apenas do localhost para permitir que você use o mailfeeder para liberar e-mails posteriormente.
pipelining_advertise_hosts = 127.0.0.1Verificaçã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.xxxConfigure 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.comEspecifique isso na configuração do exim.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsCrie 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.comCrie 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-networkingIsso 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 startDefina a senha do usuário root:
mysqladmin -u root password NOVASENHACrie o banco de dados mailwatch e preencha as tabelas:
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlCrie 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 = 20Edite 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 = &MailWatchLoggingEdite 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 bayesPreencha o banco de dados:
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sqlCrie 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 senhaAtualizaçõ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.KEYCrie 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.netCrie 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 856AA88ATorne-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.hourlyReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.