Postfix-mysql: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(Copia da un vecchio documento di latex...da formattare)
 
(guida da adottare)
 
(24 versioni intermedie di 9 utenti non mostrate)
Riga 1: Riga 1:
{{Guida da adottare}}
==Introduzione==
==Introduzione==
In questo HowTo verr� Postfix-mysql, il pacchetto Debian che fornisce Postfix con il supporto per interfacciarsi con un database
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''': Il server di posta Postfix con il supporto per il database 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:
<pre>
# apt-get install postfix-mysql courier-authmysql courier-imap mysql-server maildrop mailfilter
</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===
===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.
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>
# apt-get install mysql-server mysql-client
# apt-get install mysql-server mysql-client
</pre>
</pre>
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, è consigliabile modificare la password di root, che di default è impostata ad una stringa vuota.


'''Cambio di Password all'utente root''' Per cambiare la password di root, � sufficiente
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, � 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
</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, sar� necessario usare il comando
 
<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).


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 54: Riga 54:
</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''.
È 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.


<pre>
<pre>
Riga 67: 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:
<pre>
<pre>
#
#
Riga 123: 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 fittizi).


Con la seguente query verrà inserito un primo utente ed un dominio (ovviamente fittizzi).
<pre>
<pre>
USE postfix;
USE postfix;
Riga 136: 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 ''/etc/mysql/my.conf'' modificando la riga
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 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 � 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 principare di configurazione \textit{/etc/postfix/main.cf} nel modo seguente:
La configurazione di Postfix richiede la modifica del file principale di configurazione <code>'''/etc/postfix/main.cf'''</code> nel modo seguente:


\paragraph{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 virutale
# 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 192: 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, perci� verr� commentato solo il primo file.
Come è possibile vedere, i parametri sono molto intuitivi, perciò verrà commentato solo il primo file.
 
====<code>mysql_virtual_alias_maps.cf</code>====
<pre>
<pre>
\paragraph{mysql\_virtual\_alias\_maps.cf}
\begin{verbatim}
# l'utente da usare per collegarsi a mysql
# l'utente da usare per collegarsi a mysql
user = postfix
user = postfix
Riga 209: 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 verr� cercato il record in cui il campo 'address'
# 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 dovr� essere inviato sar� indicato dal campo 'goto'
# questa email dovrà essere inviato sarà indicato dal campo 'goto'
where_field = address
where_field = address
\end{verbatim}
</pre>


\paragraph{mysql\_virtual\_domains\_maps.cf}
====<code>mysql_virtual_domains_maps.cf</code>====
\begin{verbatim}
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>
user = postfix
user = postfix
password = postfix
password = postfix
Riga 228: Riga 251:
# decommentare, richiede che la il dominio non sia di backup e che sia attivo.
# decommentare, richiede che la il dominio non sia di backup e che sia attivo.
#additional_conditions = and backupmx = '0' and active = '1'
#additional_conditions = and backupmx = '0' and active = '1'
\end{verbatim}
</pre>


\paragraph{mysql\_virtual\_mailbox\_maps.cf}
====<code>mysql_virtual_mailbox_maps.cf</code>====
\begin{verbatim}
<pre>
user = postfix
user = postfix
password = postfix
password = postfix
Riga 240: Riga 263:
where_field = username
where_field = username
#additional_conditions = and active = '1'
#additional_conditions = and active = '1'
\end{verbatim}
</pre>


\paragraph{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.


\begin{verbatim}
<pre>
user = postfix
user = postfix
password = postfix
password = postfix
Riga 253: Riga 278:
where_field = username
where_field = username
#additional_conditions = and active = '1'
#additional_conditions = and active = '1'
\end{verbatim}
</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.


\paragraph{mysql\_relay\_domains\_maps.cf}
<pre>
 
\begin{verbatim}
user = postfix
user = postfix
password = postfix
password = postfix
Riga 267: Riga 293:
where_field = domain
where_field = domain
additional_conditions = and backupmx = '1'
additional_conditions = and backupmx = '1'
\end{verbatim}
</pre>


La configurazione di Postfix per l'interazione con MySql si pu� ritenere conclusa.
====Applicazione delle modifiche====
Per applicare le modifiche apportate � necessario riavviare Postfix:
La configurazione di Postfix per l'interazione con MySql si può ritenere conclusa.
\begin{verbatim}
Per applicare le modifiche apportate è necessario riavviare Postfix:
<pre>
# /etc/init.d/postfix restart
# /etc/init.d/postfix restart
\end{verbatim}
</pre>


\subsection{SASL2}
====<code>mail.cf</code>====
 
<pre>
\paragraph{mail.cf}
\begin{verbatim}
broken_sasl_auth_clients = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =  
smtpd_recipient_restrictions =  
Riga 296: Riga 321:
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_security_options = noanonymous
\end{verbatim}
</pre>
</pre>


===snmtp.conf===
====<code>smtpd.conf</code>====
<pre>
<pre>
pwcheck_method: authdaemond
pwcheck_method: authdaemond
Riga 306: 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]]

Versione attuale delle 07:51, 17 giu 2017

Guida da adottare! Bannermv.png


Introduzione

In questo HowTo verrà installato e configurato Postfix-mysql, il pacchetto Debian che fornisce Postfix con il supporto per interfacciarsi con un database MySql.

Questo permetterà di avere un controllo dinamico e flessibile sui domini e mailbox, astraendo il tutto dagli utenti di sistema.

Installazione

I pacchetti necessari sono:

  • 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;
  • 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).

Per installare questi pacchetti, quindi, è sufficiente un semplice:

# apt-get install postfix-mysql courier-authmysql courier-imap mysql-server maildrop mailfilter

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à 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.

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

L'installazione di MySql è semplice ed immediata:

# apt-get install mysql-server mysql-client

Il primo pacchetto è il server, mentre il secondo è il client, che verrà usato in seguito per interagire col server.

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.

Se non si usano tool come PhpMyAdmin o MySqlCC, è necessario usare il comando:

$ mysql -u root

per accedere come utente root; una volta specificata la password, inoltre, sarà necessario usare il comando

$ mysql -u root -p

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:

USE mysql;
UPDATE user SET Password = password('nuova_password') WHERE User = 'root');

È 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.

USE mysql;
INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('passwd'));
INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
FLUSH PRIVILEGES;
GRANT USAGE ON postfix.* TO postfix@localhost;
GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
CREATE DATABASE postfix;

Creazione delle Tabelle

La creazione delle tabelle richiede l'esecuzione delle seguenti query:

#
# Table structure for table alias
#
USE postfix;
CREATE TABLE alias (
  address varchar(255) NOT NULL default '',
  goto text NOT NULL,
  domain varchar(255) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  modified datetime NOT NULL default '0000-00-00 00:00:00',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';

#
# Table structure for table domain
#
USE postfix;
CREATE TABLE domain (
  domain varchar(255) NOT NULL default '',
  description varchar(255) NOT NULL default '',
  aliases int(10) NOT NULL default '0',
  mailboxes int(10) NOT NULL default '0',
  maxquota int(10) NOT NULL default '0',
  transport varchar(255) default NULL,
  backupmx tinyint(1) NOT NULL default '0',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  modified datetime NOT NULL default '0000-00-00 00:00:00',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (domain)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';


#
# Table structure for table mailbox
#
USE postfix;
CREATE TABLE mailbox (
  username varchar(255) NOT NULL default '',
  password varchar(255) NOT NULL default '',
  name varchar(255) NOT NULL default '',
  maildir varchar(255) NOT NULL default '',
  quota int(10) NOT NULL default '0',
  domain varchar(255) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  modified datetime NOT NULL default '0000-00-00 00:00:00',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (username)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';

Inserimento dei primi dati

Con la seguente query verrà inserito un primo utente ed un dominio (ovviamente fittizi).

USE postfix;
INSERT INTO domain (domain,description) VALUES ('fakedomain.lan','Dominio di Prova');
INSERT INTO alias (address,goto) VALUES ('alias@fakedomain.lan', 'user@fakedomain.lan');
INSERT INTO mailbox (username,password,name,maildir) \
  VALUES ('user@fakedomain.lan',password('password') \
  ,'Utente di Prova','user@fakedomain.lan/');


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 /etc/mysql/my.conf modificando la riga

skip-network

in:

bind-address = 127.0.0.1

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.

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:

hostname = localhost

con:

hostname = 127.0.0.1 

in tutti i file che seguono e che configurano l'accesso per MySql, ovvero in tutti i file mysql_*_maps.cf descritti qui di seguito. Citazione dal manuale di postfix - mysql_table(5):

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

Postfix

La configurazione di Postfix richiede la modifica del file principale di configurazione /etc/postfix/main.cf nel modo seguente:

main.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
# così da evitare di dover creare un utente reale per ogni utente virtuale
virtual_gid_maps = static:1001
virtual_uid_maps = static:1001

# questa direttiva indica dove verranno collocate le mailbox virtuali
virtual_mailbox_base = /usr/local/virtual

# indica con quale backend (mysql) e dove trovare la lista dei domini gestiti 
# dal server
virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_limit = 51200000

# indica in quale file di configurazione sono presenti i parametri per ottenere la 
# lista delle mailbox presenti nel sistema
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1001
virtual_transport = virtual

# Per la gestione delle quote delle mailbox
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
# dove trovare i limiti di dimensione della mailbox e come comportarsi
virtual_mailbox_limit_maps = mysql:/usr/local/etc/postfix/ \
  mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace \ 
  quota, please try again later.
virtual_overquota_bounce = yes

# indica i domini per cui il server deve accettare la posta in ingresso
relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf


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, perciò verrà commentato solo il primo file.

mysql_virtual_alias_maps.cf

# l'utente da usare per collegarsi a mysql
user = postfix
# la password dell'utente
password = postfix
# l'host a cui collegarsi
hosts = localhost
# il nome del database
dbname = postfix
# il nome della tabella
table = alias
# il campo da cui attingere il dato
select_field = goto
# il campo su cui viene fatta la query (in questo
# caso verrà cercato il record in cui il campo 'address'
# corrisponde all'email del destinatario. L'indirizzo a cui
# questa email dovrà essere inviato sarà indicato dal campo 'goto'
where_field = address

mysql_virtual_domains_maps.cf

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.

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
# la direttiva 'additional_conditions' permette di aggiungere delle clausole
# alla ricerca all'interno del database, nel caso seguente (che consiglio di non
# decommentare, richiede che la il dominio non sia di backup e che sia attivo.
#additional_conditions = and backupmx = '0' and active = '1'

mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'

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. 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.

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
#additional_conditions = and active = '1'

mysql_relay_domains_maps.cf

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.

user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '1'

Applicazione delle modifiche

La configurazione di Postfix per l'interazione con MySql si può ritenere conclusa. Per applicare le modifiche apportate è necessario riavviare Postfix:

# /etc/init.d/postfix restart

mail.cf

broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = 
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,  
  reject_unauth_destination,
  reject_unauth_pipelining,   
  reject_invalid_hostname,
  reject_rbl_client opm.blitzed.org,
  reject_rbl_client list.dsbl.org,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client sbl-xbl.spamhaus.org
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous

smtpd.conf

pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/var/spool/authdaemon/socket

Maildrop: filtraggio della posta

Installazione

L'installazione è molto semplice:

# apt-get install courier-maildrop

Alcuni accorgimenti sono richiesti, per la corretta gestione della posta e delle home degli utenti:

# adduser --uid 5000 vmail

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à.




Guida scritta da: MaXeR Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized