1 487
contributi
m (→Postfix) |
|||
Riga 1: | Riga 1: | ||
=Introduzione= | =Introduzione= | ||
In questo HowTo | In questo HowTo verrà Postfix-mysql, il pacchetto Debian che fornisce Postfix con il supporto per interfacciarsi con un database | ||
[http://www.mysql.com MySql]. | [http://www.mysql.com MySql]. | ||
Questo | Questo permetterà di avere un controllo dinamico e flessibile sui domini e mailbox, astraendo il tutto dagli utenti di sistema. | ||
=Installazione= | =Installazione= | ||
Riga 10: | Riga 10: | ||
* '''courier-authmysql, courier-imap''' per la gestione del servizio IMAP, utile per il controllo della posta; | * '''courier-authmysql, courier-imap''' per la gestione del servizio IMAP, utile per il controllo della posta; | ||
* '''mysql-server''': il server MySql; | * '''mysql-server''': il server MySql; | ||
* '''maildrop, mailfilter''' che | * '''maildrop, mailfilter''' che andrà a sostituire procmail (che ha il difetto di non poter essere utilizzato in caso di account virtuali. | ||
Per installare questi pacchetti, quindi, | Per installare questi pacchetti, quindi, è sufficiente un semplice: | ||
<pre> | <pre> | ||
# apt-get install postfix-mysql courier-authmysql courier-imap mysql-server maildrop mailfilter | # apt-get install postfix-mysql courier-authmysql courier-imap mysql-server maildrop mailfilter | ||
Riga 18: | Riga 18: | ||
=Configurazione= | =Configurazione= | ||
La configurazione | La configurazione può essere divisa in tre parti: nella prima verrà configurato | ||
il Server MySql, creando le tabelle e gli utenti, nella seconda | il Server MySql, creando le tabelle e gli utenti, nella seconda verrà | ||
configurato Postifx (con degli approfondimenti sul significato dei vari | configurato Postifx (con degli approfondimenti sul significato dei vari | ||
file di configurazione), nella terza | file di configurazione), nella terza verrà installato PostfixAdmin, un ottimo | ||
tool per la gestione di utenti e domini. | tool per la gestione di utenti e domini. | ||
==Mysql== | ==Mysql== | ||
La configurazione di MySql | La configurazione di MySql è semplice, ma richiede alcuni accorgimenti per quanto rigaurda la sicurezza: l'installazione di default, infatti, prevede un utente root senza password, cosa per niente sicura. | ||
===Installazione=== | ===Installazione=== | ||
L'installazione di MySql | L'installazione di MySql è semplice ed immediata: | ||
<pre> | <pre> | ||
# apt-get install mysql-server mysql-client | # apt-get install mysql-server mysql-client | ||
</pre> | </pre> | ||
Il primo pacchetto | Il primo pacchetto è il server, mentre il secondo è il client, che verrà usato in seguito per interagire col server. | ||
===Configurazione=== | ===Configurazione=== | ||
Se questa | Se questa è la prima installazione di MySql, è cosnigliabile modificare la password di root, che di default è impostata ad una stringa vuata. | ||
Per cambiare la password di root, | Per cambiare la password di root, è sufficiente modificare la query sottoriportata, modificando opportunamente la stringa ''nuova_password'' con la nuova password di root che si vuole usare. | ||
Se non si usano tool come PhpMyAdmin o MySqlCC, | Se non si usano tool come PhpMyAdmin o MySqlCC, è necessario usare il comando | ||
<pre> | <pre> | ||
$ mysql -u root | $ mysql -u root | ||
</pre> | </pre> | ||
per accedere come utente root; una volta specificata la password, inoltre, | per accedere come utente root; una volta specificata la password, inoltre, sarà necessario usare il comando | ||
<pre> | <pre> | ||
$ mysql -u root -p | $ mysql -u root -p | ||
Riga 49: | Riga 49: | ||
che, a differenza dell'altro, richiede la password di root per accedere al database (altrimenti non sarebbe possibile eseguire l'accesso. | che, a differenza dell'altro, richiede la password di root per accedere al database (altrimenti non sarebbe possibile eseguire l'accesso. | ||
La query per il cambio di password dell'utente root | La query per il cambio di password dell'utente root è la seguente: | ||
<pre> | <pre> | ||
USE mysql; | USE mysql; | ||
Riga 55: | Riga 55: | ||
</pre> | </pre> | ||
È necessario, per il proseguimento, creare un utente che sarà in grado di accedere al database per leggere i dati. In questo esempio lo chiameremo ''postfix'', ed avrà la password ''passwd''. | |||
La seguente query | La seguente query creerà l'utente e darà ad esso i permessi necessari. | ||
<pre> | <pre> | ||
Riga 127: | Riga 127: | ||
Inserimento dei primi dati | Inserimento dei primi dati | ||
Con la seguente query | Con la seguente query verrà inserito un primo utente ed un dominio (ovviamente fittizzi). | ||
<pre> | <pre> | ||
Riga 141: | Riga 141: | ||
===Possibili problemi con MySql=== | ===Possibili problemi con MySql=== | ||
Potrebbe sorgere, in seguito, un problema di dialogo tra MySql e Postfix. La cosa | Potrebbe sorgere, in seguito, un problema di dialogo tra MySql e Postfix. La cosa è dovuta al fatto che Postfix gira in un ambiente chroot, quindi non ha possibilità di interagire con MySql tramite il socket (come avviene di default). Un modo per ovviare a questo inconveniente è di modificare il file ''/etc/mysql/my.conf'' modificando la riga | ||
<pre> | <pre> | ||
skip-network | skip-network | ||
Riga 150: | Riga 150: | ||
</pre> | </pre> | ||
per fare in modo che mysql sia in ascolto solo all'IP 127.0.0.1 (e quindi non accessibile dall'esterno). | per fare in modo che mysql sia in ascolto solo all'IP 127.0.0.1 (e quindi non accessibile dall'esterno). | ||
Se per caso | Se per caso è necessario che MySql possa essere interrogato anche da altri IP, è sufficiente commentare entrambe le righe. | ||
Riga 159: | Riga 159: | ||
<pre> | <pre> | ||
virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf | virtual_alias_maps = mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf | ||
# vengono assegnate all'utente che | # vengono assegnate all'utente che gestirà le mailbox un uid e gid statici | ||
# | # così da evitare di dover creare un utente reale per ogni utente virutale | ||
virtual_gid_maps = static:1001 | virtual_gid_maps = static:1001 | ||
virtual_uid_maps = static:1001 | virtual_uid_maps = static:1001 | ||
Riga 195: | Riga 195: | ||
A questo punto rimane solo da scrivere i file che verranno usati dal backend di MySql per l'autenticazione. | A questo punto rimane solo da scrivere i file che verranno usati dal backend di MySql per l'autenticazione. | ||
Come | Come è possibile vedere, i parametri sono molto intuitivi, percià verrà commentato solo il primo file. | ||
===mysql_virtual_alias_maps.cf=== | ===mysql_virtual_alias_maps.cf=== | ||
Riga 212: | Riga 212: | ||
select_field = goto | select_field = goto | ||
# il campo su cui viene fatta la query (in questo | # il campo su cui viene fatta la query (in questo | ||
# caso | # caso verrà cercato il record in cui il campo 'address' | ||
# corrisponde all'email del destinatario. L'indirizzo a cui | # corrisponde all'email del destinatario. L'indirizzo a cui | ||
# questa email | # questa email dovrà essere inviato sarà indicato dal campo 'goto' | ||
where_field = address | where_field = address | ||
</pre> | </pre> | ||
===mysql_virtual_domains_maps.cf=== | ===mysql_virtual_domains_maps.cf=== | ||
Questo file | Questo file conterrà i dettagli per la connessione e la consultazione della tabella dei domini. | ||
In questa tabella saranno elencati i domini per i quali postfix | In questa tabella saranno elencati i domini per i quali postfix potrà accettare la posta. | ||
<pre> | <pre> | ||
Riga 251: | Riga 250: | ||
===mysql_virtual_mailbox_limit_maps.cf=== | ===mysql_virtual_mailbox_limit_maps.cf=== | ||
Questo file contiene i parametri per l'interrogazione di MySql al fine di ottenere le quote disponibili degli utenti. | Questo file contiene i parametri per l'interrogazione di MySql al fine di ottenere le quote disponibili degli utenti. | ||
Le quote servono per gestire la dimensione massima di ogni singola casella di posta, impedendo | Le quote servono per gestire la dimensione massima di ogni singola casella di posta, impedendo così che una sola casella occupi tutto lo spazio a disposizione. | ||
<pre> | <pre> | ||
Riga 265: | Riga 264: | ||
===mysql_relay_domains_maps.cf=== | ===mysql_relay_domains_maps.cf=== | ||
Questo file contiene i parametri di connessione per ottenere la lista dei domini per i quali postfix fa da releay (quindi accetta la posta dall'esterno (ovviamente per gli utenti autenticati le cose saranno diverse). | |||
Questo per evitare che il nostro server venga usato come ''Open Relay'', e quindi inserito in blacklist o usato da spammer. | |||
<pre> | <pre> | ||
user = postfix | user = postfix | ||
Riga 277: | Riga 279: | ||
===Applicazione delle modifiche=== | ===Applicazione delle modifiche=== | ||
La configurazione di Postfix per l'interazione con MySql si | La configurazione di Postfix per l'interazione con MySql si può ritenere conclusa. | ||
Per applicare le modifiche apportate | Per applicare le modifiche apportate è necessario riavviare Postfix: | ||
<pre> | <pre> | ||
# /etc/init.d/postfix restart | # /etc/init.d/postfix restart |
contributi