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é.
Configuration du renvoi vers le script
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 :
Le script doit directement être exécutable, il lui faut donc des droits d'exécution (chmod 755 par exemple) et un shebang.
Exemple de script (php)
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