Postfix e MySQL · 5 min read · Nov 09, 2025
Utenti e Domini Virtuali Con Postfix, Courier e MySQL (Fedora Core 5)
Utenti e Domini Virtuali Con Postfix, Courier e MySQL (Fedora Core 5)
Versione 1.0
Autore: Falko Timme
Questo tutorial è Copyright (c) 2006 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 basato su Postfix che si basa 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 di conseguenza). Le password sono memorizzate in forma criptata nel database (la maggior parte dei documenti che ho trovato trattava password in testo semplice, il che è 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.
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à anche installato 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 tutorial è basato su Fedora Core 5 (i386). Dovresti già aver configurato un sistema Fedora di base, come descritto qui (per un sistema x86_64, ma la procedura per i sistemi i386 è la stessa): https://www.howtoforge.com/perfect_setup_fedora_core_5 e https://www.howtoforge.com/perfect_setup_fedora_core_5_p2. Inoltre, dovresti assicurarti che il firewall sia disattivato (almeno per ora) e che SELinux sia disabilitato (questo è importante!), come mostrato su https://www.howtoforge.com/perfect_setup_fedora_core_5_p3.
Questo howto è inteso come una guida pratica; non copre i fondamenti teorici. Questi sono trattati in molti altri documenti sul web.
Questo documento viene fornito senza alcuna 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 Modifica /etc/hosts
Il nostro hostname in questo esempio è server1.example.com, e ha l’indirizzo IP 192.168.0.100, quindi modifichiamo /etc/hosts come segue:
vi /etc/hosts| # Non rimuovere la seguente riga, o vari programmi # che richiedono funzionalità di rete falliranno. 127.0.0.1 localhost.localdomain localhost 192.168.0.100 server1.example.com server1 |
2 Configura un Repository Aggiuntivo per i Pacchetti Fedora
Alcuni dei pacchetti che dobbiamo installare (come courier-imap) non sono inclusi nei repository ufficiali di Fedora, quindi dobbiamo aggiungere un altro repository a yum:
rpm -ivh http://www.enlartenment.com/packages/fedora/5/i386/enlartenment-release-1.1-2.fc5.mf.noarch.rpmDopo, dobbiamo impostare enabled su 1 in /etc/yum.repos.d/enlartenment.repo:
vi /etc/yum.repos.d/enlartenment.repo| [enlartenment] name=Enlartenment Repository per $releasever - $basearch baseurl=http://www.enlartenment.com/packages/fedora/$releasever/$basearch/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 [enlartenment-sources] name=Enlartenment Repository per $releasever - Sources baseurl=http://www.enlartenment.com/packages/fedora/$releasever/SRPMS/ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-enlartenment enabled=1 gpgcheck=1 |
Successivamente, importiamo la chiave GPG di quel repository:
rpm --import http://www.enlartenment.com/RPM-GPG-KEY.mf3 Installa Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Tutto questo può essere installato con un solo comando:
yum install ntp httpd mysql-server php php-mysql php-mbstring rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel maildrop courier-imap courier-authlib-mysql phpmyadmin pcre-devel openldap-develQuando vedi questo:
warnings: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2
Public key for ntp-4.2.0.a.20050816-11.FC5.i386.rpm is not installed
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
Importing GPG key 0x4F2A6FD2 "Fedora Project <[email protected]>"
Is this ok [y/N]:rispondi con y.
4 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/core/5/source/SRPMS/postfix-2.2.8-1.2.src.rpm
rpm -ivh postfix-2.2.8-1.2.src.rpm
cd /usr/src/redhat/SOURCES
wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.2.8-vda.patch.gz
gunzip postfix-2.2.8-vda.patch.gz
cd /usr/src/redhat/SPECS/Ora dobbiamo modificare il file postfix.spec:
vi postfix.specCambia %define MYSQL 0 in %define MYSQL 1, aggiungi Patch0: postfix-2.2.8-vda.patch alla sezione # Patches, e infine aggiungi %patch0 -p1 -b .vda alla sezione %setup -q:
| [...] %define MYSQL 1 [...] # Patches Patch0: postfix-2.2.8-vda.patch Patch1: postfix-2.1.1-config.patch Patch3: postfix-alternatives.patch Patch4: postfix-hostname-fqdn.patch Patch6: postfix-2.1.1-obsolete.patch Patch7: postfix-2.1.5-aliases.patch Patch8: postfix-large-fs.patch Patch9: postfix-2.2.5-cyrus.patch [...] %setup -q # Applica le patch obbligatorie %patch0 -p1 -b .vda %patch1 -p1 -b .config %patch3 -p1 -b .alternatives %patch4 -p1 -b .postfix-hostname-fqdn %patch6 -p1 -b .obsolete %patch7 -p1 -b .aliases %patch8 -p1 -b .large-fs %patch9 -p1 -b .cyrus [...] |
Poi costruiamo il nostro nuovo pacchetto rpm di Postfix con supporto per quota e MySQL:
rpmbuild -ba postfix.specVedrai molti avvisi come questi che puoi ignorare:
msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within commentIl nostro pacchetto rpm di Postfix è creato in /usr/src/redhat/RPMS/i386, quindi andiamo lì e installiamolo:
cd /usr/src/redhat/RPMS/i386
rpm -ivh postfix-2.2.8-1.2.i386.rpm(Se hai problemi a creare il pacchetto rpm di Postfix, puoi scaricare il mio da qui.)
5 Imposta le Password di MySQL e Configura phpMyAdmin
Avvia MySQL:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startPoi imposta le password per l’account root di MySQL:
mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpasswordOra configuriamo phpMyAdmin. Crea /usr/share/phpmyadmin/config.inc.php:
vi /usr/share/phpmyadmin/config.inc.php| |
Poi cambiamo la configurazione di Apache in modo che phpMyAdmin consenta connessioni non solo da localhost:
vi /etc/httpd/conf.d/phpmyadmin.conf| Alias /phpmyadmin/ "/usr/share/phpmyadmin/" # |
Poi creiamo i collegamenti di avvio del sistema per Apache e lo avviamo:
chkconfig --levels 235 httpd on
/etc/init.d/httpd startOra puoi indirizzare il tuo browser a http://server1.example.com/phpmyadmin/ e accedere con il nome utente root e la tua nuova password root di MySQL.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.