Redirection des emails vers un script

L'outil redirecteurs de cPanel permet de créer des renvois vers d'autres adresses emails mais également vers un script de votre hébergement site internet. Cette fonctionnalité n'est pas très documentée, cette page donne plus de détails sur cet usage avancé.

Pour ajouter le renvoi vers un script, il faut aller dans l'outil redirecteurs puis cliquez sur “ajouter un redirecteur” puis dans les options avancées précisez le chemin du script :

Configuration d'une redirection vers un script

Le script doit directement être exécutable, il lui faut donc des droits d'exécution (chmod 755 par exemple) et un shebang.

Le script est très particulier et avant de commencer il faut connaitre quelques règles pour éviter de perdre du temps :

  • le script doit être exécutable, donc avec le droit d'exécution (chmod 755)
  • le script doit avoir un shebang
  • le script doit lire son entrée standard
  • le script ne doit pas afficher d'erreur et doit forcément renvoyer un bon code d'exécution sinon vous recevez un message de type “delivery failed” par email

Voici par exemple un script PHP qui écrit le contenu du mail reçu dans un fichier.

#!/usr/local/bin/php -c /home/votreLogin/public_html/php.ini -q
<?php
// source : https://forums.cpanel.net/f5/email-forward-php-script-39083.html
$i_klimit = -1;
if ($i_klimit == "") {
        $i_klimit = 1024;
}
 
$fp = fopen("php://stdin", "r");
$email = "";
 
if ($i_klimit == -1) {
        while (!feof($fp)) {
                $email .= fread($fp, 1024);
        }                    
} else {
        while (!feof($fp) && $i_limit < $i_klimit) {
                $email .= fread($fp, 1024);
                $i_limit++;
        }        
}
 
fclose($fp);
 
 
file_put_contents('/home/votreLogin/public_html/mail.txt',$email,LOCK_EX);
 
exit(0);
 
?>

Dans l'exemple du script donné ci-dessus, un fichier php.ini est inclus dans le shebang, c'est pour forcer la directive “display_error” à off car la moindre erreur ou warning PHP fait tout échouer.

Un bon moyen de tester votre script est de le lancer directement en ligne de commande, par exemple :

$ cat mail.txt | ./script.php
  • Dernière modification: il y a 2 ans
  • de o2switch