Programmation  » [Postfix] Lancer un script à la réception d'un email
Catégorie :  
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 01/05/2007 @ 20:34:48,
Par cauet
Hello,

Toutes mes installations sont en Postfix (Maildir + Procmail)
Je voudrais exécuter un script à la réception d'un email.

C'est jouable?
J'ai googlé, mais rien trouvé de bien précis..

Merci tertous!
:grin:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 01/05/2007 @ 23:25:04,
Par philfr
Dans /etc/aliases, tu mets:

luser: |/home/cauet/monscript


Et tout mail envoyé à luser@tonhost va déclencher le script. Avec le contenu du mail en stdin du script.

Ça marche avec tous les MTA unix :oh: Vérifie juste où se trouve ton fichier aliases et sous quel format car postfix permet un peu de tout (config alias_maps et alias_database).

man aliases(5) t'aidera aussi.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 01/05/2007 @ 23:53:40,
Par cauet
Bon, ca ne va pas aussi simplement que je pourrais l'imaginer.

sms: |/usr/bin/php5 /home/smsaction/automation/mailtosms.php

Erreur (par retour mail):
<sms@mail.smsaction.be>: cannot append message to file
/home/smsaction/automation/mailtosms.php: file is executable

si je fais:

sms: |/home/smsaction/automation/mailtosms.php

avec #!/usr/bin/php5 en tête de script.
Aucun retour mail mais ceci en log:



May 1 23:47:04 ns1 postfix/qmgr[20968]: AE30C7E17: from=<mickael@xxxx.be>, size=1273, nrcpt=1 (queue active)
May 1 23:47:05 ns1 local[21201]: fatal: execvp /home/smsaction/automation/mailtosms.php: No such file or directory
May 1 23:47:05 ns1 postfix/qmgr[20968]: 875B47D42: removed
May 1 23:47:05 ns1 postfix/local[21200]: AE30C7E17: to=<sms@mail.smsaction.be>, relay=local, delay=0.32, delays=0.29/0.01/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: local: fatal: execvp /home/smsaction/automation/mailtosms.php: No such file or directory )

May 1 23:47:05 ns1 postfix/smtpd[21195]: disconnect from ulysse.talessa.com[85.234.192.2]


Idée?
Niveau code, on s'en fou un peu mais voilà pour le moment:


#!/usr/bin/php5
<?php
$stdin = fopen('php://stdin', 'r');
mail("mickael@xxxxxx.be", "Reception SMS", "retour -->".$stdin);
?>
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 00:08:28,
Par philfr
Essaie de mettre ça dans ton script:

#!/bin/bash

cat >>/tmp/out
exit 0


et n'oublie pas de le rendre exécutable (chmod +x )

Puis dis-nous quoi :wink:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 10:45:23,
Par cauet
Salut.
J'ai déjà mis en chmod+x
Mais le code que tu me donne là, c'est pas du php :petrus:

Tu veux que je teste d'abord avec un bash?
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 11:05:58,
Par ovh
Il est bizarre ton code :oh:

Moi pour avoir le contenu du mail je ferais :
  1. while ($buffer = fgets(STDIN)) { 
  2. ... 
  3. }

Parce que toi ta variable $stdin ne contient que le handler du fichier et pas son contenu :figti:
Ensuite pour envoyer un mail j'utilise phpmailer :dawa:

Par contre, si le seul but de ton script est de forwarder l'e-mail à une autre adresse, il doit y avoir plus simple, sûrement qu'une règle procmail sur le compte récepteur pourrait faire l'affaire :figti:

Dernière édition: 02/05/2007 @ 11:07:14
Je n'ai rien à voir avec www.ovh.com
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 11:08:14,
Par cauet
Alalala ové, t'a rien compris comme d'habitude :oh:
Le but étant de vérifier par retour mail que le systeme fonctionne, pas de forwarder par email..
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 11:08:35,
Par cauet
Cela dit, pour le handle je suis totalement d'accord :wink:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 11:14:09,
Par cauet
Ce serait pas plutôt :

<?php
while (!feof($handle)) {
$ovh=fgets($handle);
}
?>


:gratgrat:

Dernière édition: 02/05/2007 @ 11:35:00
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 12:01:12,
Par Keeper
en PHP tu peus tout lire d'un coup....
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 12:35:10,
Par cauet
Note: Le paramètre length est devenu optionnel depuis PHP 4.2.0. Depuis PHP 4.3.0, le fait d'ommettre ce paramètre fait que la fonction lira 1024 octets de la ligne. Si la majorité des lignes du fichier dépassent les 8 ko, il est plus efficace pour votre script de spécifier ce paramètre.

:gratgrat:


Façon là n'est pas le problème, mon script ne s'execute pas :sweat:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 12:38:47,
Par ovh
Dans /etc/aliases, essaie de mettre des guillemets, comme ça :
sms: "|/home/toto/tutu/pouet/monjoliscript.php"
Je n'ai rien à voir avec www.ovh.com
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 12:58:15,
Par cauet
Merci mon ovh chéri :grin:
Ca fonctionne!

sms: "|/usr/bin/php5 /home/smsaction/automation/mailtosms.php"
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 12:59:09,
Par ovh
:dawadanse:
Je n'ai rien à voir avec www.ovh.com
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 13:07:14,
Par Keeper
je veux dire tout lire le fichier d'un coup
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 13:56:09,
Par cauet
Merci à philou aussi :grin:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 02/05/2007 @ 19:14:51,
Par philfr
Ah quand même :oh:

:wink:
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 19/08/2008 @ 11:24:45,
Par fccc
Je relance le sujet car je cherche à faire la même chose (lancer un script a la reception d'un email) avec Qmail, mais je n'ai rien trouvé sur le net. Quelqu'un pourrait-il m'aider ?
Merci.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 19/08/2008 @ 12:51:15,
Par philfr
Pareil, mais il faut lancer une commande newaliases après avoir modifié ton /etc/aliases pour le convertir en db utilisée par qmail.
Lien direct vers ce message Editer  Citer  Ajouter ce message en quote multiple  Supprimer
[Postfix] Lancer un script à la réception d'un email
Publié le 19/08/2008 @ 15:42:54,
Par fccc
Par contre je n'ai pas de /etc/aliases :wam: . Et je ne trouve pas la commande newaliases (je n'ai pas Postfix, mais uniquement Qmail).

Et cerise sur le gâteau, je n'ai pas un grand niveau en linux ! :sweat:
Répondre  - Catégorie :  
Informaticien.be  - © 2002-2020 Akretio SPRL  - Generated via Kelare
The Akretio Network: Akretio  - Freedelity  - KelCommerce  - Votre publicité sur informaticien.be ?