Postfix Config · 6 min read · Sep 22, 2025

Rinforzare Postfix per ISPConfig 3

Rinforzare Postfix per ISPConfig 3

Autore: Jesús Córdoba
Email: j.cordoba [at] gmx [dot] net
Utente del forum: pititis

Versione: 1.2

L’obiettivo di questo tutorial è rinforzare il server di posta postfix utilizzato da ISPConfig per i server di posta internet dove gli utenti autenticati sono considerati attendibili. Con questa configurazione rifiuterai una grande quantità di spam prima che passi nella tua coda di posta, risparmiando molte risorse di sistema e rendendo il tuo server di posta forte contro gli spammer e le botnet di spam. Iniziamo.

Reverse DNS, (Record DNS PTR)

Per impostare rdns troverai due situazioni:

  • Il tuo ISP ti consente di cambiarlo tu stesso. Dai un’occhiata nel tuo pannello di controllo.

  • Il tuo ISP non ti consente di cambiarlo. Invia semplicemente un’email con la tua richiesta.

Chiedi o punta il tuo record rdns al tuo server. i.e

server.example.com

Puoi controllare il tuo rdns con il comando host:

root@server / #  host 149.20.4.69
  69.64-27.4.20.149.in-addr.arpa domain name pointer pub2.kernel.org.

Ricorda che il dns deve propagare le modifiche.

SPF Per Il Tuo Dominio (Record DNS TXT)

SPF è un sistema di validazione delle email progettato per prevenire lo spam via email rilevando la falsificazione delle email, una vulnerabilità comune, verificando gli indirizzi IP dei mittenti.

Per impostare spf dovrai aggiungere un record TXT alla tua zona dns, ma prima puoi generare il tuo record qui: http://www.mailradar.com/spf/

Copia il risultato spf, poi vai su ISPConfig -> dns -> zone -> clicca sul tuo nome di dominio -> clicca sulla scheda record -> e clicca su TXT

Hostname -> example.com. (con punto alla fine!)

Testo -> Incolla qui il risultato spf (senza “ “).

Esempio: v=spf1 a mx ptr ip4:11.222.333.444 -all …e clicca su Salva.

Ricorda che il dns deve propagare le modifiche.

Postfix main.cf

Aggiungiamo/cambiamo qualcosa in /etc/postfix/main.cf

Restrizioni Helo:

smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname

Restrizioni Helo in azione:

Jan 12 01:57:08 server postfix/smtpd[4687]: NOQUEUE: reject: RCPT from unknown[186.43.77.153]: 450 4.7.1 Client host rejected: cannot find your hostname, [186.43.77.153]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[186.43.77.153]>
Jan  8 00:32:22 server postfix/smtpd[17504]: NOQUEUE: reject: RCPT from 201-93-87-2.dial-up.telesp.net.br[201.93.87.2]: 504 5.5.2 : Helo command rejected: need fully-qualified hostname; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

Strict rfc:

strict_rfc821_envelopes = yes

Restrizioni Client:

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf

Restrizioni Destinatario:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unknown_recipient_domain

Restrizioni Dati:

smtpd_data_restrictions = reject_unauth_pipelining

Ritardo Smtpd:

smtpd_delay_reject = yes

Non dimenticare di ricaricare postfix:

/etc/init.d/postfix reload

Controllo SPF Per Postfix (Debian E Ubuntu)

Installa il pacchetto spf:

apt-get install postfix-policyd-spf-python

oppure

apt-get install postfix-policyd-spf-perl

Aggiungi questo a /etc/postfix/main.cf:

policy-spf_time_limit = 3600s

e aggiungi check_policy_service unix:private/policy-spf alla fine di smtpd_recipient_restrictions:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf

Ora modifica master.cf e aggiungi alla fine questo (per la versione python):

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/bin/policyd-spf 

oppure questo per la versione perl:

policy-spf  unix  -       n       n       -       -       spawn
     user=nobody argv=/usr/sbin/postfix-policyd-spf-perl

…ricarica postfix.

/etc/init.d/postfix reload

Controllo spf in azione:

Jan  4 15:50:11 server postfix/smtpd[19096]: NOQUEUE: reject: RCPT from g230068165.adsl.alicedsl.de[92.230.68.165]: 550 5.7.1 <[email protected]>: Recipient address rejected: Message rejected due to: SPF fail - not authorized. Please see http://www.openspf.org/Why?s=helo;id=paxxxxxn.com;ip=92.230.68.165;[email protected]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

Greylist

Il greylisting è un metodo di difesa degli utenti di posta elettronica contro lo spam. Un agente di trasferimento di posta (MTA) che utilizza il greylisting “rifiuterà temporaneamente” qualsiasi email da un mittente che non riconosce. Se la posta è legittima, il server di origine, dopo un ritardo, riproverà e, se è trascorso un tempo sufficiente, l’email sarà accettata.

Installazione di postgrey (Debian, Ubuntu):

apt-get install postgrey

Le opzioni di configurazione si trovano in /etc/default/postgrey (il ritardo predefinito è di 5 min).

Modifica main.cf e aggiungi check_policy_service inet:127.0.0.1:10023 alla fine di smtpd_recipient_restrictions:

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf, reject_unauth_destination, reject_unknown_recipient_domain, check_policy_service unix:private/policy-spf,check_policy_service inet:127.0.0.1:10023

…ricarica postfix:

/etc/init.d/postfix reload

Greylist in azione:

Jan 10 17:38:57 server postfix/smtpd[21302]: NOQUEUE: reject: RCPT from mailout-de.gmx.net[213.165.64.22]: 451 4.7.1 <[email protected]>: Recipient address rejected: Greylisting in effect, please come back later; from=<[email protected]> to=<[email protected]> proto=SMTP helo=

DNSBL (Blacklist/Blocklist Basata Su DNS)

Una DNSBL è un elenco di indirizzi IP pubblicati tramite il servizio di nomi di dominio di Internet (DNS) sia come file di zona che può essere utilizzato da software di server DNS, sia come zona DNS live che può essere interrogata in tempo reale. Le DNSBL sono più comunemente utilizzate per pubblicare gli indirizzi di computer o reti collegati allo spam; la maggior parte dei software di server di posta può essere configurata per rifiutare o contrassegnare i messaggi inviati da un sito elencato in uno o più di tali elenchi. Questi possono includere l’elenco degli indirizzi di computer zombie o di altre macchine utilizzate per inviare spam, l’elenco degli indirizzi di ISP che ospitano volontariamente spammer, o l’elenco degli indirizzi che hanno inviato spam a un sistema honeypot. Per utilizzare dnsbl con postix utilizziamo reject_rbl_client. Aggiungi semplicemente alcune zone dns live per le query nel file main.cf.

Nel mio esempio utilizzerò due elenchi con una reputazione molto buona (aggiunti alla fine di smtpd_client_restrictions):

smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unknown_client_hostname, check_client_access mysql:/etc/postfix/mysql-virtual_client.cf,  reject_rbl_client cbl.abuseat.org,  reject_rbl_client b.barracudacentral.org

rbl in azione:

Jan 12 01:52:42 server postfix/smtpd[4616]: NOQUEUE: reject: RCPT from 89.pool85-49-26.dynamic.orange.es[85.49.26.89]: 554 5.7.1 Service unavailable; Client host [85.49.26.89] blocked using cbl.abuseat.org; Blocked - see http://cbl.abuseat.org/lookup.cgi?ip=85.49.26.89; from=<[email protected]> to=<[email protected]> proto=SMTP helo=
Jan 11 20:13:58 server postfix/smtpd[29591]: NOQUEUE: reject: RCPT from 93-87-122-56.dynamic.isp.telekom.rs[93.87.122.56]: 554 5.7.1 Service unavailable; Client host [93.87.122.56] blocked using b.barracudacentral.org; http://www.barracudanetworks.com/reputation/?pr=1&ip=93.87.122.56; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=

Postscreen

Nota: Questa funzione è disponibile in Postfix 2.8 e versioni successive.

Il demone postscreen di Postfix fornisce ulteriore protezione contro il sovraccarico del server di posta. Un processo postscreen gestisce più connessioni SMTP in entrata e decide quali client possono comunicare con un processo del server SMTP di Postfix. Tenendo lontani gli spambots, postscreen lascia più processi del server SMTP disponibili per i client legittimi e ritarda l’insorgere di condizioni di sovraccarico del server.

La principale sfida per postscreen è prendere una decisione se è uno zombie basata su una singola misurazione. Questo è necessario perché molti zombie cercano di rimanere sotto il radar ed evitare di inviare spam allo stesso sito ripetutamente. Una volta che postscreen decide che un client non è uno zombie, lo inserisce temporaneamente nella lista bianca per evitare ulteriori ritardi per la posta legittima.

Utilizzeremo per questo tutorial le impostazioni predefinite con un’eccezione. Queste impostazioni sono adatte per la maggior parte delle situazioni.

Per prima cosa, aggiungiamo una riga a main.cf con il comando:

postscreen_greet_action = enforce

In secondo luogo, aggiungiamo postscreen e alcuni nuovi servizi a master.cf Nota: Queste impostazioni possono già esistere, basta decommentare. Assicurati anche che la riga “smtp inet … smtpd”, inclusi eventuali parametri, sia commentata (se ci sono, i parametri devono essere spostati nel nuovo servizio smtpd).

# File di configurazione del processo master di Postfix.  Per dettagli sul formato
# del file, vedere la pagina man master(5) (comando: "man 5 master").
#
# Non dimenticare di eseguire "postfix reload" dopo aver modificato questo file.
#
# ========================================================================== 
# tipo di servizio  privato non privilegiato  chroot  risveglio  maxproc comando + args
#               (sì)   (sì)   (sì)   (mai) (100)
# ========================================================================== 
#smtp      inet  n       -       -       -       -       smtpd
#          -o ...
smtpd     pass  -       -       n       -       -       smtpd
     -o ... # Parametri spostati dal servizio smtp al nuovo servizio smtpd.(se ci sono)
smtp      inet  n       -       n       -       1       postscreen
tlsproxy  unix  -       -       n       -       0       tlsproxy
dnsblog   unix  -       -       n       -       0       dnsblog

Ora, ricarichiamo postfix:

/etc/init.d/postfix reload
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.