E-mail senza spam con SpamAssassin
Se stai eseguendo la tua casella di posta su un server utilizzando Postfix e Dovecot, è indispensabile installare un software anti-spam per proteggere la tua casella di posta dall'essere bombardata da e-mail di spam in arrivo.
E per questo SpamAssassin è una delle migliori soluzioni disponibili. È abbastanza efficace e uno dei più popolari.
In questo post vedremo come configurare spamassassin con postfix e dovecot per la protezione antispam.
Partiamo dal presupposto che tu abbia già configurato Postfix e Dovecot sul tuo server per la gestione della posta in arrivo.
E che stai utilizzando Dovecot LMTP per la consegna di posta per gli account utente. Il processo era stato descritto in un post precedente qui -
Configura un server di posta con Postfix e Dovecot su Ubuntu / DebianSpamassassin esegue la scansione delle e-mail in arrivo per identificare lo spam e se un'e-mail viene rilevata come potenzialmente spam, Spamassassin aggiunge le intestazioni a quell'e-mail per contrassegnarla come spam.
Il controllo dello spam avviene a livello di Postfix. Postfix è configurato per parlare con Spamassassin come content_filter.
Nella fase successiva, Dovecot analizza queste intestazioni per identificare i messaggi di spam e li inserisce in una cartella Spam separata, proprio come Gmail.
1. Installa Spamassassin
La prima cosa sarebbe installare i pacchetti spamassassin.
$ apt-get install spamassassin spamc
2. Configura un account utente e un gruppo per il servizio spam
# groupadd spamd # useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd # mkdir /var/log/spamassassin # chown spamd:spamd /var/log/spamassassin
3. Configura Spamassassin
Modifica /etc/default/spamassassin in modo che queste opzioni siano impostate:
# Change to one to enable spamd ENABLED=1 SAHOME="/var/log/spamassassin/" # Options # See man spamd for possible options. The -d option is automatically added. # SpamAssassin uses a preforking model, so be careful! You need to # make sure --max-children is not set to anything higher than 5, # unless you know what you're doing. OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username spamd \ -H ${SAHOME} -s ${SAHOME}spamd.log"
Trova anche l'opzione chiamata CRON in basso e cambiala in 1. Ciò consentirà l'aggiornamento automatico delle regole di spamassassin non appena vengono rilasciate.
# Cronjob # Set to anything but 0 to enable the cron job to automatically update # spamassassin's rules on a nightly basis CRON=1
4. Avvia il demone Spamassassin (spamd)
# service spamassassin start Starting SpamAssassin Mail Filter Daemon: spamd. [email protected]:/etc/default# [email protected]:/etc/default# service spamassassin status * spamd is running [email protected]:/etc/default#
Spamassassin avvia un servizio in background, quindi usa il comando netstat per assicurarti che spamassassin funzioni correttamente o meno.
# netstat -nlp4 | grep spam tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN 1123/spamd.pid
4. Configura Postfix per utilizzare Spamassassin come filtro
Postfix deve essere configurato per utilizzare il servizio spamassassin per filtrare tutta la posta in arrivo
Il file di configurazione di postfix master.cf deve essere modificato per aggiungere il filtro spamassassin. Apri il file.
# cat /etc/postfix/master.cf
Aggiungi quanto segue alla fine del file
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Dopo aver aggiunto le righe precedenti a master.cf, il prossimo compito è riavviare postfix e assicurarsi che funzioni correttamente.
$ service postfix restart
5. Configura Spamassassin per contrassegnare i messaggi di spam
Dopo aver configurato Postfix per l'utilizzo di Spamassassin, è il momento di configurare Spamassassin per modificare le e-mail in base ai controlli antispam. Il file di configurazione è - /etc/spamassassin/local.cf
$ nano /etc/spamassassin/local.cf
Decommenta la riga rewrite_header per modificare le righe Oggetto delle email identificate come spam.
# Add *****SPAM***** to the Subject header of spam e-mails # # rewrite_header Subject *****SPAM***** rewrite_header Subject [***** SPAM _SCORE_ *****]
La riga sopra aggiungerebbe il punteggio Spam con i segni di asterisco per indicare che il messaggio sembra spam. Punteggi più alti indicherebbero una maggiore probabilità che il messaggio sia uno spam.
Punteggio spam
Il punteggio minimo richiesto per contrassegnare il messaggio come spam. L'impostazione predefinita è 5.0, ma ora un giorno potresti aver bisogno di un livello di punteggio più rigoroso. Quindi 4.0 funziona bene.
# Set the threshold at which a message is considered spam (default: 5.0) # required_score 4.0
Controlla le altre opzioni nel file e modificale come richiesto.
Riavvia Spamassassin - Dopo aver configurato tutti i parametri nel file, salvare il file e riavviare spamassassin.
# service spamassassin restart Restarting SpamAssassin Mail Filter Daemon: spamd.
6. Controlla il registro di Spamassassin
Se in qualsiasi momento hai bisogno di eseguire il debug di qualcosa o vedere cosa sta succedendo sullo sfondo di spamassassin, sentiti libero di controllare il suo file look.
# tail -f /var/log/spamassassin/spamd.log Fri Feb 5 20:11:43 2016 [1123] info: prefork: child states: II Fri Feb 5 20:23:02 2016 [1123] info: spamd: server killed by SIGTERM, shutting down Fri Feb 5 20:23:02 2016 [1404] info: logger: removing stderr method Fri Feb 5 20:23:03 2016 [1406] info: zoom: able to use 360/360 'body_0' compiled rules (100%) Fri Feb 5 20:23:03 2016 [1406] info: spamd: server started on IO::Socket::INET6 [127.0.0.1]:783, IO::Socket::INET6 [::1]:783 (running version 3.4.0) Fri Feb 5 20:23:03 2016 [1406] info: spamd: server pid: 1406 Fri Feb 5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1407 Fri Feb 5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1408 Fri Feb 5 20:23:03 2016 [1406] info: prefork: child states: IS Fri Feb 5 20:23:03 2016 [1406] info: prefork: child states: II
7. Testare una posta spam
Invia un'e-mail al tuo sistema di posta dall'esterno. Includi il seguente pezzo di testo nel corpo dell'email
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Si chiama GTUBE - Test generico per e-mail in blocco non richieste. È un modo semplice per verificare se il tuo server di posta utilizza lo spamassassin per filtrare la posta o meno.
Scopri di più qui -
http://spamassassin.apache.org/gtube/
SpamAssassin aggiunge intestazioni a tutte le email con punteggi di spam> 0
Posta con punteggio di spam 12,9 Questo è considerato spam in base alla nostra configurazione di punteggio minimo di 3
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost X-Spam-Flag: YES X-Spam-Level: ************ X-Spam-Status: Yes, score=12.9 required=3.0 tests=FROM_LOCAL_NOVOWEL, HTML_FONT_LOW_CONTRAST,HTML_FONT_SIZE_LARGE,HTML_MESSAGE,HTML_OBFUSCATE_05_10, MIME_HTML_ONLY,MISSING_MID,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL_LASTEXT, RCVD_IN_PBL,RCVD_IN_PSBL,RCVD_IN_XBL,RDNS_NONE autolearn=no autolearn_force=no version=3.4.0
Punteggio spam 1.7, Non considerato spam
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost X-Spam-Level: * X-Spam-Status: No, score=1.7 required=3.0 tests=DEAR_SOMETHING,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_MSPIKE_H2,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0
Queste intestazioni devono essere utilizzate per inviare e-mail in una cartella Spam separata tramite il trasporto Dovecot LMTP.
Configura Dovecot con una cartella Spam separata
Dovecot è il sistema di lettura e gestione della posta, server POP3 e IMAP. È Dovecot che organizza le mail in cartelle separate a seconda dei criteri.
Dovecot può essere configurato per leggere le intestazioni delle e-mail e spostare le e-mail di spam in una cartella separata denominata Spam. Proprio come vedi con i servizi di posta gratuiti come Gmail e Outlook.
Installa e configura il plug-in Sieve
Dovecot ha bisogno del plug-in dell'interprete Sieve per utilizzare Sieve per leggere i messaggi di posta. Installa i pacchetti Sieve
# apt-get install dovecot-sieve dovecot-managesieved
Modifica
/etc/dovecot/conf.d/20-lmtp.conf
Configura dovecot per abilitare il plugin del setaccio
protocol lmtp { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Finalmente è ora di ripartire dovecot
# service dovecot restart
Ora controlla se il server sieve è in esecuzione sulla porta 4190. Usa il comando netstat. Il servizio si chiamerà colombaia.
# netstat -nltp | grep 4190 tcp 0 0 0.0.0.0:4190 0.0.0.0:* LISTEN 9843/dovecot tcp6 0 0 :::4190 :::* LISTEN 9843/dovecot
Imposta il filtro del setaccio
Per saperne di più sui filtri a setaccio, controlla la seguente pagina:http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples
# mkdir /var/lib/dovecot/sieve/
Crea un file chiamato default.sieve e riempilo con i seguenti set di regole
require ["fileinto", "mailbox"]; if header :contains "X-Spam-Flag" "YES" { fileinto :create "Spam"; }
Ora compila il file di script .sieve usando il comando sievec.
# sievec default.sieve
Se hai più file .sieve nella directory, puoi compilarli tutti in una volta in questo modo -
# sievec sieve/
Ora cambia la proprietà dei file sieve all'utente specifico di dovecot in modo che dovecot possa leggerli. In questo caso il nome utente è vmail.
/var/lib/dovecot# chown -R vmail:vmail sieve/*
Riavvia Dovecot.
# service dovecot restart
Controlla i registri di colombaia
I file di registro di Dovecot ti aiuteranno a diagnosticare eventuali problemi che potrebbero verificarsi lungo il percorso.
Trova la posizione dei file di registro di dovecot con il seguente comando
# doveadm log find Debug: /var/log/dovecot.log Info: /var/log/dovecot.log Warning: /var/log/dovecot.log Error: /var/log/dovecot.log Fatal: /var/log/dovecot.log
Quindi apri il file usando il comando tail
# tail -f /var/log/dovecot.log
Feb 06 11:17:16 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10370, TLS, session=<RfgSgBMr1QB6oxcb> Feb 06 11:17:37 lmtp(10379): Info: Connect from local Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: main script: failed to stat sieve script: stat(/var/lib/dovecot/sieve/default.sieve) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +x perm: /var/lib/dovecot, dir owned by 0:0 mode=0750) Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: failed to access default user script /var/lib/dovecot/sieve/default.sieve Feb 06 11:17:37 lmtp(10379, [email protected]): Info: uMMvHPmItVaLKAAA0J78UA: msgid=<[email protected]>: saved mail to INBOX Feb 06 11:17:37 lmtp(10379): Info: Disconnect from local: Successful quit Feb 06 11:18:31 lmtp(10379): Info: Connect from local Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: failed to store into mailbox 'Spam': Mailbox doesn't exist: Spam Feb 06 11:18:31 lmtp(10379, [email protected]): Info: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'INBOX' Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: execution of script /var/lib/dovecot/sieve/default.sieve;name=main script failed, but implicit keep was successful Feb 06 11:18:31 lmtp(10379): Info: Disconnect from local: Successful quit Feb 06 11:26:27 lmtp(10479): Info: Connect from local Feb 06 11:26:27 lmtp(10479, [email protected]): Info: 3h4eBwuLtVbvKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'Spam' Feb 06 11:26:27 lmtp(10479): Info: Disconnect from local: Successful quit Feb 06 11:26:57 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10483, TLS, session=<OreuohMrXgB6oxcb> Feb 06 11:26:58 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10484, TLS, session=<xr6+ohMrXwB6oxcb> Feb 06 11:28:30 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10499, TLS, session=<n7Q2qBMrCwB6oxcb>
Modifica i permessi della directory dovecot
/var/lib/dovecot# chmod a+x .
Potenzia il filtro antispam di Spamassassin con Pyzor
Pyzor agirà come le altre regole.
https://wiki.apache.org/spamassassin/Rules/PYZOR_CHECK
Aggiungerà un punteggio di spam aggiuntivo di circa 1,985 secondo la tabella dei test trovata su - http://spamassassin.apache.org/tests_3_3_x.html
# sudo apt-get install pyzor
Scopri i server Pyzor
# pyzor --homedir /etc/mail/spamassassin/pyzor discover
Rendi il file dei server leggibile da tutti
/etc/spamassassin/pyzor# chmod a+r servers
Esegui un controllo -
# echo "test" | spamassassin -D pyzor 2>&1 | less
Dovresti vedere un output come questo
Feb 9 16:24:58.824 [23979] dbg: pyzor: network tests on, attempting Pyzor Feb 9 16:24:59.787 [23979] dbg: pyzor: pyzor is available: /usr/bin/pyzor Feb 9 16:24:59.788 [23979] dbg: pyzor: opening pipe: /usr/bin/pyzor check < /tmp/.spamassassin23979z26KDDtmp Feb 9 16:24:59.841 [23979] dbg: pyzor: [23981] finished: exit 1 Feb 9 16:24:59.842 [23979] dbg: pyzor: check failed: no response
Aggiungi le seguenti righe alla fine di /etc/spamassassin/local.cf
pyzor_options --homedir /etc/mail/spamassassin/pyzor
E riavvia il demone spamassassin
# service spamassassin restart
Installa Rasoio
sudo apt-get install razor
/etc/spamassassin# mkdir razor
Ora esegui i seguenti comandi per registrarti con la rete distribuita del rasoio.
# razor-admin -home=/etc/spamassassin/razor -register Register successful. Identity stored in /etc/mail/spamassassin/razor/identity-rudkVFCIxs # razor-admin -home=/etc/spamassassin/razor -create # razor-admin -home=/etc/spamassassin/razor -discover
Aggiungi la seguente riga alla fine del file /etc/spamassassin/local.cf
razor_config /etc/spamassassin/razor/razor-agent.conf
Finalmente riavvia spamassassin
controlla il rasoio che funziona con questo comando
# echo "test" | spamassassin -D razor2 2>&1 | less
qualcosa del genere dovrebbe apparire
Feb 9 17:11:34.701 [26028] dbg: razor2: razor2 is available, version 2.84 Razor-Log: read_file: 15 items read from /etc/mail/spamassassin/razor/razor-agent.conf
Punteggi personalizzati per punteggi più alti
Questo è un modo un po' avanzato per aumentare la precisione di spamassassin per catturare meglio lo spam. Implica l'aumento dei livelli di punteggio per alcuni test di spam all'interno di spamassassin. Questi sono i test antispam noti per avere un livello di accuratezza molto elevato nel rilevamento dello spam.
Quindi, se alcuni di questi test di alta precisione indicano una posta come spam, dovremmo concentrarci maggiormente su di essa.
http://toao.net/566-improving-spamassassin-accuracy-with-statisticsConclusione
Questo è stato il processo per configurare SpamAssassin sul tuo server di posta per rilevare le e-mail di spam e mantenere pulita la tua casella di posta.
Il processo è un po' lungo ma funziona benissimo se hai bisogno del tuo server di posta con un sistema anti-spam attivo.
Se hai commenti o domande, faccelo sapere nei commenti qui sotto.
Riferimenti e risorse
Semplice configurazione di Spamassassin con Postfix e Dovecot su Ubuntu Breezy
http://www.townx.org/index.php?q=blog/elliot/simple_spamassassin_setup_with_postfix_and_dovecot_on_ubuntu_breezy
Come installare e configurare Spamassassin su Ubuntu 12.04
https://www.digitalocean.com/community/tutorials/how-to-install-and-setup-spamassassin-on-ubuntu-12-04
Istruzioni per l'installazione di Pyzor e Razor con Spamassassin
https://kura.io/2011/09/22/spamassassin-razor-pyzor/
Configurazione del filtro Sieve con Dovecot
https://easyengine.io/tutorials/mail/server/sieve-filtering/
Suggerimenti Spamassassin:Guida all'installazione definitiva
http://www.spamtips.org/p/ultimate-setup-guide.html
Come migliorare la precisione di SpamAssassin
https://wiki.apache.org/spamassassin/ImproveAccuracy
Sugli effetti dell'abbassamento della soglia di SpamAssassin
http://taint.org/2008/02/29/155648a.html
Miglioramento della precisione di SpamAssassin su cPanel (o qualsiasi altro) server di posta - con statistiche
http://toao.net/566-improving-spamassassin-accuracy-with-statistics
Questo post descrive semplici hack che puoi utilizzare per modificare i livelli di punteggio per alcuni dei test di spamassassin, migliorando così il filtro antispam.
Suggerimenti avanzati per l'utilizzo di SpamAssassin
https://www.andrewferrier.com/oldpages/spamassassin_tips.html