I server mail odierni se impostati correttamente riescono a filtrare quasi tutto lo spam diretto verso le nostre caselle e-mail.
Ma per ogni misura di difesa adottata c’è un mondo di nullafacenti che si diverte a mettere in piedi contromisure sempre più aggressive e penetranti.
Il sistema migliore per combattere lo spam siamo noi e se il nostro sistema potesse imparare da noi non sarebbe fantastico?!
Uno strumento come DSPAM permette di “istruire” il nostro sistema mail perché possa riconoscere la posta indesiderata.
Il presupposto cardine è l’ambiente in cui opereremo: Ispconfig3 (il nostro server è basato su The Perfect Server – Debian Wheezy)
Mi occuperò di dirvi come:
- installare DSPAM e configurarlo per lavorare con Postfix e Dovecot;
- instruire DSPAM attraverso il dovecot-antispam plugin.
Installiamo
apt-get install dspam libdspam7-drv-mysql dovecot-antispam
Nella creazione del DB MySql lasciate che se ne occupi tranquillamente dbconfig.
Integriamo dapprima Postfix. Aggiungete a /etc/postfix/master.cf le seguenti righe
dspam unix - n n - 10 pipe flags=Rhqu user=vmail argv=/usr/bin/dspam --deliver=innocent,spam --user $recipient -i -f $sender -- $recipient
in /etc/postfix/main.cf le righe evidenziate
... smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf, reject_rbl_client cbl.abuseat.org, reject_rbl_client b.barracudacentral.org, reject_rbl_client bl.spamcop.net, reject_rbl_client psbl.surriel.com, pcre:/etc/postfix/dspam_filter_access ... #DSPAM dspam_destination_recipient_limit = 1
Create il file /etc/postfix/dspam_filter_access con questo contenuto
/./ FILTER dspam:unix:/var/run/dspam/dspam.sock
Ora occupatevi del file /etc/dspam/dspam.conf
Home /var/spool/dspam StorageDriver /usr/lib/i386-linux-gnu/dspam/libmysql_drv.so TrustedDeliveryAgent "/usr/sbin/sendmail" UntrustedDeliveryAgent "/usr/lib/dovecot/deliver -d %u" OnFail error Trust root Trust dspam Trust mail Trust postfix Trust vmail Trust dovecot Trust dovenull TrainingMode teft TestConditionalTraining on Feature whitelist Feature tb=5 Algorithm graham burton Tokenizer osb Pvalue bcr WebStats on Preference "trainingMode=TEFT" Preference "spamAction=tag" Preference "spamSubject=[SPAM]" Preference "signatureLocation=headers" Preference "statisticalSedation=5" Preference "enableBNR=on" Preference "enableWhitelist=on" Preference "showFactors=off" Preference "whitelistThreshold=20" Preference "processorBias=on" Preference "trainPristine=off" PurgeSignatures 14 PurgeNeutral 90 # Tokens with neutralish probabilities PurgeUnused 90 # Unused tokens PurgeHapaxes 30 # Tokens with less than 5 hits (hapaxes) PurgeHits1S 15 # Tokens with only 1 spam hit PurgeHits1I 15 # Tokens with only 1 innocent hit SystemLog on UserLog on Opt out TrackSources spam nonspam ProcessorURLContext on ProcessorBias on StripRcptDomain off Debug * DebugOpt process spam fp inoculation corpus ParseToHeaders on ChangeModeOnParse on ChangeUserOnParse full Broken case ServerPID /var/run/dspam/dspam.pid ServerDomainSocketPath "/var/run/dspam/dspam.sock" ClientHost /var/run/dspam/dspam.sock Include /etc/dspam/dspam.d/
Le istruzioni IgnoreHeader e AllowOverride sono stati inseriti in due file separati all’interno della cartella /etc/dspam/dspam.d/
Prima di passare al file /etc/dovecot/dovecot.conf creiamo due cartelle
mkdir -pv /etc/sieve/conf.d/before mkdir -pv /etc/sieve/conf.d/after
Create il file /etc/sieve/conf.d/before/spam-folder.sieve con il seguente contenuto e fate in modo che sia di proprietà dell’utente:gruppo vmail e compilate per sieve
require ["regex", "fileinto", "imap4flags"]; # Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox if allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$", not header :contains "X-DSPAM-Reclassified" "Innocent") { # Mark as read setflag "\Seen"; # Move into the Junk folder fileinto "Spam"; # Stop processing here stop; }
chown -R vmail:vmail /etc/sieve/* sievec /etc/sieve/conf.d/before/
Adesso tocca a Dovecot. Ora tocca a /etc/dovecot/dovecot.conf
... protocol imap { mail_plugins = quota imap_quota antispam } ... plugin { quota = dict:user::file:/var/vmail/%d/%n/.quotausage sieve=/var/vmail/%d/%n/.sieve sieve_extensions = +spamtest +spamtestplus +relational +comparator-i;ascii-numeric sieve_before = /etc/sieve/conf.d/before sieve_after = /etc/sieve/conf.d/after # Antispam (DSPAM) antispam_backend = dspam antispam_signature = X-DSPAM-Signature antispam_signature_missing = error antispam_trash = trash;Trash;Deleted Items;Deleted Messages antispam_spam = Spam;Junk;Indesiderata antispam_allow_append_to_spam = yes antispam_dspam_binary = /usr/bin/dspam antispam_dspam_args = --deliver=;--user;%u antispam_dspam_result_header = X-DSPAM-Result antispam_dspam_result_blacklist = Virus antispam_dspam_spam = --class=spam antispam_dspam_notspam = --class=innocent #antispam_debug_target = syslog #antispam_verbose_debug = 1 }
Correggiamo proprietari e permessi su alcuni file e directory
chgrp vmail /etc/dspam/dspam.conf chgrp vmail /var/log/dspam chmod g+w /var/log/dspam chgrp vmail /etc/dspam/dspam.d/* chgrp -R vmail /var/spool/dspam
And now: It’s show time! Riavviamo i servizi e controlliamo che tutto funzioni (modificate il file /etc/default/dspam cambiando START da ‘no’ a ‘yes’ per permettere al demone di avviarsi)
/etc/init.d/dovecot restart /etc/init.d/postfix restart /etc/init.d/dspam start
Da questo momento se vi dovesse arrivare dello spam in Posta in arrivo vi basterà spostarlo in Spam/Junk perché il sistema impari da voi. Di contro se per errore un messaggio pulito finisse in Spam/Junk spostatelo in Posta in arrivo.
ATTENZIONE: ho detto che il sistema imparerà da voi, perciò dategli tempo e state certi che non vi deluderà!!!