Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/08/2010, à 10:26

davlefou

[résolu] procmail,formail,sendmail

Lu,
j'essaye de faire fonctionner ce code depuis un momment. Il s'agit d'un fichier conf/scrip pour procmail appelant un programme de construction de mail, formail avant d'envoyer le tout à sendmail.
Mon objectif étant de renvoyer une autoréponse en html au lieu de simple texte.

Pour ce faire, je dois arriver à mettre la cela : boundary="frontiere" sous cette forme dans l'entête du mail(ajout de bête guillemet) pour qu'elle puisse être correctement interpété pour le logiciel de mail. Idealement, avec un saut à la ligne! Jusqu'a présent, choux blanc. \"n '"' n'ont pas marché, des idées?

Voici le fichier .procmailrc

PATH=/bin:/usr/bin:/usr/sbin
SHELL=/bin/bash
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
ORGMAIL=$MAILDIR
LOCKFILE=$HOME/lockfile.lock
ASSASSINLOCK=$HOME/assassin.lock
DEFAULT=$HOME/Maildir/
JUNKMAIL=$HOME/Maildir/.junkmail/
TRASH=$HOME/Maildir/.Trash
NEWBIE=$HOME/Maildir/.LinuxNewbie/
EXPERT=$HOME/Maildir/.LinuxExpert/
VIRUS=$HOME/Maildir/.virus/
BITBUCKET=/dev/null
LOGFILE=/var/log/procmailrc.log
VERBOSE=yes
LOGABSTRACT=all

:0c
* !^FROM_DAEMON 
* !^FROM_MAILER
| (formail -rA "MIME-Version: 1.0;" \
-A "Content-Type: text/plain;"; cat $HOME/reponseauto.txt) | sendmail -t
#| (formail -rA "MIME-Version: 1.0;" \
#-A "Content-Type: multipart/alternative;  boundary=frontiere" ; cat $HOME/autoreponse.html) | sendmail -t

Dernière modification par davlefou (Le 11/08/2010, à 17:07)


La croisade a commencé.

Hors ligne

#2 Le 10/08/2010, à 10:40

pat_bateman

Re : [résolu] procmail,formail,sendmail

Bonjour,

A tout hasard:
boundary=\"frontiere\"

-Pat

Hors ligne

#3 Le 10/08/2010, à 11:42

sputnick

Re : [résolu] procmail,formail,sendmail

Je dirais :

-A 'Content-Type: multipart/alternative;  boundary="frontiere"'

wink


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 10/08/2010, à 15:29

davlefou

Re : [résolu] procmail,formail,sendmail

Les guillemets simples semblent marcher, j'ai donction ajouter  \n\t pour forcer un passage à la ligne et un tabulation.


| (formail -rA "MIME-Version: 1.0;" \
-A 'Content-Type: multipart/alternative; \n\t  boundary="frontiere"' ; cat $HOME/autoreponse.html) | sendmail -t

et j'obtiens cela dans le corps du mail :

MIME-Version: 1.0;
Content-Type: multipart/alternative; \n\t  boundary="frontiere"

au lieux de cela :

MIME-Version: 1.0;
Content-Type: multipart/alternative; 
                               boundary="frontiere"

Dernière modification par davlefou (Le 10/08/2010, à 16:22)


La croisade a commencé.

Hors ligne

#5 Le 10/08/2010, à 15:53

pat_bateman

Re : [résolu] procmail,formail,sendmail

Et avec ça:

| (formail -rA "MIME-Version: 1.0;" \
-A '`echo -e "Content-Type: multipart/alternative; \n\t  boundary=\"frontiere\""`' ;

C'est un peu capilotracté mais la logique est là.

-Pat

Hors ligne

#6 Le 10/08/2010, à 16:22

davlefou

Re : [résolu] procmail,formail,sendmail

Il n'a pas vraiment aime la sauce!!!
Je dois avouer que je ne suis pas très au point avec les différentes guillemet et que je commencer à criser au bout de quelque jours de rechercher. J'ai isolé le probléme mais je galére à le résoudre.

From MAILER-DAEMON  Tue Aug 10 17:07:54 2010
 Subject: Undelivered Mail Returned to Sender
  Folder: **Bounced**							      0
procmail: [9247] Tue Aug 10 17:11:05 2010
procmail: Assigning "LOGABSTRACT=all"
procmail: Assigning "PATH=/home/X.Y/bin:/usr/local/bin:/usr/bin:/bin"
procmail: Error while writing to "/var/log/procmailrc.log"
procmail: Assigning "LOGABSTRACT=all"
procmail: Match on ! "(^(Mailing-List:|Precedence:.*(junk|bulk|list)|To: Multiple recipients of |(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-z0-9])?(Post(ma?(st(e?r)?|n)|office)|(send)?Mail(er)?|daemon|m(mdf|ajordomo)|n?uucp|LIST(SERV|proc)|NETSERV|o(wner|ps)|r(e(quest|sponse)|oot)|b(ounce|bs\.smtp)|echo|mirror|s(erv(ices?|er)|mtp(error)?|ystem)|A(dmin(istrator)?|MMGR|utoanswer))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>	 ][^<)]*(\(.*\).*)?)?$([^>]|$)))"
procmail: Match on ! "(^(((Resent-)?(From|Sender)|X-Envelope-From):|>?From )([^>]*[^(.%@a-z0-9])?(Post(ma(st(er)?|n)|office)|(send)?Mail(er)?|daemon|mmdf|n?uucp|ops|r(esponse|oot)|(bbs\.)?smtp(error)?|s(erv(ices?|er)|ystem)|A(dmin(istrator)?|MMGR))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>	 ][^<)]*(\(.*\).*)?)?$([^>]|$))"
procmail: Assigning "LASTFOLDER= (formail -rA "MIME-Version: 1.0;" \
-A '`echo -e "Content-Type: multipart/alternative; \n\t  boundary=\"frontiere\""`' ; cat $HOME/autoreponse.html) | sendmail -t"
From X.Y@free.fr  Tue Aug 10 17:11:05 2010
 Subject: teste courriel 43
  Folder:  (formail -rA "MIME-Version: 1.0;" \ -A '`echo -e "Content-T	   1048
procmail: Executing " (formail -rA "MIME-Version: 1.0;" \
-A '`echo -e "Content-Type: multipart/alternative; \n\t  boundary=\"frontiere\""`' ; cat $HOME/autoreponse.html) | sendmail -t"
procmail: Assigning "LASTFOLDER=/home/X.Y/Maildir/new/1281453065.9247_1.www"
procmail: Notified comsat: "X.Y@0:/home/X.Y/Maildir/new/1281453065.9247_1.www"
From X.Y@free.fr  Tue Aug 10 17:11:05 2010
 Subject: teste courriel 43
  Folder: /home/X.Y/Maildir/new/1281453065.9247_1.www		    995
procmail: Unlocking "/home/X.Y/lockfile.lock"
formail: Invalid field-name: "`echo -e "Content-Type: multipart/alternative; \n\t  boundary=\"frontiere\""`"
Usage: formail [-vbczfrktqY] [-D nnn idcache] [-p prefix] [-l folder]
	[-xXaAiIuU field] [-R ofield nfield]
   Or: formail [+nnn] [-nnn] [-bczfrktedqBY] [-D nnn idcache] [-p prefix]
	[-n [nnn]] [-m nnn] [-l folder] [-xXaAiIuU field] [-R ofield nfield]
	-s [prg [arg ...]]
sendmail: fatal: X.Y(1000): No recipient addresses found in message header

Dernière modification par davlefou (Le 10/08/2010, à 16:27)


La croisade a commencé.

Hors ligne

#7 Le 10/08/2010, à 16:28

pat_bateman

Re : [résolu] procmail,formail,sendmail

sad
Je n'ai plus d'idée.

Good luck

-Pat

Hors ligne

#8 Le 10/08/2010, à 17:03

davlefou

Re : [résolu] procmail,formail,sendmail

Dommage, car moi non plus!!!!


La croisade a commencé.

Hors ligne

#9 Le 10/08/2010, à 17:24

sputnick

Re : [résolu] procmail,formail,sendmail

echo $'Content-Type: multipart/alternative;  boundary="frontiere"\t\n'

je suis pas sur que tu prennes la bonne direction, et puis ta description n'est pas claire. il serais plus aisé de créer un fichier à donner à manger à procmail avec des here-docs...


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#10 Le 10/08/2010, à 17:25

sputnick

Re : [résolu] procmail,formail,sendmail

Cela peux aider aussi : http://www.google.com/codesearch/p?hl=en#yFbCB6DGvdQ/bin/mailman-discard&q=%22Content-Type:%20multipart/alternative%3B%22%20lang:shell&sa=N&cd=6&ct=rc


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#11 Le 10/08/2010, à 18:55

davlefou

Re : [résolu] procmail,formail,sendmail

En faite je veux simplement faire une réponse automatique sous procmail qui renvoie non pas un document texte mais html(idealement, les deux selons les possibilités du lecteur). J'ai donc trouver cet solution et je tente de l'adapter au html. J'ai donc un message en html sue je fourni à sendmail aprés un fusion par formail. J'ai du mal à trouver des documents et je patauge pas mal. Je suis peut être dans la mauvaise direction mais je débute avec les server mail.


La croisade a commencé.

Hors ligne

#12 Le 10/08/2010, à 19:11

davlefou

Re : [résolu] procmail,formail,sendmail

Dommage, cela n'a pas marché non plus!
Message quasi identique à celui affiché au dessus. Inutile de remplir de poste de code sans intérêt!!!

Dernière modification par davlefou (Le 10/08/2010, à 19:29)


La croisade a commencé.

Hors ligne

#13 Le 10/08/2010, à 21:03

sputnick

Re : [résolu] procmail,formail,sendmail

Pleins d'exemples de .procmailrc  : http://www.google.com/search?hl=en&q=-inurl%3A%28htm%7Chtml%7Cphp%29+intitle%3A%22index+of%22+%2B%22last+modified%22+%2B%22parent+directory%22+%2Bdescription+%2Bsize+%22.procmailrc%22&aq=f&aqi=&aql=&oq=&gs_rfai=

Tu ne peut pas mettre de echo à mon avis. ( je n'utilise pas ces solutions, mais c'est de la logique Unix, et aussi en regardant tes erreurs de sorties  ).
Si tu veut un \t tu le fais dans le script. Pareil pour un \n. Cad, tu appuye sur tab ou enter.


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#14 Le 11/08/2010, à 09:10

davlefou

Re : [résolu] procmail,formail,sendmail

Tu utilise quoi comme solution?


La croisade a commencé.

Hors ligne

#15 Le 11/08/2010, à 11:14

davlefou

Re : [résolu] procmail,formail,sendmail

Suite de l'aventure

|

(formail -rA "MIME-Version: 1.0;" \
-A "X-Loop: X.Y@Z.com" \
-A 'Content-Type: multipart/alternative; boundary="SeparateurDeZone"' ; cat $HOME/autoreponse.html) | sendmail -t

Fonction pour le formail. On peut renvoyer un message html à condition de respecter les codes de celui ci!
Attention au différent de caractére entre systéme. Ma mail n'était pas traité pour non conformite. Cela s'est mis à marché quand j'ai copier en local est fichier!!!

Dernière modification par davlefou (Le 11/08/2010, à 12:25)


La croisade a commencé.

Hors ligne

#16 Le 11/08/2010, à 12:25

davlefou

Re : [résolu] procmail,formail,sendmail

J'ai trouvé la solution, voici le procmail, vous me mettez dans /etc/ et il fonctionnement pour tout le monde.

PATH=/bin:/usr/bin:/usr/sbin
SHELL=/bin/bash
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
ORGMAIL=$MAILDIR
LOCKFILE=$HOME/lockfile.lock
ASSASSINLOCK=$HOME/assassin.lock
DEFAULT=$HOME/Maildir/
JUNKMAIL=$HOME/Maildir/.junkmail/
TRASH=$HOME/Maildir/.Trash
NEWBIE=$HOME/Maildir/.LinuxNewbie/
EXPERT=$HOME/Maildir/.LinuxExpert/
VIRUS=$HOME/Maildir/.virus/
BITBUCKET=/dev/null
LOGFILE=/var/log/procmailrc.log
VERBOSE=yes
LOGABSTRACT=all

:0c
* !^FROM_DAEMON 
* !^FROM_MAILER
* !^X-Loop: $LOGNAME@x.com
* !^Content-Type: multipart/alternative; boundary=\"SeparateurDeZone\"
#| (formail -rA "MIME-Version: 1.0;" \
#-A "Content-Type: text/plain;"; cat $HOME/reponseauto.txt) | sendmail -t
| (formail -rA "MIME-Version: 1.0;" \
-A "X-Loop: $LOGNAME@x.com" \
-A 'Content-Type: multipart/alternative; boundary="SeparateurDeZone"' ; cat $HOME/autoreponse.html) | sendmail -t

Le code fonctionne parfaitement. Il vous faut juste ajouter un code autoreponse.html dans votre repertoire maison(home). Je vous conseil de vous envoyer le message ne html et de le récupérer directement dans la boite au lettre pour avoir les bons caractére.

x: votre nom de domaine.

il devra être de la forme suivante :

--SeparateurDeZone
 parti text
--SeparateurDeZone
 parti html
--SeparateurDeZone--

Deux parti, c'est mieux au cas ou votre interlocuteur ne gére pas le html. Vous pouvez en rajouter d'autre, je vous laisse vous pencher sur la code html mail pour plus d'information.

Dernière modification par davlefou (Le 11/08/2010, à 12:26)


La croisade a commencé.

Hors ligne

#17 Le 11/08/2010, à 12:28

davlefou

Re : [résolu] procmail,formail,sendmail

J'aurais encore une envie, es ce que je peux mettre un systéme qui modifie automatiquement l'autoréponse pour ajouter le noms d'utilisateur. Soit à la création du compte, soit à la volé.


La croisade a commencé.

Hors ligne

#18 Le 11/08/2010, à 16:16

davlefou

Re : [résolu] procmail,formail,sendmail

On résoud le probléme avec sed et un fichier de réponse par defaut avec des clés de remplacement.

sed -e 's/$LOGNAME/nom prenom/g' /etc/skel/autoreponse-x.html > /home/utilisateur/autoreponse-x.html

Me reste plus qu'a régles les majuscules des prénons.

Dernière modification par davlefou (Le 18/08/2010, à 13:35)


La croisade a commencé.

Hors ligne

#19 Le 11/08/2010, à 18:11

davlefou

Re : [résolu] procmail,formail,sendmail

Il ne reste plus qu'a mettre automatiquement les noms en majuscule :

Prenom=`echo -e $prenom  | sed 's/^.\| [a-z]/\U&/g'`
Nom=`echo -e $nom  | sed 's/^.\| [a-z]/\U&/g'`

J'ai un script qui crée les utilisateur et met l'autoreponse en action automatiquement.
Bonne chance les gars!!!
Je continue à surveiller d'un oeil le sujet!!!


La croisade a commencé.

Hors ligne