Re: Lancer un script à la réception d'un email entrant

2017-09-13 Par sujet Yves Rutschle
On Fri, Sep 01, 2017 at 05:23:48PM +0200, Olivier wrote:
> 1. Réception

J'ai un peu raté le début, mais il me semble que la plupart
des MTAs supportent un fichier .forward que l'utilisateur
peut utiliser pour transférer son mail, y compris à un
script si ce fichier commence avec un pipe, par ex.:

% cat ~/.forward
| /home/yves/bin/processmail

(exemple imaginé, hein).

Le script est lancé pour chaque mail, et reçoit le mail sur
stdin, ce qui résoud un de tes problèmes de traitement.


> 2. Traitement des emails
> C- décomposer chaque email en un corps de message textuel et une pièce
> jointe (chaque email aura une PJ).

Je seconde également l'usage de bibliothèques (en Perl
MIME::Parser et MIME::Entity si je me souviens bien).

C'est potentiellement faisable avec munpack (je ne connais
pas), mais ça risque d'être galère; un attachement peut en
contenir d'autres (donc descendre récursivement dedans si
nécessaire) et autres joyeusetés.

Après, si c'est toi qui maîtrise l'émission, ça peut passer.

Bonne chance!
Y.



Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet JF Straeten

Re,


On Fri, Sep 01, 2017 at 05:47:02PM +0200, Olivier wrote:

[...]
> > Pourquoi ne pas les faire tomber dans une Maildir ? Tu aurais de base
> > un fichier par mail pour le même prix :-)
> >
> 
> Je n'ai rien contre.
> Comment fait-on ?
> Avec dans le fichier .fetchmailrc, une ligne du style :
> mda "procmail ."

Oui, tout à fait :-)


[...]
> > Il y a quelques librairies Perl qui devraient te permettre de faire
> > cela, dans la Debian en plus.
> 
> 
> Un programme comme munpack du paquet mpack ferait-il l'affaire ?

Connais pas... Je pensais à truc crafté sur mesure pour la
circonstance ;)

Un package Perl comme Mail::Box::Manager permet d'ouvrir une Maildir
et d'aller bidouiller dedans assez facilement...

Hih,

-- 

JFS.



Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet Olivier
Le 1 septembre 2017 à 17:35, JF Straeten  a écrit :

>
> Lo,
>
>
> On Fri, Sep 01, 2017 at 05:23:48PM +0200, Olivier wrote:
>
> [...]
> > Par contre, je recherche encore comment :
> > A- décomposer mon fichier /tmp/fetch_test ci dessus en plusieurs
> > emails
>
> Pourquoi ne pas les faire tomber dans une Maildir ? Tu aurais de base
> un fichier par mail pour le même prix :-)
>

Je n'ai rien contre.
Comment fait-on ?
Avec dans le fichier .fetchmailrc, une ligne du style :
mda "procmail ."


>
>
> > B- écarter les messages qui ne proviennent pas d'une adresse précise ou
> > plus généralement en fonction des en-têtes du message
>
> procmail, en effet...
>
>
> > C- décomposer chaque email en un corps de message textuel et une pièce
> > jointe (chaque email aura une PJ).
>
> Il y a quelques librairies Perl qui devraient te permettre de faire
> cela, dans la Debian en plus.
>


Un programme comme munpack du paquet mpack ferait-il l'affaire ?


>
>
> La chaîne serait : fetchmail -> procmail -> Maildir -> programme Perl
>
>(récupère) (garde/jette) (stocke) (décortique)
>
>
> Hih,
>
>
> --
>
> JFS.
>
>


Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet JF Straeten

Lo,


On Fri, Sep 01, 2017 at 05:23:48PM +0200, Olivier wrote:

[...]
> Par contre, je recherche encore comment :
> A- décomposer mon fichier /tmp/fetch_test ci dessus en plusieurs
> emails

Pourquoi ne pas les faire tomber dans une Maildir ? Tu aurais de base
un fichier par mail pour le même prix :-)


> B- écarter les messages qui ne proviennent pas d'une adresse précise ou
> plus généralement en fonction des en-têtes du message

procmail, en effet...


> C- décomposer chaque email en un corps de message textuel et une pièce
> jointe (chaque email aura une PJ).

Il y a quelques librairies Perl qui devraient te permettre de faire
cela, dans la Debian en plus.


La chaîne serait : fetchmail -> procmail -> Maildir -> programme Perl

   (récupère) (garde/jette) (stocke) (décortique)


Hih,


-- 

JFS.



Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet Olivier
@Bernard:
Tu peux intervenir quand tu veux: la bataille n'est pas encore gagnée !


Voici où j'en suis:

1. Réception
J'arrive à récupérer des emails avec une commande fetchmail -v et un
fichier .fetchmailrc du type:
poll imap.isp1.fr protocol imap:
   username "es...@foobar.com" password "monpassword"
   keep
   mda "tee /tmp/fetch_test"

Je ne sais pas encore si en finale, j'utiliserai fetchmail mais l'outil me
semble d'ores et déjà très pratique pour mettre au point le script de
traitement des emails
car la configuration ci-dessus me permet de sauver dans un fichier les
derniers emails reçus (pour l'instant, tous les emails reçus sont conservés
dans la boite email).

2. Traitement des emails
Par contre, je recherche encore comment :
A- décomposer mon fichier /tmp/fetch_test ci dessus en plusieurs emails
B- écarter les messages qui ne proviennent pas d'une adresse précise ou
plus généralement en fonction des en-têtes du message
C- décomposer chaque email en un corps de message textuel et une pièce
jointe (chaque email aura une PJ).

Pour l'instant (après avoir installé le paquet mpack), j'ai:
$ file fetch_test1
fetch_test1: SMTP mail, ASCII text
$ munpack /tmp/fetch_test
Did not find anything to unpack from /tmp/fetch_test

Sur le web, dans ce genre de traitement, je retrouve énormément de
références à procmail ou au développement d'appli via des libraires dans
tout type de langage de programmation (PHP, Python, ...).
Des conseils sur les points A, B et C me seront sans doute très précieux.



Le 1 septembre 2017 à 15:51, <bernard.schoenac...@free.fr> a écrit :

>
>
> --
>
> *De: *"Olivier" <oza.4...@gmail.com>
> *À: *"ML Debian User French" <debian-user-french@lists.debian.org>
> *Envoyé: *Vendredi 1 Septembre 2017 15:12:26
> *Objet: *Re: Lancer un script à la réception d'un email entrant
>
>
>
>
> Le 1 septembre 2017 à 13:47, daniel huhardeaux <no-s...@tootai.net> a
> écrit :
>
>> Le 01/09/2017 à 13:17, Olivier a écrit :
>>
>>> Bonjour,
>>>
>>
>> Bonjour
>>
>>
>>> J'ai un abonnement chez un ISP1 qui inclut entre autres, la fourniture
>>> d'un service pour une vingtaine de boîtes personnalisées de courriel
>>> associées à mon domaine.
>>>
>>> En d'autres termes, j'ai un domaine mondomaine.com <
>>> http://mondomaine.com> et je peux créer des boîtes email comme
>>> cont...@mondomaine.com <mailto:cont...@mondomaine.com>,
>>> com...@mondomaine.com <mailto:com...@mondomaine.com> ou
>>> ale...@mondomaine.com <mailto:ale...@mondomaine.com>.
>>> J'ai ici ou là quelques clients de messagerie qui interrogent certains
>>> de ces comptes.
>>>
>>> Si besoin, mon ISP propose des options de configuration qui permettent
>>> des redirections (chaque message envoyé à ale...@mondomaine.com >> ale...@mondomaine.com> est renvoyé immédiatement, semble-t-il, et si je
>>> le souhaite, à foo...@toto.com <mailto:foo...@toto.com>).
>>>
>>> J'aimerai le plus simplement possible, lancer un script à chaque message
>>> reçu sur la boîte ale...@mondomaine.com <mailto:ale...@mondomaine.com>.
>>>
>>>
>>> Pour ce faire, j'ai déjà une machine sous Jessie connectée à Internet,
>>> avec une IP fixe, chez un prestataire ISP2.
>>> J'y ai installé Postfix pour émettre des courriels au nom de
>>> ale...@mondomaine.com <mailto:ale...@mondomaine.com>. Ça fonctionne
>>> (grâce aux conseils lus dans cette liste).
>>>
>>>
>>> De quoi d'autre ai-je besoin pour parvenir à mes fins ?
>>> Est-il exact de penser qu'il est nécessaire et suffisant de faire:
>>>
>>> 1. Redirection via l'ISP1, des courriels reçus par ale...@mondomaine.com
>>> <mailto:ale...@mondomaine.com> vers t...@monip.isp2.fr >> t...@monip.isp2.fr> où monip.isp2.fr <http://monip.isp2.fr> est l'IP
>>> fixe de ma machine hébergeant Postfix
>>>
>>> 2. Configurer ma machine hébergeant Postfix pour déclencher un script à
>>> chaque réception (comme ici [1])
>>>
>>> 3. Configurer ma machine hébergeant Postfix pour vider régulièrement le
>>> compte ale...@mondomaine.com <mailto:ale...@mondomaine.com>.
>>>
>>>
>>> Questions connexes:
>>> 4. Quel programme permet à un serveur Debian de purger/vider/archiver
>>> facilement un compte "distant" de messagerie ?
>>>
>>
>> Tout est OK sauf pour le point 3/4: s'il s'agit d'une redirection, tous
>> les messages vers ale...@mondomaine.com seront récept

Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet Olivier
Le 1 septembre 2017 à 13:47, daniel huhardeaux  a écrit
:

> Le 01/09/2017 à 13:17, Olivier a écrit :
>
>> Bonjour,
>>
>
> Bonjour
>
>
>> J'ai un abonnement chez un ISP1 qui inclut entre autres, la fourniture
>> d'un service pour une vingtaine de boîtes personnalisées de courriel
>> associées à mon domaine.
>>
>> En d'autres termes, j'ai un domaine mondomaine.com 
>> et je peux créer des boîtes email comme cont...@mondomaine.com > cont...@mondomaine.com>, com...@mondomaine.com > com...@mondomaine.com> ou ale...@mondomaine.com > ale...@mondomaine.com>.
>> J'ai ici ou là quelques clients de messagerie qui interrogent certains de
>> ces comptes.
>>
>> Si besoin, mon ISP propose des options de configuration qui permettent
>> des redirections (chaque message envoyé à ale...@mondomaine.com > ale...@mondomaine.com> est renvoyé immédiatement, semble-t-il, et si je
>> le souhaite, à foo...@toto.com ).
>>
>> J'aimerai le plus simplement possible, lancer un script à chaque message
>> reçu sur la boîte ale...@mondomaine.com .
>>
>>
>> Pour ce faire, j'ai déjà une machine sous Jessie connectée à Internet,
>> avec une IP fixe, chez un prestataire ISP2.
>> J'y ai installé Postfix pour émettre des courriels au nom de
>> ale...@mondomaine.com . Ça fonctionne
>> (grâce aux conseils lus dans cette liste).
>>
>>
>> De quoi d'autre ai-je besoin pour parvenir à mes fins ?
>> Est-il exact de penser qu'il est nécessaire et suffisant de faire:
>>
>> 1. Redirection via l'ISP1, des courriels reçus par ale...@mondomaine.com
>>  vers t...@monip.isp2.fr > t...@monip.isp2.fr> où monip.isp2.fr  est l'IP
>> fixe de ma machine hébergeant Postfix
>>
>> 2. Configurer ma machine hébergeant Postfix pour déclencher un script à
>> chaque réception (comme ici [1])
>>
>> 3. Configurer ma machine hébergeant Postfix pour vider régulièrement le
>> compte ale...@mondomaine.com .
>>
>>
>> Questions connexes:
>> 4. Quel programme permet à un serveur Debian de purger/vider/archiver
>> facilement un compte "distant" de messagerie ?
>>
>
> Tout est OK sauf pour le point 3/4: s'il s'agit d'une redirection, tous
> les messages vers ale...@mondomaine.com seront réceptionnés par la
> machine ISP2, pas de copie chez ISP1. Comme un script traite les messages,
> ils ne seront sauvegardés nulle part. D'ailleurs dans ton lien le Mr
> explique bien qu'il y a 2 solutions: ou l'on s'intéresse uniquement au mail
> déclencheur (le message n'est pas important) donc une fois réceptionné,
> terminé ou on s'intéresse au message dans ce cas il faut gerer le body dans
> le script (voir ses exemples).
>
> Pour réceptionner des messages distants, fetchmail est parfait.
>
>
>>
>> Slts
>>
>> [1] https://arno0x0x.wordpress.com/2016/02/07/postfix-lancer-un-
>> script-sur-reception-dun-e-mail/
>>
> --
> Daniel
>
>
En effet, fetchmail semble bien correspondre à ce que je recherche : je le
teste dès maintenant !
Merci beaucoup du tuyau !


Re: Lancer un script à la réception d'un email entrant

2017-09-01 Par sujet daniel huhardeaux

Le 01/09/2017 à 13:17, Olivier a écrit :

Bonjour,


Bonjour



J'ai un abonnement chez un ISP1 qui inclut entre autres, la fourniture 
d'un service pour une vingtaine de boîtes personnalisées de courriel 
associées à mon domaine.


En d'autres termes, j'ai un domaine mondomaine.com 
 et je peux créer des boîtes email comme 
cont...@mondomaine.com , 
com...@mondomaine.com  ou 
ale...@mondomaine.com .
J'ai ici ou là quelques clients de messagerie qui interrogent certains 
de ces comptes.


Si besoin, mon ISP propose des options de configuration qui permettent 
des redirections (chaque message envoyé à ale...@mondomaine.com 
 est renvoyé immédiatement, semble-t-il, 
et si je le souhaite, à foo...@toto.com ).


J'aimerai le plus simplement possible, lancer un script à chaque 
message reçu sur la boîte ale...@mondomaine.com 
.



Pour ce faire, j'ai déjà une machine sous Jessie connectée à Internet, 
avec une IP fixe, chez un prestataire ISP2.
J'y ai installé Postfix pour émettre des courriels au nom de 
ale...@mondomaine.com . Ça fonctionne 
(grâce aux conseils lus dans cette liste).



De quoi d'autre ai-je besoin pour parvenir à mes fins ?
Est-il exact de penser qu'il est nécessaire et suffisant de faire:

1. Redirection via l'ISP1, des courriels reçus par 
ale...@mondomaine.com  vers 
t...@monip.isp2.fr  où monip.isp2.fr 
 est l'IP fixe de ma machine hébergeant Postfix


2. Configurer ma machine hébergeant Postfix pour déclencher un script 
à chaque réception (comme ici [1])


3. Configurer ma machine hébergeant Postfix pour vider régulièrement 
le compte ale...@mondomaine.com .



Questions connexes:
4. Quel programme permet à un serveur Debian de purger/vider/archiver 
facilement un compte "distant" de messagerie ?


Tout est OK sauf pour le point 3/4: s'il s'agit d'une redirection, tous 
les messages vers ale...@mondomaine.com seront réceptionnés par la 
machine ISP2, pas de copie chez ISP1. Comme un script traite les 
messages, ils ne seront sauvegardés nulle part. D'ailleurs dans ton lien 
le Mr explique bien qu'il y a 2 solutions: ou l'on s'intéresse 
uniquement au mail déclencheur (le message n'est pas important) donc une 
fois réceptionné, terminé ou on s'intéresse au message dans ce cas il 
faut gerer le body dans le script (voir ses exemples).


Pour réceptionner des messages distants, fetchmail est parfait.




Slts

[1] 
https://arno0x0x.wordpress.com/2016/02/07/postfix-lancer-un-script-sur-reception-dun-e-mail/

--
Daniel