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

3 réponses
Avatar
Olivier
--001a114a78c23a57fe05582083f1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Le 1 septembre 2017 =C3=A0 13:47, daniel huhardeaux <no-spam@tootai.net> a =
=C3=A9crit
:

> Le 01/09/2017 =C3=A0 13:17, Olivier a =C3=A9crit :
>
>> Bonjour,
>>
>
> Bonjour
>
>
>> J'ai un abonnement chez un ISP1 qui inclut entre autres, la fourniture
>> d'un service pour une vingtaine de bo=C3=AEtes personnalis=C3=A9es de co=
urriel
>> associ=C3=A9es =C3=A0 mon domaine.
>>
>> En d'autres termes, j'ai un domaine mondomaine.com <http://mondomaine.co=
m>
>> et je peux cr=C3=A9er des bo=C3=AEtes email comme contact@mondomaine.com=
<mailto:
>> contact@mondomaine.com>, compta@mondomaine.com <mailto:
>> compta@mondomaine.com> ou alerte@mondomaine.com <mailto:
>> alerte@mondomaine.com>.
>> J'ai ici ou l=C3=A0 quelques clients de messagerie qui interrogent certa=
ins de
>> ces comptes.
>>
>> Si besoin, mon ISP propose des options de configuration qui permettent
>> des redirections (chaque message envoy=C3=A9 =C3=A0 alerte@mondomaine.co=
m <mailto:
>> alerte@mondomaine.com> est renvoy=C3=A9 imm=C3=A9diatement, semble-t-il,=
et si je
>> le souhaite, =C3=A0 foobar@toto.com <mailto:foobar@toto.com>).
>>
>> J'aimerai le plus simplement possible, lancer un script =C3=A0 chaque me=
ssage
>> re=C3=A7u sur la bo=C3=AEte alerte@mondomaine.com <mailto:alerte@mondoma=
ine.com>.
>>
>>
>> Pour ce faire, j'ai d=C3=A9j=C3=A0 une machine sous Jessie connect=C3=A9=
e =C3=A0 Internet,
>> avec une IP fixe, chez un prestataire ISP2.
>> J'y ai install=C3=A9 Postfix pour =C3=A9mettre des courriels au nom de
>> alerte@mondomaine.com <mailto:alerte@mondomaine.com>. =C3=87a fonctionne
>> (gr=C3=A2ce aux conseils lus dans cette liste).
>>
>>
>> De quoi d'autre ai-je besoin pour parvenir =C3=A0 mes fins ?
>> Est-il exact de penser qu'il est n=C3=A9cessaire et suffisant de faire:
>>
>> 1. Redirection via l'ISP1, des courriels re=C3=A7us par alerte@mondomain=
e.com
>> <mailto:alerte@mondomaine.com> vers toto@monip.isp2.fr <mailto:
>> toto@monip.isp2.fr> o=C3=B9 monip.isp2.fr <http://monip.isp2.fr> est l'I=
P
>> fixe de ma machine h=C3=A9bergeant Postfix
>>
>> 2. Configurer ma machine h=C3=A9bergeant Postfix pour d=C3=A9clencher un=
script =C3=A0
>> chaque r=C3=A9ception (comme ici [1])
>>
>> 3. Configurer ma machine h=C3=A9bergeant Postfix pour vider r=C3=A9guli=
=C3=A8rement le
>> compte alerte@mondomaine.com <mailto:alerte@mondomaine.com>.
>>
>>
>> Questions connexes:
>> 4. Quel programme permet =C3=A0 un serveur Debian de purger/vider/archiv=
er
>> 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 alerte@mondomaine.com seront r=C3=A9ceptionn=C3=A9s par=
la
> machine ISP2, pas de copie chez ISP1. Comme un script traite les messages=
,
> ils ne seront sauvegard=C3=A9s nulle part. D'ailleurs dans ton lien le Mr
> explique bien qu'il y a 2 solutions: ou l'on s'int=C3=A9resse uniquement =
au mail
> d=C3=A9clencheur (le message n'est pas important) donc une fois r=C3=A9ce=
ptionn=C3=A9,
> termin=C3=A9 ou on s'int=C3=A9resse au message dans ce cas il faut gerer =
le body dans
> le script (voir ses exemples).
>
> Pour r=C3=A9ceptionner 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 =C3=A0 ce que je recherche : j=
e le
teste d=C3=A8s maintenant !
Merci beaucoup du tuyau !

--001a114a78c23a57fe05582083f1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">Le 1 septembre 2017 =C3=A0 13:47, daniel huhardeaux <span dir=3D"ltr">&=
lt;<a href=3D"mailto:no-spam@tootai.net" target=3D"_blank">no-spam@tootai.n=
et</a>&gt;</span> a =C3=A9crit :<br><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Le 01/09=
/2017 =C3=A0 13:17, Olivier a =C3=A9crit :<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
Bonjour,<br>
</blockquote>
<br>
Bonjour<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><span class=3D"">
<br>
J&#39;ai un abonnement chez un ISP1 qui inclut entre autres, la fourniture =
d&#39;un service pour une vingtaine de bo=C3=AEtes personnalis=C3=A9es de c=
ourriel associ=C3=A9es =C3=A0 mon domaine.<br>
<br></span>
En d&#39;autres termes, j&#39;ai un domaine <a href=3D"http://mondomaine.co=
m" rel=3D"noreferrer" target=3D"_blank">mondomaine.com</a> &lt;<a href=3D"h=
ttp://mondomaine.com" rel=3D"noreferrer" target=3D"_blank">http://mondomain=
e.com</a>&gt; et je peux cr=C3=A9er des bo=C3=AEtes email comme <a href=3D"=
mailto:contact@mondomaine.com" target=3D"_blank">contact@mondomaine.com</a>=
&lt;mailto:<a href=3D"mailto:contact@mondomaine.com" target=3D"_blank">con=
tact@mondomaine.com</a><wbr>&gt;, <a href=3D"mailto:compta@mondomaine.com" =
target=3D"_blank">compta@mondomaine.com</a> &lt;mailto:<a href=3D"mailto:co=
mpta@mondomaine.com" target=3D"_blank">compta@mondomaine.com</a>&gt; ou <a =
href=3D"mailto:alerte@mondomaine.com" target=3D"_blank">alerte@mondomaine.c=
om</a> &lt;mailto:<a href=3D"mailto:alerte@mondomaine.com" target=3D"_blank=
">alerte@mondomaine.com</a>&gt;<wbr>.<span class=3D""><br>
J&#39;ai ici ou l=C3=A0 quelques clients de messagerie qui interrogent cert=
ains de ces comptes.<br>
<br></span>
Si besoin, mon ISP propose des options de configuration qui permettent des =
redirections (chaque message envoy=C3=A9 =C3=A0 <a href=3D"mailto:alerte@mo=
ndomaine.com" target=3D"_blank">alerte@mondomaine.com</a> &lt;mailto:<a hre=
f=3D"mailto:alerte@mondomaine.com" target=3D"_blank">alerte@mondomaine.com<=
/a>&gt; est renvoy=C3=A9 imm=C3=A9diatement, semble-t-il, et si je le souha=
ite, =C3=A0 <a href=3D"mailto:foobar@toto.com" target=3D"_blank">foobar@tot=
o.com</a> &lt;mailto:<a href=3D"mailto:foobar@toto.com" target=3D"_blank">f=
oobar@toto.com</a>&gt;).<br>
<br>
J&#39;aimerai le plus simplement possible, lancer un script =C3=A0 chaque m=
essage re=C3=A7u sur la bo=C3=AEte <a href=3D"mailto:alerte@mondomaine.com"=
target=3D"_blank">alerte@mondomaine.com</a> &lt;mailto:<a href=3D"mailto:a=
lerte@mondomaine.com" target=3D"_blank">alerte@mondomaine.com</a>&gt;<wbr>.=
<span class=3D""><br>
<br>
<br>
Pour ce faire, j&#39;ai d=C3=A9j=C3=A0 une machine sous Jessie connect=C3=
=A9e =C3=A0 Internet, avec une IP fixe, chez un prestataire ISP2.<br></span=
>
J&#39;y ai install=C3=A9 Postfix pour =C3=A9mettre des courriels au nom de =
<a href=3D"mailto:alerte@mondomaine.com" target=3D"_blank">alerte@mondomain=
e.com</a> &lt;mailto:<a href=3D"mailto:alerte@mondomaine.com" target=3D"_bl=
ank">alerte@mondomaine.com</a>&gt;<wbr>. =C3=87a fonctionne (gr=C3=A2ce aux=
conseils lus dans cette liste).<span class=3D""><br>
<br>
<br>
De quoi d&#39;autre ai-je besoin pour parvenir =C3=A0 mes fins ?<br>
Est-il exact de penser qu&#39;il est n=C3=A9cessaire et suffisant de faire:=
<br>
<br></span>
1. Redirection via l&#39;ISP1, des courriels re=C3=A7us par <a href=3D"mail=
to:alerte@mondomaine.com" target=3D"_blank">alerte@mondomaine.com</a> &lt;m=
ailto:<a href=3D"mailto:alerte@mondomaine.com" target=3D"_blank">alerte@mon=
domaine.com</a>&gt; vers <a href=3D"mailto:toto@monip.isp2.fr" target=3D"_b=
lank">toto@monip.isp2.fr</a> &lt;mailto:<a href=3D"mailto:toto@monip.isp2.f=
r" target=3D"_blank">toto@monip.isp2.fr</a>&gt; o=C3=B9 <a href=3D"http://m=
onip.isp2.fr" rel=3D"noreferrer" target=3D"_blank">monip.isp2.fr</a> &lt;<a=
href=3D"http://monip.isp2.fr" rel=3D"noreferrer" target=3D"_blank">http://=
monip.isp2.fr</a>&gt; est l&#39;IP fixe de ma machine h=C3=A9bergeant Postf=
ix<span class=3D""><br>
<br>
2. Configurer ma machine h=C3=A9bergeant Postfix pour d=C3=A9clencher un sc=
ript =C3=A0 chaque r=C3=A9ception (comme ici [1])<br>
<br></span>
3. Configurer ma machine h=C3=A9bergeant Postfix pour vider r=C3=A9guli=C3=
=A8rement le compte <a href=3D"mailto:alerte@mondomaine.com" target=3D"_bla=
nk">alerte@mondomaine.com</a> &lt;mailto:<a href=3D"mailto:alerte@mondomain=
e.com" target=3D"_blank">alerte@mondomaine.com</a>&gt;<wbr>.<span class=3D"=
"><br>
<br>
<br>
Questions connexes:<br>
4. Quel programme permet =C3=A0 un serveur Debian de purger/vider/archiver =
facilement un compte &quot;distant&quot; de messagerie ?<br>
</span></blockquote>
<br>
Tout est OK sauf pour le point 3/4: s&#39;il s&#39;agit d&#39;une redirecti=
on, tous les messages vers <a href=3D"mailto:alerte@mondomaine.com" target=
=3D"_blank">alerte@mondomaine.com</a> seront r=C3=A9ceptionn=C3=A9s par la =
machine ISP2, pas de copie chez ISP1. Comme un script traite les messages, =
ils ne seront sauvegard=C3=A9s nulle part. D&#39;ailleurs dans ton lien le =
Mr explique bien qu&#39;il y a 2 solutions: ou l&#39;on s&#39;int=C3=A9ress=
e uniquement au mail d=C3=A9clencheur (le message n&#39;est pas important) =
donc une fois r=C3=A9ceptionn=C3=A9, termin=C3=A9 ou on s&#39;int=C3=A9ress=
e au message dans ce cas il faut gerer le body dans le script (voir ses exe=
mples).<br>
<br>
Pour r=C3=A9ceptionner des messages distants, fetchmail est parfait.<br>
<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex">
<br>
<br>
Slts<br>
<br>
[1] <a href=3D"https://arno0x0x.wordpress.com/2016/02/07/postfix-lancer-un-=
script-sur-reception-dun-e-mail/" rel=3D"noreferrer" target=3D"_blank">http=
s://arno0x0x.wordpress.com<wbr>/2016/02/07/postfix-lancer-un-<wbr>script-su=
r-reception-dun-e-mai<wbr>l/</a><span class=3D"HOEnZb"><font color=3D"#8888=
88"><br>
</font></span></blockquote><span class=3D"HOEnZb"><font color=3D"#888888">
-- <br>
Daniel<br>
<br>
</font></span></blockquote></div><br></div><div class=3D"gmail_extra">En ef=
fet, fetchmail semble bien correspondre =C3=A0 ce que je recherche : je le =
teste d=C3=A8s maintenant !<br></div><div class=3D"gmail_extra">Merci beauc=
oup du tuyau !<br></div></div>

--001a114a78c23a57fe05582083f1--

3 réponses

Avatar
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.
Avatar
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.
Avatar
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.