# Installation Serveur Mail ## Installation de Postfix ```console root@serveur:~# apt-get install postfix-mysql ``` ### Verification du contenu de master.cf ```console root@serveur:~# vim /etc/postfix/master.cf ``` Dans le fichier (master.cf) il faut verifier que la premiere ligne ne contienne que un seul "n". La ligne doit ressembler a ceci: ```console smtp inet n - - - - smtpd ``` ### Creation de la base de donnees MySQL * On cree une base de donnees **postfix**, on ajoute un utilisateur postfix en passant par les privileges. Bien noter le mot de passe generer. * On cree les trois tables avec le code suivant: ~~~~sql USE postfix; CREATE TABLE `domaines` ( `domaine` varchar(255) NOT NULL default '', `etat` tinyint(1) NOT NULL default '1', PRIMARY KEY (`domaine`) ) ENGINE=MyISAM; CREATE TABLE `comptes` ( `email` varchar(255) NOT NULL default '', `password` varchar(255) NOT NULL default '', `quota` int(10) NOT NULL default '0', `etat` tinyint(1) NOT NULL default '1', `imap` tinyint(1) NOT NULL default '1', `pop3` tinyint(1) NOT NULL default '1', PRIMARY KEY (`email`) ) ENGINE=MyISAM; CREATE TABLE `alias` ( `source` varchar(255) NOT NULL default '', `destination` text NOT NULL, `etat` tinyint(1) NOT NULL default '1', PRIMARY KEY (`source`) ) ENGINE=MyISAM; ~~~~ ### Edition des 5 fichiers de configuration suivants: * Contenu de `mysql-virtual_domaines.cf` ```text hosts = 127.0.0.1 user = postfix password = **Mot de passe Mysql Postfix** dbname = postfix select_field = 'virtual' table = domaines where_field = domaine additional_conditions = AND etat=1 ``` * Contenu de `mysql-virtual_comptes.cf` ```text hosts = 127.0.0.1 user = postfix password = **Mot de passe Mysql Postfix** dbname = postfix table = comptes select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') where_field = email additional_conditions = AND etat=1 ``` * Contenu de `mysql-virtual_aliases.cf` ```text hosts = 127.0.0.1 user = postfix password = **Mot de passe Mysql Postfix** dbname = postfix table = alias select_field = destination where_field = source additional_conditions = AND etat=1 ``` * Contenu de `mysql-virtual_aliases_comptes.cf` ```text hosts = 127.0.0.1 user = postfix password = **Mot de passe Mysql Postfix** dbname = postfix table = comptes select_field = email where_field = email additional_conditions = AND etat=1 ``` * Contenu de `mysql-virtual_quotas.cf` ```text hosts = 127.0.0.1 user = postfix password = **Mot de passe Mysql Postfix** dbname = postfix table = comptes select_field = quota where_field = email ``` ### Ajout du groupe et de l'utilisateur `vmail` ```console root@serveur:~# groupadd -g 5000 vmail root@serveur:~# useradd -g vmail -u 5000 vmail -d /var/spool/vmail -m ``` ### Configuration du `main.cf` Editer le `main.cf` ```console root@serveur:~# vim /etc/postfix/main.cf ``` ~~~~ini # Bannière afficher lorsqu'on se connecte en SMTP sur le port 25 smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) # Service qui envoie des notifications "nouveau message" biff = no # Desactive la commande SMTP VRFY. Arrête certaine technique pour avoir des adresses email disable_vrfy_command = yes # Impose au client SMTP de démarrer la session SMTP par une commande Helo (ou ehlo) smtpd_helo_required = yes # Avec le courier local ça ajoute .NDD aux adresses incomplètes (seulement le nom d'hote) append_dot_mydomain = no # Le nom de la machine du système de messagerie # Par défaut c'est host.domain.tld mais on peut mettre un reverse dns myhostname = DOMAINNAME (Not reverse DNS) # Le domaine utilisé par defaut pour poster les message local myorigin = REVERSE_DNS # Liste des domaines pour lequel le serveur doit accepter le courrier mydestination = REVERSE_DNS, localhost.localdomain, localhost # Pour effectuer des livraisons de courrier avec un relay (ici non) relayhost = # Liste des réseaux locaux autorisés mynetworks = 127.0.0.0/8, IP_PUBLIQUE_SERVEUR # Taille des boîtes au lettre (0 = illimité) mailbox_size_limit = 0 # Séparateur entre le nom d'utilisateur et les extensions d'adresses recipient_delimiter = + # Interfaces réseaux à écouter (ici toutes) inet_interfaces = all # Gestion des boites mails virtuelle # Contient les fichiers qui permettent de relier postfix mysql virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf,mysql:/etc/postfix/mysql-virtual_aliases_comptes.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domaines.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_comptes.cf # Le dossier ou seront contenu les mails (=home de l'user vmail) virtual_mailbox_base = /var/spool/vmail/ # L'id du groupe et de l'utilisateur vmail créé précédement virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 # Créer un dossier par comte email virtual_create_maildirsize = yes # A activer si vous souhaitez ajouter des quotas virtual_mailbox_extended = yes # Impose les limites au niveau des mails, dans notre cas aucune virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_quotas.cf # Ajouter une limite sur la taille des messages pour les boites virtuelles virtual_mailbox_limit_override = yes virtual_maildir_limit_message = "La boite mail de votre destinataire est pleine, merci de reessayez plus tard." virtual_overquota_bounce = yes # adresses d'expedition smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_unverified_sender # adresses de destination smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, reject_non_fqdn_recipient # client smtpd_client_restrictions = permit_mynetworks ~~~~ ### Modification des droits sur les fichiers de configuration ```console root@serveur:~# chmod 640 /etx/postfix/mysql-virtual_*.cf root@serveur:~# chgrp postfix /etx/postfix/mysql-virtual_*.cf ```