DBMail : serveur de courrier IMAP et POP
DBMail permet de stocker les courriels dans une base de données au lieu du disque, et d'y accéder en IMAP ou POP.
Il travaille en conjonction avec Postfix, l'agent de transfert de courriel (MTA) par défaut d'Ubuntu.
Pré-requis
- Disposer des droits d'administration.
- Disposer d'une connexion à Internet configurée et activée.
Installation
Il suffit d'installer les paquets postfix-mysql et dbmail-mysql.
Configuration
dbmail
la base de données
Création du schema dbmail
mysql -uroot -p mysql> CREATE schema dbmail; mysql>ALTER DATABASE `dbmail` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Récupération et décompression du modèle de table :
cp /usr/share/doc/dbmail-mysql/examples/create_tables.mysql.gz ~/ gzip --decompress ~/create_tables.mysql.gz
Création des tables
mysql -uroot -p dbmail < ~/create_tables.mysql
Création d'un utilisateur dbmail
mysql -uroot -p GRANT ALL ON dbmail.* to dbmail@localhost identified by 'password';
dbmail
Modification des lignes suivantes dans /etc/dbmail/dbmail.conf
sudo vim /etc/dbmail/dbmail.conf driver = mysql authdriver = sql host = localhost sqlsocket = /var/run/mysqld/mysqld.sock user = dbmail pass = password db = dbmail SIEVE_NOTIFY = no
Modification de /etc/default/dbmail pour le démarrage de l'imap et lmtp
sudo vim /etc/default/dbmail START_IMAPD=1 START_LMTPD=1 START_SIEVE=1
Redémarrage de dbmail
sudo /etc/init.d/dbmail restart
PostFix
Ajout à la fin de /etc/postfix/master.cf
sudo vim /etc/postfix/master.cf dbmail-lmtp unix - - n - - lmtp
Configuration de postfix
sudo dpkg-reconfigure postfix
Modification de /etc/postfix/main.cf
sudo vim /etc/postfix/main.cf smtpd_banner = $myhostname ESMTP $mail_name biff = no append_dot_mydomain = no readme_directory = no myhostname = smtp.domain.com mydestination = smtp.domain.com, localhost.domain.com, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 51200000 recipient_delimiter = + inet_interfaces = all inet_protocols = all smtpd_recipient_restrictions = permit_auth_destination, 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 reject virtual_transport = dbmail-lmtp:localhost:24 virtual_mailbox_domains = mysql:/etc/postfix/sql-virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/sql-virtual_mailbox_maps.cf
Création de /etc/postfix/sql-virtual_mailbox_domains.cf
sudo vim /etc/postfix/sql-virtual_mailbox_domains.cf user = dbmail password = password hosts = 127.0.0.1 dbname = dbmail query = SELECT DISTINCT 1 FROM dbmail_aliases WHERE SUBSTRING_INDEX(alias, '@', -1) = '%s';
Création de /etc/postfix/sql-virtual_mailbox_maps.cf
sudo vim /etc/postfix/sql-virtual_mailbox_maps.cf user = dbmail password = password hosts = 127.0.0.1 dbname = dbmail query = SELECT 1 FROM dbmail_aliases WHERE alias='%s';
Redémarrage postfix
sudo /etc/init.d/postfix restart
Pare-feu
Ne pas oublier d'ouvrir les ports du pare-feu
Exemple avec shorewall :
sudo vim /etc/shorewall/rules IMAP/ACCEPT net $FW SMTP/ACCEPT net $FW
redémarrage du pare-feu
sudo /etc/init.d/shorewall restart
Création utilisateur
Voir aussi
Le contenu de ce wiki est sous licence : CC BY-SA v3.0