Accueil > Carnet > Debian, Sendmail, Cron et php

Après plus de 14 années de présence sur le web, je continue encore aujourd'hui cette incroyable aventure qu'est la découverte du virtuel. Lampe torche, sac à dos, planche de surf et bien sûr ce calepin indispensable pour mémoire.

#309 Debian, Sendmail, Cron et php 09 Novembre 2008

Web Silent Strength Linux php

Attention, il est important de considérer que cet article est une archive, son contenu est probablement obsolète!

Après avoir découvert que Jérémy avait eu des problèmes pour poser un commentaire, je me suis dit que j'allais rajouter un système de suivi qui m'enverrait par mail l'ensemble des commentaires de façon journalière (pour voir ceux qui sont acceptés et ceux qui sont refusés).

Les étapes pour mettre en place ce petit système sont :

  • Installation de Sendmail
  • Configuration de php
  • Création de la tâche cron

Installation de sendmail

Heureusement linux fait mal les choses, il faudra se munir de son terminal et taper en ligne de commandes plus d'une centaines de caractères.

$ sudo aptitude install sendmail

Une fois l'étape des interminables dépendances incompréhensibles terminée, sendmail se lance comme il faut. Vous pouvez faire le test qui échouera à coup sûr (normal, ce n'est pas Exchange) :

$ mail -s "Titre du mail" unmail@mail.com < /dev/null

/dev/null correspond à un fichier vide, donc le corps du mail le sera tout autant. Vous lancez votre Outlook favori, vous attendez 1 seconde le temps que la connexion soit effective et que les mails soient récupérés.

Configuration de php

Après avoir configuré sendmail, il faut configurer php … mais attention, c'est encore très loin des performances de asp.net. Comme nous avons besoin d'utiliser sendmail sous php en ligne de commande, il faudra éditer le php.ini correspondant.

Il se trouve normalement à l'adresse : /etc/php5/cli/php.ini. Cherchez la ligne contenant sendmail_path. Enlevez la dièse située en début de ligne (s'il n'est pas déjà enlevé) et rajoutez le texte comme suivant :

sendmail_path = /usr/sbin/sendmail -t -i

Passons maintenant à la création de la tâche cron.

Création d'une tâche cron

Conformément au man, l'édition d'une tâche cron s'avère d'une complexité dépassant l'imagination humaine. Dans le même terminal, tapez :

$ crontab -e

Rajoutez la ligne suivante :

0/30 * * * * php -f adresseAbsolueDuFichier.php

Les arguments :

  • 0/30 : Toutes les 30 minutes effectuer la tâche cron
  • * de l'importe quelle heure
  • * de n'importe quel jour
  • * de n'importe quel mois
  • * de n'importe quelle année ? je sais plus, faut consulter la doc de temps en temps :)
  • php
    • -f : prendre en considération un fichier
    • adresseAbsolueDuFichier.php, exemple /home/xethorn/mail.php

Bien sûr, il faudra que le fichier en question contienne une fonction mail().

A vos tests.

Ps. Désolé pour l'humour décalé :)

Commentaires

Ajouter un commentaire