#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"'
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
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