Postfix Config · 5 min read · Nov 12, 2025
Come Combattere lo Spam Utilizzando la Tua Configurazione Postfix
Come Combattere lo Spam Utilizzando la Tua Configurazione Postfix
In questa guida imparerai come modificare la guida Falko per la posta predefinita per Postfix (+Auth SMTP + Quota), https://www.howtoforge.com/virtual_postfix_mysql_quota_courier, impostata per combattere meglio lo SPAM e consentire un po’ di compatibilità con i vecchi sistemi Qmail.
Quindi iniziamo…
La guida di HowtoForge è ottima per tutto, tuttavia se hai un server di posta molto occupato che esegue Spam Assasin su migliaia di messaggi al minuto è un killer di CPU. La migliore risposta è fermare la posta prima che raggiunga Spam Assasin con una serie di RBL (Realtime Blacklists) e RHBL (stessa cosa ma diversa), Greylistings e Helo Checks.
Prima di tutto vogliamo cambiare le restrizioni smtpd esistenti e aggiungere un’intera serie di nuovi controlli per aiutare a ridurre la quantità di posta che il sistema accetta in /etc/postfix/main.cf
### Controlli per rimuovere email malformate
smtpd_helo_required = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
unknown_address_reject_code = 554
unknown_hostname_reject_code = 554
unknown_client_reject_code = 554
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname, regexp:/etc/postfix/helo.regexp, permit
### Quando si modificano sender_checks, questo file deve essere rigenerato utilizzando postmap , per generare un Berkeley DB
smtpd_recipient_restrictions =
check_client_access hash:/etc/postfix/helo_client_exceptions
check_sender_access hash:/etc/postfix/sender_checks,
reject_invalid_hostname,
### Può causare problemi con Auth SMTP, quindi fai attenzione!
reject_non_fqdn_hostname,
##################################
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
# Aggiungi eccezioni RBL qui, quando cambi rbl_client_exceptions, questo
foglio deve essere rigenerato utilizzando postmap , per generare un
Berkeley DB
check_client_access hash:/etc/postfix/rbl_client_exceptions,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rhsbl_sender dsn.rfc-ignorant.org,
check_policy_service inet:127.0.0.1:60000
permit Ora per spiegare, ma prima dobbiamo creare alcuni file:
Il primo file che vogliamo creare è /etc/postfix/helo.regexp e questo conterrà:
/^subdomain\.host\.com$/ 550 Non usare il mio hostname
/^xxx\.yyy\.zzz\.xxx$/ 550 Non usare il mio indirizzo IP
/^\[xxx\.yyy\.zzz\.xxx\]$/ 550 Non usare il mio indirizzo IP
/^[0-9.]+$/ 550 Il tuo software non è conforme a RFC 2821
/^[0-9]+(\.[0-9]+){3}$/ 550 Il tuo software non è conforme a RFC 2821Questo da solo allontanerà gli spammer che cercano di inviare il comando helo e impersonare sia il server che riceve la posta tramite IP o hostname, oltre a rimuovere alcune delle email che non soddisfano la conformità RFC 2821.
Successivamente, dobbiamo creare /etc/postfix/helo_client_exceptions:
#Questi indirizzi IP client sono autorizzati a bypassare i controlli fqdn
# Alcun Commento per identificare l'indirizzo IP qui sotto
www.xxx.yyy.zzz OK Questo file è necessario nel caso in cui un server di posta maleducato non possa inviare il corretto helo e tu debba consentire che la posta venga accettata da quella fonte. Nella mia esperienza, cose come dispositivi autonomi, telecamere CCTV sono scarse nel rispettare gli standard, quindi potresti dover fare un’eccezione per questo.
Prima che qualsiasi modifica in questo file diventi utilizzabile, devi eseguire
postmap /etc/postfix/helo_client_exceptions
Questo creerà un file chiamato /etc/postfix/helo_client_exceptions.db
Scendendo, abbiamo /etc/postfix/sender_checks che ti consente di bypassare i vari controlli FQDN e consentire a un particolare mittente di passare. Questo è particolarmente utile se un’azienda gestisce una rete di posta interna come domain.com ma l’email gira su int.domain.com e non c’è configurazione DNS per int.domain.com, questo è ottimo per la sicurezza ma non è ottimo perché il DNS esterno non conosce la struttura interna e quindi postfix rifiuterà int.domain.com.
[email protected] REJECT
[email protected] OK Ancora una volta, questo file una volta modificato deve avere un file Berkely DB creato e quindi lo creiamo utilizzando:
postmap /etc/postfix/sender_checks
Successivamente abbiamo i nostri controlli RBL. Ci sono molti siti web dedicati agli RBL, ma per ridurre la lunghezza dell’articolo, in poche parole, queste liste vengono aggiornate costantemente e forniscono IP e hostname che gli spammer stanno utilizzando per inoltrare la posta. Ogni IP che cerca di inviare posta al tuo server di posta verrà controllato contro queste liste (4 utilizzate sopra) e se l’IP non è elencato negli RBL, il server di posta accetterà la posta. Ovviamente i server si trovano su queste liste tutto il tempo inavvertitamente o le liste impiegano 24 ore per rimuovere l’IP in blacklist dopo un’epidemia di spam, quindi è sempre meglio avere ancora una volta un modo per bypassare questi controlli.
Per farlo, creiamo un file chiamato /etc/postfix/rbl_client_exceptions:
## Alcuni commenti casuali
www.xxx.yyy.zzz OK Ancora una volta devi eseguire postmap per generare il file Berkeley DB
postmap /etc/postfix/rbl_client_exceptions
L’ultima riga delle restrizioni smtpd è il filtro di greylisting. Non entrerò nei dettagli su questo poiché esiste già una guida su howtoforge, https://www.howtoforge.com/greylisting_postfix_postgrey, ma se non desideri utilizzare il Greylisting, semplicemente ometti la riga
check_policy_service inet:127.0.0.1:60000Le restrizioni smtpd sono molto facili da seguire, fino a quando uno dei controlli dà il via libera per il messaggio per passare nella coda di Postfix, la maggior parte delle risposte non sicure prosegue a meno che non venga data un’esplicita NO, il messaggio si sposterà lungo l’elenco dei controlli.
LEGACY QMAIL
DJB (Dan Bernstein) ha sviluppato un’alternativa a SMTP chiamata QMQP. Si dice che sia più veloce con meno sovraccarichi. Quindi, se stai sostituendo i tuoi vecchi MTA Qmail con Postfix, potresti dover abilitare il supporto per QMQP.
Lo facciamo aggiungendo quanto segue in /etc/postfix/main.cf
qmqpd_authorized_clients = $mynetworks
qmqpd_error_delay = 5s
qmqpd_timeout = 300s Realisticamente puoi autenticarti contro qualsiasi cosa, ma ho deciso di autenticarmi contro mynetworks. Dopo aver aggiunto quanto sopra in main.cf, devi modificare ulteriormente /etc/postfix/master.cf e assicurarti che contenga quanto segue:
628 inet n - - - 100 qmqpd Ora tutto ciò che devi fare è riavviare Postfix
/etc/init.d/postfix restart
Puoi controllare il tuo nuovo Postfix consapevole di QMQP digitando:
telnet localhost 628
Autenticazione tramite IP (Ideale per il relay di Smarthost nei server MS Exchange)
Successivamente modificheremo un po’ la guida per rendere l’impostazione di mynetworks un po’ più semplice rispetto ai file flat, ovvero /etc/postfix/main.cf
Crea il seguente /etc/postfix/mysql-mynetworks.cf
user = mail_admin
password = password
dbname = mail
table = allowed_hosts
select_field = 'IP'
where_field = IP
hosts = 127.0.0.1
additional_conditions = and active='yes' Avrai bisogno del seguente SQL a questo punto
CREATE TABLE allowed_hosts (active enum(‘yes’,’no’) NOT NULL default ‘1’,IP varchar(15) NOT NULL default ‘’,Client varchar(128) NOT NULL default ‘’,Comments text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Infine attiviamo questo modificando la nostra riga mynetworks nel main.cf di Postfix in:
mynetworks = 127.0.0.0/8, proxy:mysql:/etc/postfix/mysql-mynetworks.cf Infine riavvia Postfix affinché le modifiche abbiano effetto:
chmod o= /etc/postfix/mysql-mynetworks.cf
chgrp postfix /etc/postfix/mysql-mynetworks.cf
/etc/init.d/postfix restart
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.