Installer un serveur Mail (Postfix)
1 - Délégation DNS (OVH) :
Je vais créer un sous domaine "mymail.nehemiebarkia.fr" et pointer un MX dessus :
2 - Mettre à jour le système :
apt-get update ; apt-get upgrade -y
3 - Installation de LAMP :
wget https://scripts.nehemiebarkia.fr/BASH/Installations/LAMP.sh
bash LAMP.sh
4 - Installation de Mailutils & Tree :
apt-get install tree mailutils -y
5 - Installation de Postfix :
apt-get install postfix postfix-mysql -y
--> Lors de l'installation, vous choisirez "Site internet".
--> Puis nous précisons le nom de domaine du mail :
N'oubliez pas le "." à la fin de votre nom de domaine !
6 - Installation de Dovecot :
apt-get install dovecot-mysql dovecot-pop3d dovecot-imapd dovecot-managesieved -y
7 - Groupe d'utilisateurs Linux :
Nous allons créer le groupe vmail qui accueillera les mails. Nous allons également créer l'utilisateur vmail.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /var/vmail -m
Si vous utilisez une machine virtuelle chez Google, commencer les deux commandes avec "/usr/sbin/".
8 - Installation de Postfixadmin :
Avant d'installer Postfixadmin, nous allons préparer mariadb :
mysql_secure_installation
--> Vous allez définir un nouveau mot de passe pour le compte root puis procéder aux options par défaut.
a) Base de données :
Nous entrons dans la console mariadb.
mariadb -u root -p
Le mot de passe demandé est celui que vous avez précédemment changé et non le mot de passe root de l'utilisateur sur le serveur linux.
Création de l'utilisateur SQL.
CREATE DATABASE postfix;
CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'MYPASSWORD';
GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
Par mesure de sécurité nous créons un second utilisateur qui n'aura uniquement que des droits de lecture sur la base de données :
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'MYPASSWORD';
GRANT SELECT ON `postfix`.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;
QUIT ;
b) Postfixadmin :
Maintenant que tout ça est fait, nous pouvons installer Postfixadmin :
cd /srv/
wget -O postfixadmin.tgz https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
tar -zxvf postfixadmin.tgz
mv postfixadmin-postfixadmin-3.2 postfixadmin
ln -s /srv/postfixadmin/public /var/www/html/postfixadmin
Configuration :
nano /srv/postfixadmin/config.local.php
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'localhost';
$CONF['database_name'] = 'postfix';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'MYPASSWORD';
$CONF['configured'] = true;
?>
Ce fichier n'existait pas, pas de panique si, quand vous l'ouvrez, il est vide !
mkdir -p /srv/postfixadmin/templates_c
chown -R www-data /srv/postfixadmin/templates_c
nano /srv/postfixadmin/config.local.php
// Ajouter la ligne suivante :
$CONF['setup_password'] = 'c4db13bd0d48dc5d4486bddbf5e35fd2:96107d8f161b0d0f96b94cbba463426708e83e1a';
Ne copiez-collez pas ! Faites selon le texte qui apparait sur vos machines !
9 - Configuration de Postfix :
nano /etc/postfix/mysql-virtual-mailbox-domains.cf
user = mailuser
password = MYPASSWORD
hosts = 127.0.0.1
dbname = postfix
query = SELECT 1 FROM domain where domain='%s'
postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Si vous utilisez une machine virtuelle chez Google, commencer la commandes avec "/usr/sbin/".
Réalisation d'un test :
postmap -q mymail.nehemiebarkia.fr mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Si la réponse est 1 alors postfix trouve correctement le nom de domaine.
Si vous utilisez une machine virtuelle chez Google, commencer la commandes avec "/usr/sbin/".
10 - Configuration de Dovecot :
nano /etc/dovecot/conf.d/10-auth.conf
Dans ce fichier nous allons chercher la ligne "auth_mechanisms" :
Nous allons ajouter à la fin de la ligne "login" :
Puis à la fin de ce fichier, nous allons chercher les lignes suivantes :
Nous allons commenter "!include auth-system.conf.ext" et décommenter "#!include auth-sql.conf.ext" comme ceci :
Puis modifions le fichier "auth-sql.conf.ext" :
nano /etc/dovecot/conf.d/auth-sql.conf.ext
Nous allons chercher le bloc "userdb" et remplacer le tout par les lignes suivantes :
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/vmail/%d/%n
}
Puis nous allons changer l'emplacement des mail :
nano /etc/dovecot/conf.d/10-mail.conf
Et nous allons remplacer le "mail_location" :
mail_location = maildir:/var/vmail/%d/%n/Maildir
En suite, nous allons modifier le fichier suivant :
nano /etc/dovecot/conf.d/10-master.conf
Et dans le bloc "service auth" nous allons ajouter le texte suivant :
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
Comme ceci :
On indique maintenant à Dovecot comment se connecter à la base de données :
nano /etc/dovecot/dovecot-sql.conf.ext
Ajouter à la toute fin du fichier ces trois lignes :
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=mailuser password=MYPASSWORD
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
Puis nous modifions les droits d'accès du fichier dovecot.conf :
chgrp vmail /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf
Et enfin, nous pouvons redémarrer dovecot :
service dovecot restart
10 - Liaison entre Postfix et Dovecot :
nano /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
Puis, nous redémarrons Postfix :
service postfix restart
Si vous utilisez une machine virtuelle chez Google, commencer la commandes avec "/usr/sbin/".
Maintenant on applique les modifications :
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
On va pouvoir maintenant, tester la configuration :
tree /var/vmail
On constate qu'il n'y a aucun mail présent.
Maintenant, tentons d'envoyer un mail à alice par exemple :
echo test | mail alice@mymail.nehemiebarkia.fr
On peut vérifier les logs :
tail -f /var/log/mail.log
Maintenant, affichons une nouvelle fois les mails présents sur le serveur :
tree /var/vmail
Postfix transmet donc bien a Dovecot les mails.
11 - Installation de Rainloop :
Installation et droits de Rainloop :
mkdir /var/www/html/rainloop
cd /var/www/html/rainloop
wget -qO- https://repository.rainloop.net/installer.php | php
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chown -R www-data:www-data .
Maintenant nous accédons au lien suivant : http://IP-DU-SRV/rainloop/?admin ; Nous utiliserons le compte admin et le mot de passe 12345.
Nous allons aller dans "domaines" et faire "add domaine" :
Maintenant, nous nous rendons à l'adresse suivante : http://IP-DU-SRV/rainloop et nous nous connectons en tant qu'alice :





















