Postfix Tutorial · 9 min read · Oct 14, 2025

Utenti e Domini Virtuali Con Postfix, Courier, MySQL E SquirrelMail (Fedora 17 x86_64)

Utenti e Domini Virtuali Con Postfix, Courier, MySQL E SquirrelMail (Fedora 17 x86_64)

Versione 1.0
Autore: Falko Timme
Seguimi su Twitter

Questo tutorial è Copyright (c) 2012 da Falko Timme. È derivato da un tutorial di Christoph Haas che puoi trovare su http://workaround.org. Sei libero di utilizzare questo tutorial sotto la licenza Creative Commons 2.5 o qualsiasi versione successiva.

Questo documento descrive come installare un server di posta Postfix basato su utenti e domini virtuali, cioè utenti e domini che si trovano in un database MySQL. Dimostrerò anche l’installazione e la configurazione di Courier (Courier-POP3, Courier-IMAP), in modo che Courier possa autenticarsi contro lo stesso database MySQL utilizzato da Postfix.

Il server Postfix risultante è in grado di SMTP-AUTH e TLS e quota (la quota non è integrata in Postfix per impostazione predefinita, mostrerò come patchare il tuo Postfix in modo appropriato). Le password sono memorizzate in forma criptata nel database (la maggior parte dei documenti che ho trovato trattava password in testo semplice, il che rappresenta un rischio per la sicurezza). Inoltre, questo tutorial copre l’installazione di Amavisd, SpamAssassin e ClamAV in modo che le email vengano scansionate per spam e virus. Mostrerò anche come installare SquirrelMail come interfaccia webmail in modo che gli utenti possano leggere e inviare email e cambiare le loro password.

Il vantaggio di una configurazione “virtuale” (utenti e domini virtuali in un database MySQL) è che è molto più performante rispetto a una configurazione basata su utenti di sistema “reali”. Con questa configurazione virtuale, il tuo server di posta può gestire migliaia di domini e utenti. Inoltre, è più facile da amministrare perché devi solo occuparti del database MySQL quando aggiungi nuovi utenti/domini o modifichi quelli esistenti. Niente più comandi postmap per creare file db, niente più ricaricamenti di Postfix, ecc. Per l’amministrazione del database MySQL puoi utilizzare strumenti basati sul web come phpMyAdmin che verrà installato anche in questo howto. Il terzo vantaggio è che gli utenti hanno un indirizzo email come nome utente (invece di un nome utente + un indirizzo email) che è più facile da comprendere e ricordare.

Questo howto è inteso come una guida pratica; non copre gli aspetti teorici. Questi sono trattati in molti altri documenti sul web.

Questo documento viene fornito senza garanzia di alcun tipo! Voglio dire che questo non è l’unico modo per impostare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!

1 Nota Preliminare

Questo tutorial è basato su Fedora 17 x86_64, quindi dovresti impostare un’installazione di base del server Fedora 17 prima di continuare con questo tutorial. Il sistema dovrebbe avere un indirizzo IP statico. Utilizzo 192.168.0.100 come mio indirizzo IP in questo tutorial e server1.example.com come nome host.

Dovresti assicurarti che il firewall sia disattivato (almeno per ora).

Assicurati anche che SELinux sia disabilitato:

Modifica /etc/selinux/config e imposta SELINUX=disabled:

vi /etc/selinux/config

| # Questo file controlla lo stato di SELinux sul sistema. # SELINUX= può assumere uno di questi tre valori: # enforcing - La politica di sicurezza SELinux è applicata. # permissive - SELinux stampa avvisi invece di applicare. # disabled - Nessuna politica SELinux è caricata. SELINUX=disabled # SELINUXTYPE= può assumere uno di questi due valori: # targeted - I processi mirati sono protetti, # minimum - Modifica della politica mirata. Solo i processi selezionati sono protetti. # mls - Protezione Multi Level Security. SELINUXTYPE=targeted |

Dopo dobbiamo riavviare il sistema:

reboot

2 Installa Alcuni Software

Prima aggiorniamo i nostri pacchetti esistenti sul sistema:

yum update

Ora installiamo alcuni software di cui abbiamo bisogno più avanti:

yum groupinstall 'Development Tools'
yum groupinstall 'Development Libraries'

3 Installa Apache, MySQL, phpMyAdmin

Tutto questo può essere installato con un solo comando (inclusi i pacchetti di cui abbiamo bisogno per costruire Courier-IMAP):

yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel phpMyAdmin pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel libidn-devel

4 Installa Courier-IMAP, Courier-Authlib, E Maildrop

Sfortunatamente non ci sono pacchetti rpm per Courier-IMAP, Courier-Authlib e Maildrop, quindi dobbiamo costruirli noi stessi.

I pacchetti RPM non dovrebbero essere costruiti come root; courier-imap rifiuterà anche di compilare se rileva che la compilazione viene eseguita come utente root. Pertanto, creiamo ora un normale account utente (falko in questo esempio) e diamo a lui una password:

useradd -m -s /bin/bash falko  
passwd falko

Avremo bisogno del comando sudo più avanti in modo che l’utente falko possa compilare e installare i pacchetti rpm. Ma prima, dobbiamo consentire a falko di eseguire tutti i comandi utilizzando sudo:

Esegui

visudo

Nel file che si apre c’è una riga root ALL=(ALL) ALL. Aggiungi una riga simile per falko appena sotto quella riga:

| [...] ## Consenti a root di eseguire qualsiasi comando ovunque root ALL=(ALL) ALL falko ALL=(ALL) ALL [...] |

Ora siamo pronti per costruire il nostro pacchetto rpm. Prima diventa l’utente falko:

su falko

Successivamente creiamo il nostro ambiente di build:

mkdir $HOME/rpm  
mkdir $HOME/rpm/SOURCES  
mkdir $HOME/rpm/SPECS  
mkdir $HOME/rpm/BUILD  
mkdir $HOME/rpm/BUILDROOT  
mkdir $HOME/rpm/SRPMS  
mkdir $HOME/rpm/RPMS  
mkdir $HOME/rpm/RPMS/i386  
mkdir $HOME/rpm/RPMS/x86_64
echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

Ora creiamo una directory di download e scarichiamo i file sorgente da http://www.courier-mta.org/download.php:

mkdir $HOME/downloads  
cd $HOME/downloads
wget https://sourceforge.net/projects/courier/files/authlib/0.64.0/courier-authlib-0.64.0.tar.bz2  
wget https://sourceforge.net/projects/courier/files/imap/4.9.3/courier-imap-4.9.3.tar.bz2  
wget https://sourceforge.net/projects/courier/files/maildrop/2.5.5/maildrop-2.5.5.tar.bz2

(Assicurati di scaricare courier-imap-4.9.3.tar.bz2 e non il più recente courier-imap-4.10.0.tar.bz2 - provare a costruire courier-imap-4.10.0.tar.bz2 ha bloccato ripetutamente il mio sistema.)

Ora (ancora in $HOME/downloads) possiamo costruire courier-authlib:

sudo rpmbuild -ta courier-authlib-0.64.0.tar.bz2

Dopo il processo di build, i pacchetti rpm possono essere trovati in /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 se sei su un sistema i386). Il comando

sudo ls -l /root/rpmbuild/RPMS/x86_64

mostra i pacchetti rpm disponibili:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64  
total 580  
-rw-r--r-- 1 root root 127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
[falko@server1 downloads]$

Seleziona quelli che vuoi installare e installali in questo modo:

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/courier-authlib-0.64.0-1.fc17.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm /root/rpmbuild/RPMS/x86_64/courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm

Ora torniamo alla nostra directory di download:

cd $HOME/downloads

Esegui i seguenti comandi per creare le directory richieste/cambiare i permessi delle directory (perché altrimenti il processo di build per Courier-Imap fallirà):

sudo mkdir /var/cache/ccache/tmp  
sudo chmod o+rwx /var/cache/ccache/  
sudo chmod 777 /var/cache/ccache/tmp

Ora esegui rpmbuild di nuovo, questa volta senza sudo, altrimenti la compilazione fallirà perché è stata eseguita come root:

rpmbuild -ta courier-imap-4.9.3.tar.bz2

Dopo il processo di build, i pacchetti rpm possono essere trovati in $HOME/rpm/RPMS/x86_64 ($HOME/rpm/RPMS/i386 se sei su un sistema i386):

cd $HOME/rpm/RPMS/x86_64

Il comando

ls -l

mostra i pacchetti rpm disponibili:

[falko@server1 x86_64]$ ls -l  
total 1248  
-rw-rw-r-- 1 falko falko 318293 Jun 11 18:28 courier-imap-4.9.3-1.17.x86_64.rpm  
-rw-rw-r-- 1 falko falko 957697 Jun 11 18:28 courier-imap-debuginfo-4.9.3-1.17.x86_64.rpm  
[falko@server1 x86_64]$

Puoi installare courier-imap in questo modo:

sudo rpm -ivh courier-imap-4.9.3-1.17.x86_64.rpm

Ora torniamo alla nostra directory di download:

cd $HOME/downloads

E esegui rpmbuild di nuovo, questa volta per costruire un pacchetto maildrop:

sudo rpmbuild -ta maildrop-2.5.5.tar.bz2

Dopo il processo di build, i pacchetti rpm possono essere trovati in /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 se sei su un sistema i386). Il comando

sudo ls -l /root/rpmbuild/RPMS/x86_64

mostra i pacchetti rpm disponibili:

[falko@server1 downloads]$ sudo ls -l /root/rpmbuild/RPMS/x86_64  
total 1844  
-rw-r--r-- 1 root root 127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 285877 Jun 11 18:42 maildrop-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 829453 Jun 11 18:42 maildrop-debuginfo-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 102417 Jun 11 18:42 maildrop-devel-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root   66177 Jun 11 18:42 maildrop-man-2.5.5-1.17.x86_64.rpm  
[falko@server1 downloads]$

Puoi ora installare maildrop in questo modo:

sudo rpm -ivh /root/rpmbuild/RPMS/x86_64/maildrop-2.5.5-1.17.x86_64.rpm

Dopo aver compilato e installato tutti i pacchetti necessari, puoi tornare a root digitando

exit

5 Applica la Patch Quota a Postfix

Dobbiamo ottenere il sorgente rpm di Postfix, patcharlo con la patch quota, costruire un nuovo pacchetto rpm di Postfix e installarlo.

cd /usr/src  
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/17/Everything/source/SRPMS/p/postfix-2.9.2-2.fc17.src.rpm  
rpm -ivh postfix-2.9.2-2.fc17.src.rpm

L’ultimo comando mostrerà alcuni avvisi che puoi ignorare:

warnings: user mockbuild does not exist - using root  
warnings: group mockbuild does not exist - using root
cd /root/rpmbuild/SOURCES  
wget http://vda.sourceforge.net/VDA/postfix-vda-v11-2.9.1.patch  
cd /root/rpmbuild/SPECS/

Ora dobbiamo modificare il file postfix.spec:

vi postfix.spec

Aggiungi Patch0: postfix-vda-v11-2.9.1.patch alla strofetta # Patches, e %patch0 -p1 -b .vda-v11 alla strofetta %setup -q:

| [...] # Patches Patch0: postfix-vda-v11-2.9.1.patch Patch1: postfix-2.7.0-config.patch Patch2: postfix-2.6.1-files.patch Patch3: postfix-alternatives.patch Patch8: postfix-large-fs.patch Patch9: pflogsumm-1.1.3-datecalc.patch [...] %prep %setup -q # Applica le patch obbligatorie %patch0 -p1 -b .vda-v11 %patch1 -p1 -b .config %patch2 -p1 -b .files %patch3 -p1 -b .alternatives %patch8 -p1 -b .large-fs [...] |

Prima di costruire il nuovo pacchetto Postfix, dobbiamo installare la sua dipendenza libdb-devel - e poiché libdb-devel confligge con db4-devel, dobbiamo prima rimuovere quel pacchetto:

yum remove db4-devel
yum install libdb-devel

Poi costruiamo il nostro nuovo pacchetto rpm di Postfix con supporto quota e MySQL:

rpmbuild -ba postfix.spec

Il nostro pacchetto rpm di Postfix viene creato in /root/rpmbuild/RPMS/x86_64 (/root/rpmbuild/RPMS/i386 se sei su un sistema i386), quindi andiamo lì:

cd /root/rpmbuild/RPMS/x86_64

Il comando

ls -l

mostra i pacchetti disponibili:

[root@server1 x86_64]# ls -l  
total 10312  
-rw-r--r-- 1 root root  127673 Jun 11 17:29 courier-authlib-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  315769 Jun 11 17:29 courier-authlib-debuginfo-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   37937 Jun 11 17:29 courier-authlib-devel-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   17657 Jun 11 17:29 courier-authlib-ldap-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   13865 Jun 11 17:29 courier-authlib-mysql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   13101 Jun 11 17:29 courier-authlib-pgsql-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root    8421 Jun 11 17:29 courier-authlib-pipe-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   34917 Jun 11 17:29 courier-authlib-userdb-0.64.0-1.fc17.x86_64.rpm  
-rw-r--r-- 1 root root  285877 Jun 11 18:42 maildrop-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root  829453 Jun 11 18:42 maildrop-debuginfo-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root  102417 Jun 11 18:42 maildrop-devel-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root   66177 Jun 11 18:42 maildrop-man-2.5.5-1.17.x86_64.rpm  
-rw-r--r-- 1 root root 2291437 Jun 11 19:04 postfix-2.9.2-2.fc17.x86_64.rpm  
-rw-r--r-- 1 root root 6308357 Jun 11 19:04 postfix-debuginfo-2.9.2-2.fc17.x86_64.rpm  
-rw-r--r-- 1 root root   65393 Jun 11 19:04 postfix-perl-scripts-2.9.2-2.fc17.x86_64.rpm  
[root@server1 x86_64]#

Scegli il pacchetto Postfix e installalo in questo modo:

rpm -ivh postfix-2.9.2-2.fc17.x86_64.rpm
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.