Skip to content

Documentation du service mail

Lopidurs edited this page May 10, 2022 · 9 revisions

Arborescence des différents services

Postfix

est responsable de l'envoies des mails grâce à SMTP.

|-- dynamicmaps.cf
|-- dynamicmaps.cf.d
|-- main.cf
|-- main.cf.orig
|-- main.cf.proto
|-- makedefs.out -> /usr/share/postfix/makedefs.out
|-- master.cf
|-- master.cf.proto
|-- mysql-virtual-alias-maps.cf
|-- mysql-virtual-email2email.cf
|-- mysql-virtual-mailbox-domains.cf
|-- mysql-virtual-mailbox-maps.cf
|-- post-install
|-- postfix-files
|-- postfix-files.d
|   `-- mysql.files
|-- postfix-script
`-- sasl

Dovecot

est responsable de la réception des mails grâce à Imap et Pop3.

|-- conf.d
|   |-- 10-auth.conf
|   |-- 10-director.conf
|   |-- 10-logging.conf
|   |-- 10-mail.conf
|   |-- 10-master.conf
|   |-- 10-ssl.conf
|   |-- 10-tcpwrapper.conf
|   |-- 15-lda.conf
|   |-- 15-mailboxes.conf
|   |-- 20-imap.conf
|   |-- 20-lmtp.conf
|   |-- 20-pop3.conf
|   |-- 90-acl.conf
|   |-- 90-plugin.conf
|   |-- 90-quota.conf
|   |-- auth-checkpassword.conf.ext
|   |-- auth-deny.conf.ext
|   |-- auth-dict.conf.ext
|   |-- auth-master.conf.ext
|   |-- auth-passwdfile.conf.ext
|   |-- auth-sql.conf.ext
|   |-- auth-static.conf.ext
|   `-- auth-system.conf.ext
|-- dovecot-dict-auth.conf.ext
|-- dovecot-dict-sql.conf.ext
|-- dovecot-sql.conf.ext
|-- dovecot.conf
`-- private
    |-- dovecot.key -> /etc/ssl/private/ssl-cert-snakeoil.key
    `-- dovecot.pem -> /etc/ssl/certs/ssl-cert-snakeoil.pem

MariaDB

Les tables utilisé par les services mail se trouve dans la DB nommé woodyToys et sont:

  • "domains"
  • "users"
  • "aliases"

Ajout de données dans la base de données

Tout d'abord entrer docker exec -it dbWoodyToys mysql -u root -p
Ensuite entrer le mdp: woody
Enfin entrer la commande USE woodyToys; pour accéder à la DB woodyToys.
La suite dépend de se que vous voulez faire.

Ajout d'un utilisateur

INSERT INTO users (domain_id, password , email) 
VALUES ('ID_DU_DOMAINE', 'MOT_DE_PASS', "NOM_DE_L'UTILISATEUR@NOM_DU_DOMAIN");

Suppression d'un utilisateur

DELETE FROM 'users'
WHERE email=NOM_DE_L'UTILISATEUR@NOM_DU_DOMAIN

Ajout d'un domaine

INSERT INTO domains (domain_name) 
VALUES ("NOM_DU_DOMAIN");

Suppression d'un domaine

DELETE FROM 'domains'
WHERE domain_name=NOM_DU_DOMAIN

Ajout d'un forwarding(?)

INSERT INTO aliases (domain_id, source, destination) 
VALUES ("ID_DU_DOMAINE","ADRESSE_DEVANT_ETRE_REDIRIGIE","ADRESSE_DE_DESTINATION");

Suppression d'un forwarding(?)

DELETE FROM aliases 
WHERE source=ADRESSE_DEVANT_ETRE_REDIRIGIE AND destination=ADRESSE_DE_DESTINATION

Mise à jour des services

1. Mise à jour postfix et dovecot

Accéder au docker grâce à:
docker exec -it mail bash
Mettez à jour le container avec:
apt update
Mettez à jour Postfix avec:
apt update postfix postfix-mysql
Mettez à jour Dovecot avec:
apt update dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql
Sortez du container avec:
exit
Enfin relancer le container:
docker restart mail

2. Mise à jour de mariaDB

Accéder au docker grâce à:
docker exec -it dbWoodyToys bash
Mettez à jour le container avec:
apt update
Mettez à jour mariaDB avec:
apt update mariadb-server
Sortez du container avec:
exit
Enfin relancer le container:
docker restart dbWoodyToys

Troubleshooting (bonne chance)

Voici quelques actions possible pour vous aider dans votre troubleshooting

Vérifier que le container tourne bien

Accéder au serveur et entrer la commande:
docker ps

Vérifier que vos service tourne bien

Entrer dans le container contenant le service avec:
docker exec -it NOM_DU_CONTAINER bash
Et vérifier le statut du service avec:
service NOM_DU_SERVICE status

Vérifier les logs

Entrer dans le container contenant le service avec:
docker exec -it NOM_DU_CONTAINER bash
Aller ensuite dans le dossier /var/log pour consulter les logs.

Vérifier que les ports soit bien ouverts

Entrer dans le container contenant le service avec:
docker exec -it NOM_DU_CONTAINER bash
Et vérifier que le port utilisé soit bien ouvert (25 pour les mails et 3306 pour la db) avec:
netstat -ant | grep NUM_DE_PORT

Vérifier que postfix puisse récupérer les données dans la db

Entrer dans le container contenant le service avec:
docker exec -it NOM_DU_CONTAINER bash
Exécuter les commandes suivantes et vérifier que la réponse soit bien 1:

postmap -q DOMAINE_A_VERIFIER mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
postmap -q EMAIL_A_VERIFER mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
postmap -q ALIAS_A_VERIFIER mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Vérifier l'envoie et la réception de mail sur le serveur

Entrer dans le container contenant le service avec:
docker exec -it NOM_DU_CONTAINER bash Installer mailutils avec:
apt-get install mailutils
Essayez d'envoyer un mail grâce à la commande:
echo "VOTRE_EMAIL" | sudo mail -s "SUJET_DU_MAIL" ADRESSE_MAIL_EXTERNE -aFrom:ADRESSE_MAIL_INTERNE
Vérifier sur l'adresse mail externe que vous avez bien reçu le mail et envoyer en un mail sur un email interne.
Enfin vérifier que vous avez bien reçu le mail grâce à:
mail -f /var/mail/vhosts/m1-2.ephec-ti.be/USER

Erreurs fréquentes

Un utilisateur n'a pas ou mal été rentrer dans la DB

Entrer dans le docker de mariaDB avec:
docker exec -it dbWoodyToys mysql -u root -p
Accéder ensuite à la db woodyToys:
USE woodytoys;
Puis vérifier que l'utilisateur se trouve bien dans la db grâce à:

SELECT * FROM users WHERE email=EMAIL_A_RECHERCHER

Un fichier de configuration à été mal copier/remplacer

Il est possible de rapidement comparer deux fichiers grâce à la commande:
diff FICHIER1 FICHIER

Clone this wiki locally