|
|
Riga 1: |
Riga 1: |
| =Introduzione=
| | Benvenuto su [http://guide.debianizzati.org Guide@Debianizzati.Org] ! |
| 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]. | |
|
| |
|
| Questo permetter� di avere un controllo dinamico e flessibile sui domini e mailbox, astraendo il tutto dagli utenti di sistema.
| | Il sito � ancora in costruzione, pertanto ti invitiamo a visitare il sito principale: |
| | [http://www.debianizzati.org Debianizzati.Org] |
|
| |
|
| =Installazione=
| | '''Guide@Debianizzati.Org''' � un progetto volto a fornire una vasta raccolta di documentazione relativa a Debian GNU/Linux, facilmente modificabile e ampliabile. |
| 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:
| | Il progetto nasce in seno alla Comunit� di Utenti Debian [http://www.debianizzati.org Debianizzati.Org ] che fa della diffusione di Debian e dello spirito FreeSoftware uno dei suoi capisaldi. |
| <pre>
| |
| # apt-get install postfix-mysql courier-authmysql courier-imap mysql-server maildrop mailfilter
| |
| </pre>
| |
|
| |
|
| =Configurazione=
| | � possibile accedere all cuore del wiki tramite il link [[Indice Guide| "Documenti"]] nel box a Sinistra. |
| 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==
| | Se invece vuoi saperne di pi� su questa comunit� ed il suo staff, ti consigliamo il link [[Guide_@_Debianizzati.Org:About | "A Proposito di Guide@Debianizzati"]] nello stesso box. |
| 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===
| | Happy Debian! |
| L'installazione di MySql � semplice ed immediata:
| |
| <pre>
| |
| # apt-get install mysql-server mysql-client
| |
| </pre>
| |
| Il primo pacchetto � il server, mentre il secondo � il client, che verr� usato in seguito per interagire col server.
| |
|
| |
|
| ===Configurazione===
| | Lo Staff di [http://www.debianizzati.org Debianizzati.Org ] |
| 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, � 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
| |
| <pre>
| |
| $ mysql -u root
| |
| </pre>
| |
| per accedere come utente root; una volta specificata la password, inoltre, sar� necessario usare il comando
| |
| <pre>
| |
| $ mysql -u root -p
| |
| </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>
| |
| USE mysql;
| |
| UPDATE user SET Password = password('nuova_password') WHERE User = 'root');
| |
| </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 creer� l'utente e dar� ad esso i permessi necessari.
| |
| | |
| <pre>
| |
| 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;
| |
| </pre>
| |
| | |
| ==Creazione delle Tabelle==
| |
| | |
| La creazione delle tabelle richiede l'esecuzione delle seguenti query:
| |
| | |
| <pre>
| |
| #
| |
| # 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';
| |
| </pre>
| |
| | |
| Inserimento dei primi dati
| |
| | |
| Con la seguente query verr� inserito un primo utente ed un dominio (ovviamente fittizzi).
| |
| | |
| <pre>
| |
| 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/');
| |
| </pre>
| |
| | |
| | |
| ===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
| |
| <pre>
| |
| skip-network
| |
| </pre>
| |
| in
| |
| <pre>
| |
| bind-address = 127.0.0.1
| |
| </pre>
| |
| 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.
| |
| | |
| | |
| ==Postfix==
| |
| La configurazione di Postfix richiede la modifica del file principare di configurazione '''/etc/postfix/main.cf''' nel modo seguente:
| |
| | |
| ===main.cf===
| |
| <pre>
| |
| 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 virutale
| |
| 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
| |
| </pre>
| |
| | |
| | |
| 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===
| |
| <pre>
| |
| # 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
| |
| </pre>
| |
| | |
| ===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.
| |
| | |
| <pre>
| |
| 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'
| |
| </pre>
| |
| | |
| ===mysql_virtual_mailbox_maps.cf===
| |
| <pre>
| |
| user = postfix
| |
| password = postfix
| |
| hosts = localhost
| |
| dbname = postfix
| |
| table = mailbox
| |
| select_field = maildir
| |
| where_field = username
| |
| #additional_conditions = and active = '1'
| |
| </pre>
| |
| | |
| ===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.
| |
| | |
| <pre>
| |
| user = postfix
| |
| password = postfix
| |
| hosts = localhost
| |
| dbname = postfix
| |
| table = mailbox
| |
| select_field = quota
| |
| where_field = username
| |
| #additional_conditions = and active = '1'
| |
| </pre>
| |
| | |
| ===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>
| |
| user = postfix
| |
| password = postfix
| |
| hosts = localhost
| |
| dbname = postfix
| |
| table = domain
| |
| select_field = domain
| |
| where_field = domain
| |
| additional_conditions = and backupmx = '1'
| |
| </pre>
| |
| | |
| ===Applicazione delle modifiche===
| |
| La configurazione di Postfix per l'interazione con MySql si pu� ritenere conclusa.
| |
| Per applicare le modifiche apportate � necessario riavviare Postfix:
| |
| <pre>
| |
| # /etc/init.d/postfix restart
| |
| </pre>
| |
| | |
| ===mail.cf===
| |
| <pre>
| |
| 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
| |
| </pre>
| |
| | |
| ===snmtp.conf===
| |
| <pre>
| |
| pwcheck_method: authdaemond
| |
| log_level: 3
| |
| mech_list: PLAIN LOGIN
| |
| authdaemond_path:/usr/local/var/spool/authdaemon/socket
| |
| </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�.
| |
| | |
| [[Categoria:Server]][[Categoria:Networking]]
| |