Mailscanner Guide · 5 min read · Jan 03, 2026
Guida Mailscanner/Exim Gateway Con Communigate PRO - Pagina 2
Anti Spam
Se vuoi rifiutare messaggi da server senza dns inverso, aggiungi questo sotto acl_check_rcpt:, ha una lista di eccezioni a cui puoi aggiungere domini dove l’acl non dovrebbe essere applicato e prova a consegnare un messaggio di prova all’indirizzo di invio per verificare se il mittente è valido.
drop message = REJECTED - Non accettiamo messaggi da host senza DNS inverso
log_message = Nessun DNS inverso
domains = ! lsearch;/etc/exim/checks_exempt_hosts
!verify = reverse_host_lookup
!verify = sender/callout=2m,defer_ok
!condition = ${if eq{$sender_verify_failure}{} }Per rifiutare messaggi da client che non forniscono un HELO/EHLO, aggiungi questo a acl_check_rcpt:
drop message = REFUSED - nessun saluto HELO/EHLO
log_message = l'host remoto non ha presentato un saluto
condition = ${if def:sender_helo_name {false}{true}}Puoi limitare il numero di connessioni al tuo server, aggiungi questo a acl_check_connect: per farlo (leggi la documentazione di exim sui parametri se vuoi ottimizzarlo per il tuo sito).
deny ratelimit = 250 / 15m / strict
message = Puoi inviare solo $sender_rate per $sender_rate_period
log_message = RATE: $sender_rate/$sender_rate_period (max $sender_rate_limit)
acceptFerma i bot di spam malintenzionati dal rovinare la tua macchina.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1Consenti il pipelining solo dal localhost per permetterti di utilizzare successivamente mailfeeder per rilasciare la posta.
pipelining_advertise_hosts = 127.0.0.1Verifica Indirizzo
Questo utilizza il router check_backend per comunicare con il tuo sistema communigate pro tramite ldap per garantire che un indirizzo esista prima di accettare la posta per quell’indirizzo.
Aggiungi i tuoi server ldap predefiniti alla configurazione di exim.
ldap_default_servers = xxx.xxx.xxx.xxxConfigura i domini che hanno un account catchall (nessuna verifica se l’indirizzo esiste prima di accettare la posta.
# esempio /etc/exim/catchall_domains
somedomain.comSpecifica questo nella configurazione di exim.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsCrea e aggiungi i domini CGP abilitati ldap al file /etc/exim/ldap-domains. La prima colonna è l’alias del dominio o il dominio e la seconda è il dominio effettivo come esiste in ldap poiché quando sincronizzi i domini CGP con ldap non copia anche gli alias dei domini.
#esempio /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.comCrea il router check_backend, questo dovrebbe essere il primo router nella tua configurazione.
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: Utente sconosciuto}}
#versione 5.x usa questo invece
#data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: Utente sconosciuto}}Consegna Pulita Exim
Questa è la configurazione utilizzata per consegnare la posta pulita che mailscanner ha già scansionato. Il file di configurazione è /etc/exim/exim_out.conf. Per questo puoi utilizzare la configurazione predefinita con tutti i controlli e le acls rimosse.
Devi aggiungere questo router per consegnare la posta pulita ai server CGP effettivi. Se stai eseguendo un cluster, questo router è in grado di distribuire le consegne tra i server che hai configurato in /etc/exim/mail-routes rendendolo completamente ridondante.
deliver_clean:
driver = manualroute
domains = +relay_to_domains
transport = remote_smtp
hosts_randomize = true
route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}Configura MySQL
Aggiungi questo al file di configurazione /etc/my.cnf:
socket=/var/lib/mysql/mysql.sock
skip-networkingQuesto configura mysql per comunicare solo tramite il socket e non tcp, il che è meglio per la sicurezza e per le prestazioni.
Avvia mysql, questo inizializzerà i database predefiniti.
service mysqld startImposta la password dell’utente root:
mysqladmin -u root password NEWPASSWORDCrea il database mailwatch e popola le tabelle:
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlCrea l’utente mysql per il logging di mailwatch e mailscanner:
mysql
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';Crea l’utente admin di mailwatch:
mysql mailscanner -u mailwatch -p
Enter password: ******
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); Configura MailScanner
Introduzione
Mailscanner ha diverse opzioni di configurazione, mi soffermerò solo su quelle necessarie per far funzionare il sistema. Per personalizzare ulteriormente il sistema, ti prego di leggere la documentazione di mailscanner o di guardare i file di configurazione di esempio che ho fornito.
Configurazione di Base
Si prega di modificare le seguenti variabili di configurazione in /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- Imposta i permessi
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 Virus
Se hai un secondo scanner di virus imposta
Virus Scanning = yes
Virus Scanners = "nome dello scanner di virus"Liste Nere e Liste Bianche
Utilizzeremo il whitelisting e il blacklisting basati su SQL(mysql) per integrare facilmente il frontend di mailwatch per consentire agli utenti di whiteliste e blacklistare i mittenti dall’interfaccia web.
Modifica il file di configurazione di mailscanner e aggiungi:
Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20Modifica il file /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) = 'password';Integrazione Mailwatch
Modifica il file di configurazione di mailscanner e aggiungi:
Always Looked Up Last = &MailWatchLoggingModifica il file /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm:
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';Configura Spamassassin
Questa configurazione utilizzerà un database mysql per memorizzare le informazioni bayesiane. Quindi creeremo un database e un utente che verranno utilizzati per connettersi al database. Utilizzeremo anche regole extra (SARE ospitate da Daryl C. W. O’Shea http://www.dostech.ca/) quindi configureremo sa-update per scaricarle automaticamente.
Crea Database MySQL
mysqladmin -p create bayesPopola il database:
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sqlCrea l’utente:
mysql -p
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';Configura Per Usare DB
Modifica il file /etc/mail/spamassassin/local.cf e aggiungi:
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 passwordAggiornamenti Regole SARE
Importa la chiave GPG utilizzata per firmare le regole:
wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEYCrea il file dei canali /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.netCrea uno script di aggiornamento /usr/local/bin/update-sa:
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88ARendilo eseguibile e aggiungilo a 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.hourlyRicevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.