
# Ajout des comptes émail virtuels

Nous allons ajouter maintenant des utilisateurs virtuels, comptes qui ne sont pas des utilisateurs, **users** de la machine. Ces utilisateurs n'ont pas de compte Unix sur la machine, pas de shell, pas de répertoire personnel: ils n'existent que pour les composants du serveur de messagerie.

Ces comptes émail avec leurs caractéristiques peuvent être stockés de différentes manières.

Il est possible d'utiliser des fichiers **plats** ou différentes bases de données comme **mysql**, **postgresql**, **sqlite** ou plus simplement encore **dbm**. Ceci se configure dans les fichier **/etc/postfix/main.cf**.

Pour les systèmes de bases de données **sql**, il faudra fournir les données d'accès à la base de données dans des fichiers séparés.

Les adresses émail ainsi que les mots de passe seront stockés dans une base de données.

![Notre base de données avec les utilisateurs virtuels](Images/dessin8.svg)

Il est certainement possible d'ajouter la configuration des comptes mail virtuels à notre configuration actuelle. Après mûre réflexion, j'ai chois de procéder différemment: nous allons tester les différentes solutions de stockage à partir d'une installation propre de postfix/dovecot. Les solutions testées seront: *dbm*, *sqlite* et *postgresql* que nous avons déjà installée pour *gogs*. Les solutions à base de mysql sont très souvent déployées et sont donc documentées. Nous pourrons toujours rajouter cette dernière si le temps (et l'envie) le permet(tent).

### Mise à blanc de nos configurations

Nous avons mis plusieurs serviecs en route pour configurer notre serveur de mails; voici la liste des services à arrêter:

* postfix
* dovecot
* dkim
* dmarc
* spf

```shell
root@atom:/home/ericadmin# service postfix stop
root@atom:/home/ericadmin# service dovecot stop
root@atom:/home/ericadmin# service opendkim stop
root@atom:/home/ericadmin# service opendmarc stop
root@atom:/home/ericadmin# service openspf stop
Failed to stop openspf.service: Unit openspf.service not loaded.
root@atom:/home/ericadmin#
```
Vérification des ports:

```shell
root@atom:/home/ericadmin# netstat -tlpn
Connexions Internet actives (seulement serveurs)
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      388/apache2
tcp        0      0 192.168.111.160:53      0.0.0.0:*               LISTEN      460/named
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      460/named
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      523/sshd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      544/postgres
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      460/named
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      388/apache2
tcp6       0      0 :::53                   :::*                    LISTEN      460/named
tcp6       0      0 :::22                   :::*                    LISTEN      523/sshd
tcp6       0      0 :::3000                 :::*                    LISTEN      15740/gogs
tcp6       0      0 ::1:5432                :::*                    LISTEN      544/postgres
tcp6       0      0 ::1:953                 :::*                    LISTEN      460/named
root@atom:/home/ericadmin#
```

Voilà, notre serveur de messagerie est arrêté ainsi que tous les services accessoires.

### Sauvegarde de l'ancienne configuration

Nous allons maintenant sauvegarder les répertoires contenant notre configuration actuelle. Nous laisserons les répertoires *opendmarc*, *opendkim*, *openspf* tels qu'ils sont; nous configurerons notre serveur d email sans les utiliser. Il vous sera toujours possible de vous réferer à leur installation/configuration dans la partie du tutoriel correspondante.

```shell
root@atom:/home/ericadmin# cd /etc
root@atom:/etc# mv postfix postfix.user
root@atom:/etc# mv dovecot/ dovecot.user
root@atom:/etc# cd /var/lib
root@atom:/var/lib# mv dovecot dovecot.user
```

### Suppression des paquets postfix et dovecot

Nous allons maintenant procéder à la suppression des paquets dovecot et postfix:

```shell
root@atom:/etc# apt install exim4-daemon-light
etc ....

root@atom:/etc# dpkg -l | grep dovecot
ii  dovecot-core                 1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - core files
ii  dovecot-imapd                1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - IMAP daemon
ii  dovecot-sqlite               1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - SQLite support
root@atom:/etc# dpkg --purge dovecot-core dovecot-imapd dovecot-sqlite
(Lecture de la base de données... 40268 fichiers et répertoires déjà installés.)
Suppression de dovecot-imapd (1:2.2.27-3+deb9u3) ...
Suppression de dovecot-sqlite (1:2.2.27-3+deb9u3) ...
Suppression de dovecot-core (1:2.2.27-3+deb9u3) ...
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
root@atom:/etc#
```
Voilà, les paquets sont supprimés (on a aussi purgé les fichiers de configuration, ce qui permet l'installation de nouveaux fichiers; on va les réinstaller et avoir une copie propre des fichiers de configuration.

```shell
root@atom:/etc# apt install postfix postfix-pgsql postfix-sqlite

root@atom:/etc# dpkg -l | grep postfix
ii  postfix                      3.1.9-0+deb9u2                 i386         High-performance mail transport agent
ii  postfix-pgsql                3.1.9-0+deb9u2                 i386         PostgreSQL map support for Postfix
rc  postfix-policyd-spf-python   2.0.1-1                        all          Postfix policy server for SPF checking
ri  postfix-sqlite               3.1.9-0+deb9u2                 i386         SQLite map support for Postfix
root@atom:/etc#
```
Nous avons donc postfix d'installé avec les modules postgresql et sqlite.

```shell
root@atom:/etc# apt install dovecot-core dovecot-sqlite dovecot-pgsql dovecot-imapd
etc ...
Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /lib/systemd/system/dovecot.service.
Paramétrage de dovecot-pgsql (1:2.2.27-3+deb9u3) ...
Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u9) ...
Paramétrage de dovecot-imapd (1:2.2.27-3+deb9u3) ...
etc ...
Creating config file /etc/dovecot/conf.d/20-imap.conf with new version
Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
Paramétrage de dovecot-sqlite (1:2.2.27-3+deb9u3) ...
Traitement des actions différées (« triggers ») pour dovecot-core (1:2.2.27-3+deb9u3) ...

root@atom:/etc# dpkg -l | grep dovecot
ii  dovecot-core                 1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - core files
ii  dovecot-imapd                1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - IMAP daemon
ii  dovecot-pgsql                1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - PostgreSQL support
ii  dovecot-sqlite               1:2.2.27-3+deb9u3              i386         secure POP3/IMAP server - SQLite support
root@atom:/etc#
```
Voilà, dovecot est ré-installé avec le support de sqlite et postgresql.
