@ :~/blog/dspam-setting-postfix-dovecot-ispconfig3-environment$
← cd ~/blog

less dspam-setting-postfix-dovecot-ispconfig3-environment.md

DSPAM: setting up with Postfix/Dovecot in Ispconfig3 environment

#Bash#Debian & Sysadmin#Ispconfig archivio

# 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.

dspam

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à!!!