Aller au contenu

9. Configuration de la messagerie

9.1. Introduction à la configuration de la messagerie serveur

Section intitulée « 9.1. Introduction à la configuration de la messagerie serveur »

La plupart des applications web, y compris WordPress, ont besoin d’envoyer des e-mails pour diverses raisons telles que les réinitialisations de mot de passe, les notifications et les soumissions de formulaires de contact. Dans cette section, nous allons configurer MSMTP, un client SMTP léger qui permet à votre serveur d’envoyer des e-mails via un serveur SMTP externe.

Commençons par installer les paquets nécessaires :

# Mettre à jour les listes de paquets
sudo apt update
# Installer MSMTP et le wrapper MTA (Mail Transfer Agent)
sudo apt install msmtp msmtp-mta

Le paquet msmtp-mta permet aux programmes système d’utiliser MSMTP comme expéditeur de courrier par défaut.

9.3. Configuration de MSMTP pour votre utilisateur

Section intitulée « 9.3. Configuration de MSMTP pour votre utilisateur »

Créez un fichier de configuration dans votre répertoire personnel :

# Naviguer vers votre répertoire personnel
cd
# Créer et modifier le fichier de configuration
nano .msmtprc

Ajoutez la configuration suivante à votre fichier .msmtprc, en remplaçant les valeurs de substitution par les détails réels de votre service de messagerie :

# Paramètres globaux par défaut
defaults
# Paramètres TLS
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# Journalisation
logfile ~/.msmtp.log
# Configuration du compte
account mymail
# Paramètres du serveur SMTP
host smtp.example.com
port 587
auth on
user your_email@example.com
password your_app_password
from your_email@example.com
# Définir le compte par défaut
account default : mymail

Comme le fichier de configuration contient votre mot de passe de messagerie, il est crucial de définir les permissions appropriées :

# Définir des permissions restrictives sur le fichier de configuration
sudo chmod 600 ~/.msmtprc

Créez un fichier journal pour suivre l’activité d’envoi d’e-mails :

# Créer le fichier journal
touch ~/.msmtp.log
# Définir la propriété et les permissions appropriées
sudo chown $USER:$USER ~/.msmtp.log
sudo chmod 660 ~/.msmtp.log

9.4. Test d’envoi d’e-mail en ligne de commande

Section intitulée « 9.4. Test d’envoi d’e-mail en ligne de commande »

Vérifions que MSMTP fonctionne correctement en envoyant un e-mail de test :

# Envoyer un e-mail de test (remplacez par l'adresse e-mail du destinataire)
msmtp recipient@example.com

Après avoir exécuté cette commande :

  1. Tapez une ligne d’objet et appuyez sur Entrée
  2. Tapez le corps de votre message
  3. Appuyez sur Ctrl+D pour envoyer l’e-mail

Si tout est correctement configuré, l’e-mail devrait être envoyé sans message d’erreur.

Pour permettre aux applications PHP (comme WordPress) d’envoyer des e-mails, nous devons configurer MSMTP à l’échelle du système.

9.5.1. Création d’une configuration à l’échelle du système

Section intitulée « 9.5.1. Création d’une configuration à l’échelle du système »
# Copier votre configuration utilisateur vers l'emplacement système
sudo cp ~/.msmtprc /etc/msmtprc
# Définir la propriété et les permissions appropriées
sudo chown www-data:www-data /etc/msmtprc
sudo chmod 660 /etc/msmtprc

Modifiez le fichier de configuration à l’échelle du système pour utiliser un emplacement de journal différent :

# Modifier la configuration système
sudo nano /etc/msmtprc

Changez le chemin du fichier journal par :

logfile /var/log/msmtp.log
# Naviguer vers le répertoire des journaux
cd /var/log/
# Créer le fichier journal
sudo touch msmtp.log
# Définir la propriété et les permissions appropriées
sudo chown www-data:adm msmtp.log
sudo chmod 640 msmtp.log

Créez un script PHP pour tester l’envoi d’e-mails :

# Naviguer vers votre répertoire personnel
cd
# Créer un fichier PHP de test
nano php_mail_test.php

Ajoutez le contenu suivant au fichier, en remplaçant les adresses e-mail par vos adresses réelles :

<?php
// Activer le rapport d'erreurs pour le débogage
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Détails de l'e-mail
$from = "your_email@example.com"; // Doit correspondre au 'from' dans la configuration msmtp
$to = "recipient@example.com";
$subject = "PHP Mail Test";
$message = "This is a test email sent from PHP using MSMTP.";
$headers = "From: " . $from;
// Envoyer l'e-mail
if(mail($to, $subject, $message, $headers)) {
echo "Test email sent successfully!";
} else {
echo "Email sending failed.";
}
?>

9.6.1. Exécution du test en tant qu’utilisateur du serveur web

Section intitulée « 9.6.1. Exécution du test en tant qu’utilisateur du serveur web »

Pour tester correctement la fonctionnalité e-mail telle qu’elle serait utilisée par vos applications web :

# Exécuter le script PHP en tant qu'utilisateur www-data
sudo -u www-data php php_mail_test.php

En cas de succès, vous devriez voir “Test email sent successfully!” et l’e-mail devrait arriver dans la boîte de réception du destinataire.

Si vous rencontrez des problèmes avec l’envoi d’e-mails :

  1. Vérifier les fichiers journaux :

    cat ~/.msmtp.log # Pour les problèmes au niveau utilisateur
    sudo cat /var/log/msmtp.log # Pour les problèmes système/PHP
  2. Vérifier les paramètres SMTP :

    • Confirmez l’adresse du serveur SMTP, le port et les identifiants
    • Pour Gmail, assurez-vous d’utiliser un mot de passe d’application si la 2FA est activée
  3. Tester la connectivité :

    telnet smtp.example.com 587

    Si vous pouvez vous connecter, vous devriez voir une réponse du serveur

  4. Vérifier la configuration mail de PHP :

    php -i | grep mail

    Assurez-vous que PHP est configuré pour utiliser le sendmail du système (qui est maintenant MSMTP)

  • N’utilisez jamais votre mot de passe de messagerie principal ; utilisez des mots de passe spécifiques aux applications lorsque c’est possible
  • Faites une rotation régulière de vos identifiants de messagerie
  • Envisagez d’utiliser des variables d’environnement ou un coffre-fort sécurisé pour stocker les identifiants en environnement de production
  • Supprimez ou sécurisez les fichiers de test après avoir confirmé le fonctionnement :
    rm ~/php_mail_test.php

Avec MSMTP correctement configuré, votre serveur peut maintenant envoyer des e-mails via votre fournisseur SMTP spécifié, activant les fonctionnalités essentielles pour WordPress et d’autres applications.