Forum Linux.général Les mystères du .forward

Posté par  .
Étiquettes : aucune
0
6
jan.
2009
Bonjour à tous,

Je voudrais pouvoir exécuter un script PHP à chaque fois que je reçois un mail adéquat.

Voici le contenu du fichier .forward dans ~:
"|/usr/bin/php -q ~/mail.php"
Je tire cette astuce du livre PHP avancé édité par Eyrolles.
Il est précisé dans ce livre: "Pour que la directive soit prise en compte, il faut configurer votre sendmail pour que l'exécution de scripts soit acceptée dans les .forward"
Je ne comprends pas ce que ça veut dire.

D'une manière générale, je ne comprends d'ailleurs pas grand chose à cette histoire de .forward.

Est-ce que toutes les adresses e-mails d'un compte sont concernées? Comment associer spécifiquement une adresse e-mail au compte où se trouve le .forward?
Faut-il avoir un courrielleur ouvert pour récupérer les messages sur le compte mail?
Faut-il disposer d'un serveur mail personnel?

Merci d'avance.
  • # Tentative de réponse

    Posté par  . Évalué à 7.

    Bonjour,

    Les fichiers .forward se situent normalement au niveau du serveur mail. Je parle ici du serveur SMTP, c'est à dire du serveur qui reçoit les e-mails en amont du "courrielleur". Un serveur SMTP populaire dans le monde Unix est sendmail.

    Pour mieux comprendre, voici à quoi ressemble le parcours d'un email :

    Quelqu'un envoie, avec son courrielleur (j'aime bien le terme), disons Thunderbird, un courriel à destination de Auberon@plouf.fr.
    Ce qui se passe en fait, c'est que Thunderbird établit une connexion avec le serveur SMTP dont le nom figure dans la configuration du compte mail, pour lui demander d'envoyer le courriel (Thunderbird lui meme ne sait pas envoyer le mail). Le serveur SMTP, souvent celui du fournisseur Internet dans le cas de particulier, est donc le serveur expediteur. Disons pour faire simple que la personne envoyant le mail est chez Free.
    Le serveur mail.free.fr se retrouve donc avec un message à envoyer à Auberon@plouf.fr. Grace au DNS, le serveur de Free trouve l'adresse du serveur mail s'occupant du domaine plouf.fr. Il etablit une connexion avec lui, et par le biais du protocole SMTP, lui donne le message (non sans avoir ajouté quelques en-tete indiquant notamment qui est l'expediteur). Le serveur mail.plouf.fr, serveur destinataire, se retrouve donc avec un message sur les bras, destiné à Auberon.
    Imaginons que ce serveur utilise le logiciel sendmail pour traiter les courriel. Une fois le message reçu, il va regarder si il existe un compte sur le systeme du nom d'auberon. Si c'est le cas, s'il est configuré pour le faire et si le fichier existe, il va ensuite lire le fichier .forward present dans le repertoire personnel associé au compte. Au depart, ce fichier sert surtout à "forwarder" les mails vers une autre adresse. Mais la syntaxe permet également d'envoyer les mails à un programme (c'est le cas ici).
    Selon la presence ou pas du .forward, et selon ce que contient le fichier, le courriel atterit in fine dans un sous répertoire du compte auberon, par exemple le repertoire Mail.

    Ce que faut votre courrielleur , c'est qu'il se connecte aussi à mail.plouf.fr, mais non pas ppar le protocole SMTP. Suivant sa configuration, il va utiliser le protocole IMAP ou POP pour acceder au contenu de ce repertoire ~auberon/Mail, et ainsi recuperer les email. On le voit bien : les directive contenues dans le .forward ont a ce stade deja été executées.

    Pour pouvoir utiliser ces fonctionnalités, nul besoin d'avoir un serveur mail personnel faisant tourner sendmail. Il faut par contre un compte mail aupres d'un fournisseur qui laisse à ses clients le loisir de configurer un .forward (ou d'autre filtres pàlus sophistiqués, tels maildrop et procmail). Ce n'est pas le cas chez gmail, hotmail ou autres.
    • [^] # Re: Tentative de réponse

      Posté par  . Évalué à 1.

      Merci.

      Donc, si je veux faire tourner un script sur ma machine, pas le choix, il me faut un serveur mail.

      Est-ce que tous les serveurs mails savent gérer le .forward ou c'est juste sendmail?
      • [^] # Re: Tentative de réponse

        Posté par  . Évalué à 3.

        Oui, pour faire tourner le script directement sur votre machine, avec le mecanisme .foward, il faut un serveur mail sur cette machine. Tous les serveur SMTP ne gerent pas le .forward, mais il me semble que les principaux le font. C'est le cas de Postfix, si mes souvenirs sont bons.

        Alternativement, si la contrainte de temps réel n'est pas trop forte, une autre solution peut etre envisageable. Sur votre machine, vous pouvez, avec Cron, lancer un script qui va recuperer vos mails par IMAP ou POP toutes les x minutes (en se comportant comme le courrielleur).

        Un tel script est facile a ecrire en Perl, Python, Ruby, ou PHP, qui possedent tous une bibliotheque IMAP ou POP. Il me semble que l'outil fetchmail peut aussi faire l'affaire.
        Une fois les emails recupérés, le script peut lancer un autre script si un "mail adequat" est present.

        A mon avis, cette solution est moins lourde à mettre en place, mais par contre, il y aura un délai de x minutes au maximum entre la reception du mail et le lancement du script.
        • [^] # Re: Tentative de réponse

          Posté par  . Évalué à 1.

          Encore merci.

          C'est effectivement la solution la plus viable.
          Je ne connaissais pas Cron.

          Problème résolu.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.