Postfix per ISP: differenze tra le versioni
Riga 75: | Riga 75: | ||
==Popolamento di Mysql== | ==Popolamento di Mysql== | ||
Creiamo e popoliamo in mysql le tre tabelle di cui sopra. | |||
<pre> | <pre> | ||
# mysql -p mailserver | # mysql -p mailserver | ||
mysql> INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com'); | mysql> INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com'); | ||
mysql> INSERT INTO virtual_users (id, domain_id, email, password) | |||
mysql> | |||
INSERT INTO virtual_users (id, domain_id, email, password) | |||
VALUES (1, 1, 'john@example.com', MD5('summersun')); | VALUES (1, 1, 'john@example.com', MD5('summersun')); | ||
mysql> INSERT INTO virtual_aliases (id, domain_id, source, destination) | |||
mysql> | |||
INSERT INTO virtual_aliases (id, domain_id, source, destination) | |||
VALUES (1, 1, 'john@example.com', 'john@example.com'), | VALUES (1, 1, 'john@example.com', 'john@example.com'), | ||
(2, 1, 'devnull@example.com', 'john@workaround.org'); | (2, 1, 'devnull@example.com', 'john@workaround.org'); | ||
</pre> | </pre> |
Versione delle 17:39, 6 apr 2014
|
Introduzione
In questo caso abbiamo deciso di configurare Postfix:
- con un backend Mysql per la gestione dei domini, alias e account email
- dovecot per lo smistamento delle email
Domini locali e virtuali
Normalmente Postfix lavora con i cosiddetti Domini Locali, configurati nella direttiva mydestination
del suo file di configurazione, e con gli utenti di sistema, elencati nel file /etc/passwd
.
Questo comporta che ogni utente possa ricevere la posta di tutti i domini. Supponiamo di avere la direttiva:
mydestination = example1.com, example2.com, example3.com
Questo semplice setup fa sì che l'utente di sistema johndoe
riceva le email indirizzate a:
johndoe@example1.com johndoe@example2.com johndoe@example3.com
Non è possibile impedire la ricezione della posta indirizzata a un singolo dominio e questo, unitamente al fatto che gestire molti utenti in questa maniera è inefficiente, rende il sistema poco pratico.
Questi problemi possono essere evitati facendo uso dei cosiddetti Domini Virtuali, che a loro volta gestiranno utenti virtuali e alias virtuali di posta. Nel corso della guida vedremo come questa tecnica sarà implementata attraverso alcune direttive Postfix e con il supporto di un database MySQL.
Preparazione del sistema
Controlliamo che il nostro /etc/hosts
sia impostato correttamente:
- Sbagliato:
20.30.40.50 mailserver42 mailserver42.example.com
- Corretto:
20.30.40.50 mailserver42.example.com mailserver42
Prerequisiti
Per procedere è necessario avere installato mysql e apache.
Installazione
Incominciamo con l'installare il server Postfix con la sua estensione per il supporto a MySQL:
# aptitude install postfix postfix-mysql
Configurazione Mysql
L'obiettivo è avere in mysql la gestione di:
- virtual_domains
- virtual_users
- virtual_alias
Pertanto creeremo tali tre tabelle in modo tale da avere in un sistema in funzione le seguenti tabelle e contenuti:
----------------- virtual_domains ----------------- id | name 1 | example.com 2 | foobar.org --------------------------------- virtual_users --------------------------------- id | domain_id | email | password 1 | 1 | john@example.com | 14cbfb845af1f030e372b1cb9275e6dd 2 | 1 | steve@example.com | a57d8c77e922bf756ed80141fc77a658 3 | 2 | kerstin@foobar.org | 5d6423c4ccddcbbdf0fcfaf9234a72d0 ----------------------------------- virtual_aliases ----------------------------------- id | domain_id | source | destination 1 | 1 | steve@example.com | devnull@workaround.org 2 | 2 | kerstin@foobar.org | kerstin42@yahoo.com 3 | 2 | kerstin@foobar.org | kerstin@mycompany.com
Popolamento di Mysql
Creiamo e popoliamo in mysql le tre tabelle di cui sopra.
# mysql -p mailserver mysql> INSERT INTO virtual_domains (id, name) VALUES (1, 'example.com'); mysql> INSERT INTO virtual_users (id, domain_id, email, password) VALUES (1, 1, 'john@example.com', MD5('summersun')); mysql> INSERT INTO virtual_aliases (id, domain_id, source, destination) VALUES (1, 1, 'john@example.com', 'john@example.com'), (2, 1, 'devnull@example.com', 'john@workaround.org');