3 581
contributi
m (→Configurazione: formattazione) |
(guida da adottare) |
||
(21 versioni intermedie di 9 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
=Introduzione= | {{Guida da adottare}} | ||
In questo HowTo | ==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 | 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 | * '''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 | ||
</pre> | </pre> | ||
=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 verrà | ||
il Server MySql, creando le tabelle e gli utenti, nella seconda | 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 | |||
tool per la gestione di utenti e domini. | tool per la gestione di utenti e domini. | ||
== | ===MySql=== | ||
La configurazione di MySql | 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 | 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 è 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. | |||
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, sarà necessario usare il comando | |||
per accedere come utente root; una volta specificata la password, inoltre, | |||
<pre> | <pre> | ||
$ 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). | |||
La query per il cambio di password dell'utente root è la seguente: | |||
<pre> | <pre> | ||
USE mysql; | USE mysql; | ||
Riga 58: | 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 | La seguente query creerà l'utente e darà ad esso i permessi necessari. | ||
<pre> | <pre> | ||
Riga 72: | 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 128: | Riga 124: | ||
</pre> | </pre> | ||
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 fittizi). | ||
<pre> | <pre> | ||
Riga 142: | Riga 138: | ||
===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 <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 | 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 | # 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 virtuale | ||
virtual_gid_maps = static:1001 | virtual_gid_maps = static:1001 | ||
virtual_uid_maps = static:1001 | virtual_uid_maps = static:1001 | ||
Riga 198: | 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 | 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 215: | Riga 229: | ||
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=== | ====<code>mysql_virtual_domains_maps.cf</code>==== | ||
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 potrà accettare la posta. | |||
<pre> | <pre> | ||
user = postfix | user = postfix | ||
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. | |||
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> | ||
user = postfix | user = postfix | ||
Riga 258: | Riga 278: | ||
where_field = username | where_field = username | ||
#additional_conditions = and active = '1' | #additional_conditions = and active = '1' | ||
</pre> | </pre> | ||
====<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 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. | |||
<pre> | <pre> | ||
user = postfix | user = postfix | ||
Riga 272: | Riga 295: | ||
</pre> | </pre> | ||
===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 | ||
</pre> | </pre> | ||
===mail.cf=== | ====<code>mail.cf</code>==== | ||
<pre> | <pre> | ||
broken_sasl_auth_clients = yes | broken_sasl_auth_clients = yes | ||
Riga 300: | Riga 323: | ||
</pre> | </pre> | ||
=== | ====<code>smtpd.conf</code>==== | ||
<pre> | <pre> | ||
pwcheck_method: authdaemond | pwcheck_method: authdaemond | ||
Riga 307: | Riga 330: | ||
authdaemond_path:/usr/local/var/spool/authdaemon/socket | authdaemond_path:/usr/local/var/spool/authdaemon/socket | ||
</pre> | </pre> | ||
==Maildrop: filtraggio della posta== | |||
===Installazione=== | |||
L'installazione è molto semplice: | |||
<pre> | |||
# apt-get install courier-maildrop | |||
</pre> | |||
Alcuni accorgimenti sono richiesti, per la corretta gestione della posta e delle home degli utenti: | |||
<pre> | |||
# adduser --uid 5000 vmail | |||
</pre> | |||
il numero 5000 è usato arbitrariamente, è possibile usare un qualsiasi uid, comunque maggiore di 1000, per evitare conflitti con gli altri utenti. | |||
L'aggiunta di questo utente è necessaria, in quanto sarà attraverso lui che maildrop agirà. | |||
{{Autori | |||
|Autore=[[Utente:MaXeR|MaXeR]] | |||
}} | |||
[[Categoria:Mail server]][[Categoria:Database server]] |
contributi