GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare Spamassassin con Postfix e Dovecot su Ubuntu/Debian Server

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 / Debian

Spamassassin 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-statistics

Conclusione

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


Debian
  1. Come installare il server FTP vsftpd e proteggerlo con TLS su Debian 11

  2. Come installare Puppet 6.x su Ubuntu 18.04 / Ubuntu 16.04 e Debian 9

  3. Come installare e configurare Gerbera Media Server in Ubuntu/Debian

  4. Installa il server di posta Postfix e Dovecot su Ubuntu o Debian

  5. Come installare il server SSH su Ubuntu/Debian con OpenSSH

Come installare e configurare Apache Web Server con Virtual Host su Debian 10

Come installare Tomcat 7 Server su Ubuntu, Debian e LinuxMint

Come installare SpamAssassin su Ubuntu/Debian

Come installare Nginx con PHP-FPM su Debian 11

Come installare Drupal con Apache su Debian e Ubuntu

Come installare e abilitare il server SSH su Debian 10