Postfix Spam · 3 min read · Oct 23, 2025

Controllo Spam per Postfix

Controllo Spam per Postfix

Lo spam è un problema importante per chiunque abbia un server di posta. Molte volte, lo spam viene inviato a indirizzi email che non esistono. Ma, colpisce comunque il tuo server anche se non viene consegnato. Altre volte, la casella di posta di un utente sarà stracolma di messaggi fastidiosi riguardo a Viagra, prostitute, software gratuito e qualsiasi altra cosa.

Di seguito è riportata una soluzione. È un accumulo continuo dei miei sforzi per fermare lo spam al meglio delle mie capacità. Finora, ha un tasso di successo del 97% con oltre 20.000 email (spam e ham, allo stesso modo) elaborate.

Segui le istruzioni. Aggiornerò/modificherò se necessario se le cose sembrano poco chiare. Sentiti libero di chiedere.

1) Installa Postgrey, RRD, un parser di log e strumenti di grafico.

apt-get install postgrey rrdtool mailgraph pflogsumm

Postgrey avrà un ritardo di 5 minuti per impostazione predefinita sulle email che vanno alla tua casella di posta. Se questo è troppo lungo, modifica il file /etc/default/postgrey aggiungendo –delay=120 dove 120 è secondi.

2) Riavvia il server Postgrey.

  /etc/init.d/postgrey restart

3) Modifica il main.cf di Postfix.

Aggiungeremo diverse cose, inclusa la configurazione di Postgrey.

# Vedi /usr/share/postfix/main.cf.dist per una versione commentata, più completa


# Specifico per Debian: Specificare un nome di file causerà l'uso della prima
# riga di quel file come nome. Il valore predefinito di Debian
# è /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# aggiungere .domain è compito del MUA.
append_dot_mydomain = no

# Decommenta la prossima riga per generare avvisi di "email in ritardo"
#delay_warning_time = 4h

readme_directory = /usr/share/doc/postfix

# Parametri TLS
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# Vedi /usr/share/doc/postfix/TLS_README.gz nel pacchetto postfix-doc per
# informazioni su come abilitare SSL nel client smtp.

myhostname = my.derekgordon.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = my.derekgordon.com, localhost, localhost.localdomain
relayhost =
mynetworks = 127.0.0.0/8 [::1]/128 66.118.142.78
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
virtual_alias_domains =
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client zen.spamhaus.org, reject_rbl_client smtp.dnsbl.sorbs.net, reject_rbl_client bl.spamcop.net, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client multihop.dsbl.org, check_recipient_access regexp:/etc/postfix/spamtrap, permit
smtpd_tls_security_level = may
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
relay_domains = mysql:/etc/postfix/mysql-virtual_relaydomains.cf
relay_recipient_maps = mysql:/etc/postfix/mysql-virtual_relayrecipientmaps.cf
virtual_create_maildirsize = yes
virtual_maildir_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "L'utente che stai cercando di contattare ha superato il limite."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
smtpd_sender_restrictions = check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf
smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
maildrop_destination_concurrency_limit = 1
maildrop_destination_recipient_limit = 1
virtual_transport = maildrop
header_checks = regexp:/etc/postfix/header_checks
mime_header_checks = regexp:/etc/postfix/mime_header_checks
nested_header_checks = regexp:/etc/postfix/nested_header_checks
body_checks = regexp:/etc/postfix/body_checks
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
message_size_limit = 0

disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, permit

Da un main.cf generico trovato nell’installazione di Debian Lenny, ho aggiunto/modificato le aree in BOLD.

4) Crea un file chiamato “spamtrap” nella directory /etc/postfix/.

Questo funge da filtro. Se lo spam viene inviato a questo indirizzo e ad altri indirizzi sulla tua macchina, eliminerà quell’email in modo che non arrivi ad altre caselle di posta.

Il file spamtrap appare così:

/emailcontrol.*@derekgordon\.com/ DISCARD

Questo è regexp quindi le barre devono essere utilizzate. La mia email di filtro è [email protected] quindi modifica di conseguenza e posizionala nel file spamtrap!!!

Nota a margine: Non creare questa casella di posta utilizzando ISPConfig. Non c’è assolutamente alcun motivo per cui debba esistere sul tuo server di posta. È un indirizzo falso destinato a catturare spam fastidioso.

5) Apri local.cf per SpamAssassin e aggiungi il seguente pezzo.

Sarà un filtro extra progettato per funzionare con SA più che con Postfix generale.

nano /etc/spamassassin/local.cf

Aggiungi quanto segue in fondo:

urirhssub       URIBL_BLACK  multi.uribl.com.        A   2
body            URIBL_BLACK  eval:check_uridnsbl('URIBL_BLACK')
describe        URIBL_BLACK  Contiene un URL elencato nella blacklist URIBL
tflags          URIBL_BLACK  net
score           URIBL_BLACK  3.0
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.