Pour vous contextualiser : Mon client possède un serveur VPS hébergé chez OVH sur lequel sont installés WHM et cPanel. Ce serveur exécute des scripts PHP via des tâches cron, réalisant plusieurs actions, dont l’envoi d’e-mails. Début octobre, le service anti-hack d’OVH s’est déclenché. Après quelques recherches, nous avons conclu qu’il s’agissait d’une fausse alerte. Depuis, OVH a ajusté les seuils de l’anti-DDoS et m’a conseillé d’activer et de paramétrer le pare-feu réseau.
Depuis l’activation de ce pare-feu, les e-mails envoyés via les scripts PHP, et plus précisément via la fonction mail(), ne fonctionnent plus. Les ports suivants ont pourtant été ouverts :
Priorité Mode Protocole Adresse IP source Port de destination Statut
6 Autoriser TCP tous 25 Actif
7 Autoriser TCP tous 465 Actif
8 Autoriser TCP tous 143 Actif
9 Autoriser TCP tous 993 Actif
10 Autoriser TCP tous 110 Actif
11 Autoriser TCP tous 995 Actif
15 Autoriser TCP tous 587 Actif
J’ai également tenté d’envoyer les mails via PHPMailer, en utilisant le relais SMTP OVH, mais cela ne fonctionne pas non plus :
.....
// Paramètres SMTP
$mail->isSMTP();
$mail->Host = [NOM_VPS];
$mail->SMTPAuth = true;
$mail->Username = [EMAIL_O2SWITCH]; // Je n'ai pas d'adresse mail OVH.
$mail->Password = [MDP_EMAIL_O2SWITCH];
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
// Options SSL pour vérifier le certificat
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true,
],
];
// Destinataire et expéditeur
$mail->setFrom([EMAIL_O2SWITCH], 'Nom du site');
$mail->addAddress([EMAIL_TEST]);
// Contenu
$mail->isHTML(true);
$mail->Subject = 'Test mail';
$mail->Body = 'Ceci est un test depuis le VPS via le relais SMTP OVH.';
// Debug (optionnel pour voir la négociation)
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->send();
echo 'Message envoyé avec succès !';
…
Avez-vous une idée de l’origine de ce problème et comment je pourrais le résoudre ?
Merci par avance pour votre aide. Bien cordialement, Loïc V.
Vous dites: Depuis l’activation de ce pare-feu, les e-mails envoyés via les scripts PHP, et plus précisément via la fonction mail(), ne fonctionnent plus.
Puisque vous administrez un VPS, ça ne suffit pas de dire : ça ne fonctionne pas.
Soit votre applicatif se mange un code d'erreur lors de l'appel de mail(), soit la soumission du mail est acceptée et ce mail se trouve quelque part.
Voyez la commande: mailq
Voyez vos logs dans /var/log/mail.log
Je vous invite à revenir avec un diagnostic plus étoffé.
Tout d’abord, merci pour vos réponses. Désolé pour le délai, je n’ai pas pu me connecter ce weekend. J’ai l’impression que depuis la mise en place du pare-feu réseaux, il m’arrive parfois de ne plus pouvoir accéder aux services du VPS (WHM, FTP, cPanel) pendant un laps de temps.
our te répondre @fritz2cat 🇧🇪 🇪🇺, j’ai testé la commande mailq, mais elle semble introuvable. J’ai donc réalisé un test pour envoyer un mail :
$to = "[email_destinataire]";
$subject = "Test mail() depuis VPS";
$message = "Ceci est un test simple.";
$headers = "From: [email_emetteur]\r\n";
if (mail($to, $subject, $message, $headers)) {
echo "✅ Message accepté par mail()";
} else {
echo "❌ Erreur : mail() a échoué";
}</code></pre>
J’ai eu le retour suivant ✅ : Message accepté par mail(), ce qui signifie que les mails sont bien envoyés mais semblent bloqués quelque part. J’ai également testé la commande exim -bp, qui m’a affiché une liste d’e-mails en attente. J’ai ensuite récupéré les logs et voici le résultat obtenu lors de mon test :
Pour finir, @fritz2cat 🇧🇪 🇪🇺, concernant PHPMailer, j’ai testé avec vpsXXXX.ovh.net et ssl0.ovh.net, ainsi qu’avec les SMTP d’o2switch, mais aucun mail n’a été reçu. Honnêtement, je préférerais que cela fonctionne via la fonction mail() de PHP, afin d’éviter de devoir tout modifier.
@janus57, voici la liste des règles actuellement appliquées :
0 Autoriser TCP tous 80 Actif
1 Autoriser TCP tous 443 Actif
2 Autoriser TCP tous 2087 Actif
3 Autoriser TCP tous 2083 Actif
4 Autoriser TCP tous 49152 Actif
5 Autoriser TCP 212.194.142.225/32 21 Actif
6 Autoriser TCP tous 25 Actif
7 Autoriser TCP tous 465 Actif
8 Autoriser TCP tous 143 Actif
9 Autoriser TCP tous 993 Actif
10 Autoriser TCP tous 110 Actif
11 Autoriser TCP tous 995 Actif
12 Autoriser TCP tous 49153 Actif
13 Autoriser TCP tous 49154 Actif
14 Autoriser TCP tous 49155 Actif
15 Autoriser TCP tous 587 Actif
19 Refuser IPv4 tous Actif
Tout d’abord, merci pour vos réponses. Désolé pour le délai, je n’ai pas pu me connecter ce weekend. J’ai l’impression que depuis la mise en place du pare-feu réseaux, il m’arrive parfois de ne plus pouvoir accéder aux services du VPS (WHM, FTP, cPanel) pendant un laps de temps.
our te répondre @fritz2cat 🇧🇪 🇪🇺, j’ai testé la commande mailq, mais elle semble introuvable. J’ai donc réalisé un test pour envoyer un mail :
$to = "[email_destinataire]";
$subject = "Test mail() depuis VPS";
$message = "Ceci est un test simple.";
$headers = "From: [email_emetteur]\r\n";
if (mail($to, $subject, $message, $headers)) {
echo "✅ Message accepté par mail()";
} else {
echo "❌ Erreur : mail() a échoué";
}</code></pre>
J’ai eu le retour suivant ✅ : Message accepté par mail(), ce qui signifie que les mails sont bien envoyés mais semblent bloqués quelque part. J’ai également testé la commande exim -bp, qui m’a affiché une liste d’e-mails en attente. J’ai ensuite récupéré les logs et voici le résultat obtenu lors de mon test :
Pour finir, @fritz2cat 🇧🇪 🇪🇺, concernant PHPMailer, j’ai testé avec vpsXXXX.ovh.net et ssl0.ovh.net, ainsi qu’avec les SMTP d’o2switch, mais aucun mail n’a été reçu. Honnêtement, je préférerais que cela fonctionne via la fonction mail() de PHP, afin d’éviter de devoir tout modifier.
@janus57, voici la liste des règles actuellement appliquées :
0 Autoriser TCP tous 80 Actif
1 Autoriser TCP tous 443 Actif
2 Autoriser TCP tous 2087 Actif
3 Autoriser TCP tous 2083 Actif
4 Autoriser TCP tous 49152 Actif
5 Autoriser TCP 212.194.142.225/32 21 Actif
6 Autoriser TCP tous 25 Actif
7 Autoriser TCP tous 465 Actif
8 Autoriser TCP tous 143 Actif
9 Autoriser TCP tous 993 Actif
10 Autoriser TCP tous 110 Actif
11 Autoriser TCP tous 995 Actif
12 Autoriser TCP tous 49153 Actif
13 Autoriser TCP tous 49154 Actif
14 Autoriser TCP tous 49155 Actif
15 Autoriser TCP tous 587 Actif
19 Refuser IPv4 tous Actif
Cela vous semble-t-il correct ? Avez-vous une idée pour résoudre le problème rencontrer ?
Je comprends votre préférence pour Postfix. Sur mon VPS, Exim est installé par défaut avec cPanel, et je ne voudrais pas prendre le risque de tout casser en changeant de système. Je souhaite simplement que mes scripts PHP puissent envoyer des mails correctement, comme c’était le cas avant l’activation du pare-feu réseaux.
D’après les informations transmises précédemment, auriez‑vous une piste pour m’aider dans ce contexte ?
ou bien de firewall. (le port 25 doit être ouvert en sortie) Au-delà de vos règles en entrée (que vous avez montrées plus haut), j'ignore si vous avez aussi mis des règles en sortie.
nc: connect to gmail-smtp-in.l.google.com (108.177.96.26) port 25 (tcp) failed: Connection timed out
nc: connect to gmail-smtp-in.l.google.com (2a00:1450:4013:c06::1a) port 25 (tcp) failed: Network is unreachable
Puis, je me suis permis d’exécuter cette commande :
Pour répondre à votre remarque : j’ai ouvert les ports 49152 à 49155 pour le FTP en mode passif et, par la même occasion, j’ai restreint le FTP passif uniquement à ces ports, et non à la plage 49152-65534. Je prends note de votre conseil d’utiliser de préférence le FTP en mode actif.
Merci également pour les autres règles et je verrai pour mettre cela en place.
Depuis ce matin, je ne peux plus accéder à WHM et cPanel, apparemment à cause de la licence cPanel qui serait expirée, alors que son expiration est prévue en décembre 2025. Je vais donc d’abord résoudre ce problème d’accès à WHM et cPanel afin de pouvoir tester l’envoi des mails en direct, puis je reviendrai sur ce sujet et je vous informerai dès que cela sera opérationnel.
J’ai vérifié, mais aucune alerte n’est recensée sur les adresses IP, donc je ne sais pas si le port 25 a été bloqué. Toutefois, d’après mon message précédent (au-dessus du votre), il semble que le port 25 soit bloqué en sortie par OVH. Pensez-vous que je dois les contacter pour clarifier ce point avec eux ?
Désolé pour le délai de réponse, je voulais m’assurer que tout fonctionnait correctement avant de revenir vers vous.
La semaine dernière, je n’avais plus accès à WHM et à cPanel à cause d’un prétendu problème de licence expirée. J’ai donc dû passer le serveur en mode Rescue pour résoudre la situation. Il s’avère que la cause venait d’une mauvaise configuration du pare-feu réseau. Depuis que je l’ai reconfiguré comme me l’avait conseillé @janus57, j’ai retrouvé l’accès à WHM et cPanel, et l’envoi des mails fonctionne à nouveau.