less dspam-setting-postfix-dovecot-ispconfig3-environment.md
DSPAM: setting up with Postfix/Dovecot in Ispconfig3 environment
# archivio storico — scritto anni fa, conservato com'era. Alcune info sono datate.
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à!!!