Skip to main content

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 : 

mymail IN A 35.241.173.178
mymail IN MX 1 mymail
 
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 : 

image-1616447828058.png

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 ! 

 

Création d'un fichier nécessaire au bon fonctionnement de Postfixadmin et attributions des droits : 
mkdir -p /srv/postfixadmin/templates_c
chown -R www-data /srv/postfixadmin/templates_c
Maintenant, nous pouvons accéder au setup grâce au site web : http://IP-DU-SRV/postfixadmin/setup.php et nous aurons un mot de passe à créer (pour des raisons de sécurité, choisissez un mot de passe fort) :

image-1616449164509.png

Je vais par exemple choisir le mot de passe : "P@ssw0rd123", puis cliquer sur "Generate password hash".
Le message suivant apparait : 

image-1616449403337.png

Nous allons donc procéder à la modification du fichier config : 
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 !

Puis nous complétons le formulaire suivant : 

image-1616449754056.png

Setup password : P@ssw0rd123
Mot de passe : H5jZx87jK
Après avoir cliqué sur "Ajouter un administrateur" vous aurez le message suivant qui va s'afficher  :

image-1616449903840.png

Nous cliquons sur le lien "login to PostfixAdmin" et entrons notre identifiant et notre mot de passe : 

image-1616449968640.png

 

Visuel de Postfixadmin : 

image-1616450050334.png

Nous allons cliquer sur "Liste des domaines" puis "Nouveau domaine" : 

image-1616450111507.png

Nous rentrons les informations de notre nom de domaine et précisons 0 pour la limite d'utilisateurs et d'alliasses : 

image-1616450258600.png

Puis nous cliquons sur "Ajouter un domaine", le message suivant s'affiche :

image-1616450300052.png

Maintenant nous allons pouvoir ajouter un compte de courriel : 

image-1616450366561.png

Nous allons créer deux comptes : 

image-1616450449212.png

Mot de passe : 2bmQ2wBU4
Et :

image-1616450541520.png

Mot de passe : 2bmQ2wBU4
9 - Configuration de Postfix : 
On donne accès au domaine à postfix en créant le fichier mysql-virtual-mailbox-domains.cf :
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'
Activation de la configuration : 
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" : 

image-1616451365283.png

Nous allons ajouter à la fin de la ligne "login" : 

image-1616451433035.png

Puis à la fin de ce fichier, nous allons chercher les lignes suivantes :

image-1616451572862.png

Nous allons commenter "!include auth-system.conf.ext" et décommenter "#!include auth-sql.conf.ext" comme ceci :

image-1616451663298.png

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 : 

image-1616452318825.png

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 : 
Nous allons ajouter ces lignes à la toute fin de master.cf
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

image-1616453782072.png

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

image-1616454055350.png

 

Maintenant, affichons une nouvelle fois les mails présents sur le serveur : 

tree /var/vmail

image-1616454169529.png

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 .

Configuration du site virtuel apache :

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/rainloop.conf

Et dans rainloop.conf, nous changeons le DocumentRoot : "/var/www/html/rainloop".