Postfix e Spam · 6 min read · Jan 11, 2026
Utenti e Domini Virtuali Con Postfix, Courier, MySQL E SquirrelMail (CentOS 4.8 i386) - Pagina 4
13 Installa Razor, Pyzor E DCC E Configura SpamAssassin
Razor, Pyzor e DCC sono filtri antispam che utilizzano una rete di filtraggio collaborativo. Per installare Razor, esegui
yum install perl-Razor-Agent razor-agentsPyzor non è disponibile nei repository di CentOS 4.8, ma possiamo installare il pacchetto Pyzor per RHEL 4 invece (questo è un pacchetto noarch, cioè funziona su x86_64 e i386):
rpm -ivh ftp://ftp.pbone.net/mirror/ftp.silfreed.net/repo/rhel/4/i386/silfreednet/RPMS/pyzor-0.4.0-2.el4.noarch.rpm(Puoi utilizzare la ricerca RPM su http://rpm.pbone.net/ per trovare la versione attuale se il link sopra non funziona più.)
Poi inizializza entrambi i servizi:
chmod -R a+rX /usr/share/doc/pyzor-0.4.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.3/site-packages/pyzor
mkdir /var/spool/amavisd
chown amavis:amavis /var/spool/amavisd
su -m amavis -c 'pyzor --homedir /var/spool/amavisd discover'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -create'
su -m amavis -c 'razor-admin -home=/var/spool/amavisd -register'Poi installiamo DCC come segue:
cd /tmp
wget http://www.dcc-servers.net/dcc/source/dcc-dccproc.tar.Z
tar xzvf dcc-dccproc.tar.Z
cd dcc-dccproc-1.3.115
./configure --with-uid=amavis
make
make install
chown -R amavis:amavis /var/dcc
ln -s /var/dcc/libexec/dccifd /usr/local/bin/dccifdOra dobbiamo dire a SpamAssassin di utilizzare questi tre programmi. Modifica /etc/mail/spamassassin/local.cf in modo che appaia così:
vi /etc/mail/spamassassin/local.cf| # Questi valori possono essere sovrascritti modificando ~/.spamassassin/user_prefs.cf # (vedi spamassassin(1) per dettagli) # Queste dovrebbero essere assunzioni sicure e consentire una semplice selezione visiva # senza rischiare di perdere email. #required_hits 5 #report_safe 0 #rewrite_header Subject [SPAM] # dcc use_dcc 1 dcc_path /usr/local/bin/dccproc #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor #razor use_razor2 1 razor_config /var/spool/amavisd/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 |
Poi dobbiamo abilitare il plugin DCC in SpamAssassin. Apri /etc/mail/spamassassin/v310.pre e decommenta la riga loadplugin Mail::SpamAssassin::Plugin::DCC:
vi /etc/mail/spamassassin/v310.pre| [...] # DCC - esegui controlli dei messaggi DCC. # # DCC è disabilitato qui perché non è open source. Vedi la licenza DCC # per ulteriori dettagli. # loadplugin Mail::SpamAssassin::Plugin::DCC [...] |
Puoi controllare la configurazione di SpamAssassin eseguendo:
spamassassin --lintNon dovrebbe mostrare errori.
Esegui
/etc/init.d/amavisd restartdopo.
Ora aggiorniamo i nostri set di regole di SpamAssassin come segue:
sa-update --no-gpgCreiamo un lavoro cron in modo che i set di regole vengano aggiornati regolarmente. Esegui
crontab -eper aprire l’editor del lavoro cron. Crea il seguente lavoro cron:
| 23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null |
Questo aggiornerà i set di regole ogni secondo giorno alle 4.23h.
14 Notifiche di Superamento Quota
Se desideri ricevere notifiche su tutti gli account email che sono oltre quota, fai così:
cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv quota.txt quota_notify
chmod 755 quota_notifyApri /usr/local/sbin/quota_notify e modifica le variabili in cima. Più in basso nel file (verso la fine) ci sono due righe in cui dovresti aggiungere un simbolo % ( $lusers{$luser}%):
vi /usr/local/sbin/quota_notify| [...] my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('[email protected]'); my $CONAME = 'La Mia Azienda'; my $COADDR = '[email protected]'; my $SUADDR = '[email protected]'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; [...] print "Subject: ATTENZIONE: La tua casella di posta è $lusers{$luser}% piena.\n"; [...] print "La tua casella di posta: $luser è $lusers{$luser}% piena.\n\n"; [...] |
Esegui
crontab -eper creare un lavoro cron per quello script:
| 0 0 * * * /usr/local/sbin/quota_notify &> /dev/null |
15 Testa Postfix
Per vedere se Postfix è pronto per SMTP-AUTH e TLS, esegui
telnet localhost 25Dopo aver stabilito la connessione al tuo server di posta Postfix, digita
ehlo localhostSe vedi le righe
*250-STARTTLS *e
*250-AUTH PLAIN* LOGIN* *tutto va bene.
[root@server1 sbin]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.
[root@server1 sbin]#Digita
quitper tornare alla shell del sistema.
16 Popola Il Database E Testa
Per popolare il database puoi utilizzare la shell di MySQL:
mysql -u root -pUSE mail;Almeno devi creare voci nelle tabelle domains e users:
INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('[email protected]', ENCRYPT('secret'), 10485760);(Per favore fai attenzione a utilizzare la sintassi ENCRYPT nella seconda istruzione INSERT per crittografare la password!)
Se desideri fare voci nelle altre due tabelle, questo apparirebbe così:
INSERT INTO `forwardings` (`source`, `destination`) VALUES ('[email protected]', '[email protected]');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');Per uscire dalla shell di MySQL, digita
quit;Per la maggior parte delle persone è più facile avere un’interfaccia grafica per MySQL; quindi puoi anche utilizzare phpMyAdmin (in questo esempio sotto http://192.168.0.100/phpmyadmin/ o http://server1.example.com/phpmyadmin/) per amministrare il database mail. Ancora una volta, quando crei un utente, assicurati di utilizzare la funzione ENCRYPT per crittografare la password:
Non penso di dover spiegare ulteriormente le tabelle domains e users.
La tabella forwardings può avere voci come le seguenti:
| source | destination | |
| [email protected] | [email protected] | Inoltra le email per [email protected] a [email protected] |
| @example.com | [email protected] | Crea un account Catch-All per [email protected]. Tutte le email a example.com arriveranno a [email protected], tranne quelle che esistono nella tabella users (cioè, se [email protected] esiste nella tabella users, le email a [email protected] arriveranno comunque a [email protected]). |
| @example.com | @anotherdomain.tld | Questo inoltra tutte le email a example.com allo stesso utente su anotherdomain.tld. Ad esempio, le email a [email protected] verranno inoltrate a [email protected]. |
| [email protected] | [email protected], [email protected] | Inoltra le email per [email protected] a due o più indirizzi email. Tutti gli indirizzi email elencati sotto destinazione ricevono una copia dell’email. |
La tabella transport può avere voci come queste:
| domain | transport | | | example.com | : | Consegna le email per example.com localmente. Questo è come se questo record non esistesse affatto in questa tabella. | example.com | smtp:mail.anotherdomain.tld | Consegna tutte le email per example.com tramite smtp al server mail.anotherdomain.com. | | example.com | smtp:mail.anotherdomain.tld:2025 | Consegna tutte le email per example.com tramite smtp al server mail.anotherdomain.com, ma sulla porta 2025, non 25 che è la porta predefinita per smtp. | | example.com | smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld] | Le parentesi quadre impediscono a Postfix di eseguire ricerche del record MX DNS per l’indirizzo tra parentesi quadre. Ha senso per gli indirizzi IP. | | .example.com | smtp:mail.anotherdomain.tld | La posta per qualsiasi sottodominio di example.com viene consegnata a mail.anotherdomain.tld. | | * | smtp:mail.anotherdomain.tld | Tutte le email vengono consegnate a mail.anotherdomain.tld. | | [email protected] | smtp:mail.anotherdomain.tld | Le email per [email protected] vengono consegnate a mail.anotherdomain.tld. |
Vedi
man transportper ulteriori dettagli.
Per favore, tieni presente che l’ordine delle voci nella tabella transport è importante! Le voci verranno seguite dall’alto verso il basso.
Importante: Postfix utilizza un meccanismo di caching per i trasporti, quindi potrebbe volerci del tempo prima che le modifiche nella tabella transport abbiano effetto. Se desideri che abbiano effetto immediato, esegui
postfix reloaddopo aver apportato le modifiche nella tabella transport.
17 Invia Una Email Di Benvenuto Per Creare Maildir
Quando crei un nuovo account email e provi a recuperare email da esso (con POP3/IMAP) probabilmente riceverai messaggi di errore che dicono che il Maildir non esiste. Il Maildir viene creato automaticamente quando arriva la prima email per il nuovo account. Pertanto, è una buona idea inviare un’email di benvenuto a un nuovo account.
Per prima cosa, installiamo il pacchetto mailx:
yum install mailxPer inviare un’email di benvenuto a [email protected], facciamo così:
mailx [email protected]Ti verrà chiesto di inserire l’oggetto. Digita l’oggetto (ad esempio Benvenuto), poi premi INVIO, e nella riga successiva digita il tuo messaggio. Quando il messaggio è finito, premi di nuovo INVIO in modo da essere in una nuova riga, poi premi CTRL+D:
[root@server1 sbin]# mailx [email protected]
Subject: Benvenuto <– INVIO
Benvenuto! Divertiti con il tuo nuovo account email. <– INVIO
<– CTRL+D
Cc: <– INVIO
[root@server1 sbin]#
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.