Configuració de filtres anti-spam al servidor de correu
En aquesta tasca faré ús d’aquesta arquitectura que he muntat:
## Arquitectura del sistema
```
Internet → Postfix (port 25) → Amavis (port 10024) → SpamAssassin → Bloqueig/Quarantena
→ ClamAV → Antivirus
↓
Postfix (port 10025) → Entrega al bústia (Maildir)
```
### Components instal·lats
| Component | Funció |
|-----------|--------|
| **Postfix** | MTA (Mail Transfer Agent) — rep i envia correu |
| **Amavis** | Intermediari entre Postfix i els filtres |
| **SpamAssassin** | Motor de detecció de spam per puntuació |
| **ClamAV** | Antivirus per als adjunts |
| **rsyslog** | Registre de logs al fitxer `/var/log/mail.log` |
| **mailutils** | Eines de línia de comandes per enviar/rebre correu | Configuració Postfix
Una vegada entès com serà el funcionament donem lloc a la pràctica. Primer configurem Postfix (Postfix ja estava instal·lat. Es van afegir els paràmetres necessaris al fitxer principal de configuració.) -> /etc/postfix/main.cf
Paràmetres afegits al final del fitxer:
# --- BUZONES EN FORMAT MAILDIR ---
home_mailbox = Maildir/
mailbox_size_limit = 0
# --- DOMINI ---
mydomain = illa2.es
# --- RESTRICCIONS ANTI-SPAM BÀSIQUES SMTP ---
smtpd_helo_required = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain
# --- INTEGRACIÓ AMB AMAVIS ---
content_filter = smtp-amavis:[127.0.0.1]:10024
```
> **Nota:** La línia `content_filter` s'activa un cop Amavis és instal·lat i configurat.
Ara configurem el fitxer “/etc/postfix/master.cf” afegint al final per definir el circuit Postfix:
# Enviament cap a Amavis (entrada)
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
# Retorn d'Amavis cap a Postfix (sortida)
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
Instal·lació SpamAssassin (anti-spam)
Instal·lació del stack anti-spam
sudo apt install spamassassin spamc amavis clamav clamav-daemon mailutils rsyslog -y Configuració de SpamAssassin al fitxer /etc/spamassassin/local.cf també al final del mateix:
# Llindar de puntuació per marcar com a spam
required_score 5.0
# Modificar l'assumpte dels correus spam
rewrite_header Subject [**SPAM**]
# Afegir capçaleres informatives
add_header all Status _YESNO_, score=_SCORE_ required=_REQD_
add_header spam Flag _YESNO_
add_header all Level _STARS(*)_
# Activar filtre bayesià (aprèn automàticament)
use_bayes 1
bayes_auto_learn 1
# Desactivar comprovacions DNS (entorn de proves sense DNS extern)
skip_rbl_checks 1
Habilitem el servei:
sudo systemctl enable spamd
sudo systemctl start spamd Actualitzem les regles per la detecció:
sudo sa-update Configuració d'Amavis
Accedim al fitxer “/etc/amavis/conf.d/15-content_filter_mode“:
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Ara a un altre fitxer ‘/etc/amavis/conf.d/50-user‘ configurem això:
use strict;
# Domini local que gestionem
@local_domains_acl = ( "illa2.es" );
# Etiquetes i llindars de spam
$sa_spam_subject_tag = '*** SPAM *** ';
$sa_tag_level_deflt = 2.0; # Afegir capçaleres X-Spam
$sa_tag2_level_deflt = 6.31; # Marcar com a spam
$sa_kill_level_deflt = 6.31; # Bloquejar
$final_spam_destiny = D_DISCARD; # Descartar silenciosament
Configuració de ClamAV
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
Afegim l’usuari clamav al grup amavis (necessari per comunicació):
sudo adduser clamav amavis Actualitzar la base de dades de virus(Si freshclam dóna error de lock, primer aturem el servei):
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam Activació de logs amb rsyslog
Per defecte Debian 12 no genera `/var/log/mail.log`. Cal instal·lar rsyslog. Per a instal·lar utilitzem aquestes comandes:
sudo apt install rsyslog -y
sudo systemctl enable rsyslog
sudo systemctl start rsyslog Reinici de tots els serveis que acabem d’instal·lar:
sudo systemctl restart clamav-daemon
sudo systemctl restart amavis
sudo systemctl restart postfix Verifiquem l’estat de tots els serveis
sudo systemctl status postfix amavis clamav-daemon
Verificació i proves
Comprovar que els ports estan escoltant:
sudo ss -tlnp | grep -E '25|10024|10025'
Prova de detecció de spam amb TEST GTUBE
El GTUBE (Generic Test for Unsolicited Bulk Email) és una cadena estàndard que sempre activa SpamAssassin, equivalent al fitxer EICAR per a antivirus.
Enviem correu de prova amb la cadena GTUBE:
echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X" | \
mail -s "Test Spam" vagrant@illa2.es Analitzem el log:
# Veure el log en temps real
sudo tail -f /var/log/mail.log
# Filtrar només entrades de spam
sudo grep -i spam /var/log/mail.log La línia de log que confirma el funcionament correcte del sistema:
amavis: Blocked SPAM {DiscardedInbound,Quarantined},
[127.0.0.1] <vagrant@mail.illa2.es> -> <vagrant@illa2.es>,
Hits: 999.999, size: 396
status=sent (250 2.7.0 Ok, discarded, id=10442-01 – spam)