3 581
contributi
m (categoria) |
(guida da adottare) |
||
(15 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
=Introduzione= | {{Guida da adottare}} | ||
In questo HowTo verrà Postfix-mysql, il pacchetto Debian che fornisce Postfix con il supporto per interfacciarsi con un database | ==Introduzione== | ||
In questo HowTo verrà installato e configurato 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 permetterà di avere un controllo dinamico e flessibile sui domini e mailbox, astraendo il tutto dagli utenti di sistema. | Questo permetterà di avere un controllo dinamico e flessibile sui domini e mailbox, astraendo il tutto dagli utenti di sistema. | ||
=Installazione= | ==Installazione== | ||
I pacchetti necessari sono: | I pacchetti necessari sono: | ||
* '''postfix-mysql''': | * '''postfix-mysql''': il server di posta Postfix con il supporto per il database MySql; | ||
* '''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 andrà a sostituire procmail (che ha il difetto di non poter essere utilizzato in caso di account virtuali. | * '''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, è sufficiente un semplice: | Per installare questi pacchetti, quindi, è sufficiente un semplice: | ||
Riga 17: | Riga 18: | ||
</pre> | </pre> | ||
=Configurazione= | ==Configurazione== | ||
La configurazione può essere divisa in tre parti: nella prima verrà configurato | La configurazione può essere divisa in tre parti: nella prima verrà configurato il Server MySql, creando le tabelle e gli utenti, nella seconda verrà | ||
il Server MySql, creando le tabelle e gli utenti, nella seconda verrà | configurato Postifx (con degli approfondimenti sul significato dei vari file di configurazione), nella terza verrà installato PostfixAdmin, un ottimo | ||
configurato Postifx (con degli approfondimenti sul significato dei vari | |||
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=== | ||
La configurazione di MySql è semplice, ma richiede alcuni accorgimenti per quanto | La configurazione di MySql è semplice, ma richiede alcuni accorgimenti per quanto riguarda la sicurezza: l'installazione di default su Debian Etch, infatti, prevede un utente root senza password, cosa per niente sicura. | ||
===Installazione=== | ====Installazione==== | ||
L'installazione di MySql è semplice ed immediata: | L'installazione di MySql è semplice ed immediata: | ||
<pre> | <pre> | ||
Riga 34: | Riga 33: | ||
Il primo pacchetto è il server, mentre il secondo è il client, che verrà usato in seguito per interagire col server. | Il primo pacchetto è il server, mentre il secondo è il client, che verrà usato in seguito per interagire col server. | ||
===Configurazione=== | ====Configurazione==== | ||
Se questa è la prima installazione di MySql, è | Se questa è la prima installazione di MySql, è consigliabile modificare la password di root, che di default è impostata ad una stringa vuota. | ||
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. | 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, è necessario usare il comando | Se non si usano tool come PhpMyAdmin o MySqlCC, è necessario usare il comando: | ||
<pre> | <pre> | ||
$ mysql -u root | $ mysql -u root | ||
Riga 47: | Riga 46: | ||
$ mysql -u root -p | $ mysql -u root -p | ||
</pre> | </pre> | ||
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 seguente: | La query per il cambio di password dell'utente root è la seguente: | ||
Riga 55: | Riga 54: | ||
</pre> | </pre> | ||
È | È necessaria, per proseguire, la creazione di 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 creerà l'utente e darà ad esso i permessi necessari. | La seguente query creerà l'utente e darà ad esso i permessi necessari. | ||
Riga 69: | Riga 68: | ||
</pre> | </pre> | ||
==Creazione delle Tabelle== | ====Creazione delle Tabelle==== | ||
La creazione delle tabelle richiede l'esecuzione delle seguenti query: | La creazione delle tabelle richiede l'esecuzione delle seguenti query: | ||
Riga 125: | Riga 124: | ||
</pre> | </pre> | ||
Inserimento dei primi dati | ====Inserimento dei primi dati==== | ||
Con la seguente query verrà inserito un primo utente ed un dominio (ovviamente | Con la seguente query verrà inserito un primo utente ed un dominio (ovviamente fittizi). | ||
<pre> | <pre> | ||
Riga 139: | Riga 138: | ||
===Possibili problemi con MySql=== | ====Possibili problemi con MySql==== | ||
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 | 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 <code>/etc/mysql/my.conf</code> modificando la riga | ||
<pre> | <pre> | ||
skip-network | skip-network | ||
</pre> | </pre> | ||
in | in: | ||
<pre> | <pre> | ||
bind-address = 127.0.0.1 | bind-address = 127.0.0.1 | ||
</pre> | </pre> | ||
per fare in modo che | 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 è necessario che MySql possa essere interrogato anche da altri IP, è sufficiente commentare entrambe le righe. | Se per caso è necessario che MySql possa essere interrogato anche da altri IP, è sufficiente commentare entrambe le righe. | ||
In alcuni casi il problema persiste anche impostando MySql in ascolto sull'interfaccia di 127.0.0.1. In questo caso bisogna cambiare la riga: | |||
<pre> | |||
hostname = localhost | |||
</pre> | |||
con: | |||
<pre> | |||
hostname = 127.0.0.1 | |||
</pre> | |||
in tutti i file che seguono e che configurano l'accesso per MySql, ovvero in tutti i file <code>mysql_*_maps.cf</code> descritti qui di seguito. | |||
Citazione dal manuale di postfix - mysql_table(5): | |||
<pre> | |||
NOTE: if you specify localhost as a hostname (even | |||
if you prefix it with inet:), MySQL will connect to | |||
the default UNIX domain socket. In order to | |||
instruct MySQL to connect to localhost over TCP you | |||
have to specify | |||
hosts = 127.0.0.1 | |||
</pre> | |||
==Postfix== | ===Postfix=== | ||
La configurazione di Postfix richiede la modifica del file | La configurazione di Postfix richiede la modifica del file principale di configurazione <code>'''/etc/postfix/main.cf'''</code> nel modo seguente: | ||
===main.cf=== | ====<code>main.cf</code>==== | ||
<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 gestirà le mailbox un uid e gid statici | # 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 | # così da evitare di dover creare un utente reale per ogni utente virtuale | ||
virtual_gid_maps = static:1001 | virtual_gid_maps = static:1001 | ||
virtual_uid_maps = static:1001 | virtual_uid_maps = static:1001 | ||
Riga 195: | Riga 212: | ||
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 è possibile vedere, i parametri sono molto intuitivi, | Come è possibile vedere, i parametri sono molto intuitivi, perciò verrà commentato solo il primo file. | ||
===mysql_virtual_alias_maps.cf=== | ====<code>mysql_virtual_alias_maps.cf</code>==== | ||
<pre> | <pre> | ||
# l'utente da usare per collegarsi a mysql | # l'utente da usare per collegarsi a mysql | ||
Riga 218: | Riga 235: | ||
</pre> | </pre> | ||
===mysql_virtual_domains_maps.cf=== | ====<code>mysql_virtual_domains_maps.cf</code>==== | ||
Questo file conterrà i dettagli per la connessione e la consultazione della tabella dei domini. | 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 | In questa tabella saranno elencati i domini per i quali Postfix potrà accettare la posta. | ||
<pre> | <pre> | ||
Riga 236: | Riga 253: | ||
</pre> | </pre> | ||
===mysql_virtual_mailbox_maps.cf=== | ====<code>mysql_virtual_mailbox_maps.cf</code>==== | ||
<pre> | <pre> | ||
user = postfix | user = postfix | ||
Riga 248: | Riga 265: | ||
</pre> | </pre> | ||
===mysql_virtual_mailbox_limit_maps.cf=== | ====<code>mysql_virtual_mailbox_limit_maps.cf</code>==== | ||
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 così che una sola casella occupi tutto lo spazio a disposizione. | 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. | ||
Riga 263: | Riga 280: | ||
</pre> | </pre> | ||
===mysql_relay_domains_maps.cf=== | ====<code>mysql_relay_domains_maps.cf</code>==== | ||
Questo file contiene i parametri di connessione per ottenere la lista dei domini per i quali postfix fa da | Questo file contiene i parametri di connessione per ottenere la lista dei domini per i quali postfix fa da relay (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. | Questo per evitare che il nostro server venga usato come ''Open Relay'', e quindi inserito in blacklist o usato da spammer. | ||
Riga 278: | Riga 295: | ||
</pre> | </pre> | ||
===Applicazione delle modifiche=== | ====Applicazione delle modifiche==== | ||
La configurazione di Postfix per l'interazione con MySql si può ritenere conclusa. | La configurazione di Postfix per l'interazione con MySql si può ritenere conclusa. | ||
Per applicare le modifiche apportate è necessario riavviare Postfix: | Per applicare le modifiche apportate è necessario riavviare Postfix: | ||
Riga 285: | Riga 302: | ||
</pre> | </pre> | ||
===mail.cf=== | ====<code>mail.cf</code>==== | ||
<pre> | <pre> | ||
broken_sasl_auth_clients = yes | broken_sasl_auth_clients = yes | ||
Riga 306: | Riga 323: | ||
</pre> | </pre> | ||
=== | ====<code>smtpd.conf</code>==== | ||
<pre> | <pre> | ||
pwcheck_method: authdaemond | pwcheck_method: authdaemond | ||
Riga 314: | Riga 331: | ||
</pre> | </pre> | ||
==Maildrop: filtraggio della posta== | |||
===Installazione=== | |||
=Maildrop: filtraggio della posta= | |||
==Installazione== | |||
L'installazione è molto semplice: | L'installazione è molto semplice: | ||
<pre> | <pre> | ||
Riga 330: | Riga 345: | ||
L'aggiunta di questo utente è necessaria, in quanto sarà attraverso lui che maildrop agirà. | L'aggiunta di questo utente è necessaria, in quanto sarà attraverso lui che maildrop agirà. | ||
[[Categoria: | {{Autori | ||
|Autore=[[Utente:MaXeR|MaXeR]] | |||
}} | |||
[[Categoria:Mail server]][[Categoria:Database server]] |
contributi