Vous n'êtes pas identifié.
Hello, avant que je finisse par tuer quelqu'un je demande de l'aide sur un script pour procmail...Je désire faire un répondeur automatique pour e-mail.
Un man procmailex me donne ça:
A simple autoreply recipe. It makes sure that neither mail from any
daemon (like bouncing mail or mail from mailing-lists), nor autoreplies
coming from yourself will be autoreplied to. If this precaution would
not be taken, disaster could result (âringingâ mail). In order for
this recipe to autoreply to all the incoming mail, you should of course
insert it before all other recipes in your rcfile. However, it is
advisable to put it after any recipes that process the mails from sub-
scribed mailinglists; it generally is not a good idea to generate
autoreplies to mailinglists (yes, the !^FROM_DAEMON regexp should
already catch those, but if the mailinglist doesnât follow accepted
conventions, this might not be enough).
:0 h c
* !^FROM_DAEMON
* !^X-Loop: your@own.mail.address
| (formail -r -I"Precedence: junk"
-A"X-Loop: your@own.mail.address" ;
echo "Mail received.") | $SENDMAIL -t
Sauf que ce code plante lamentablement...enfin, ça fait rien.
Je l'ai rendu un peu plus minimal avec:
:0 h c
* !^FROM_DAEMON
* !^X-Loop: your@own.mail.address
| (formail -r) | /usr/sbin/sendmail.postfix -t
Donc dans l'ordre je contrôle juste que le mail ne vienne pas d'un daemon et qu'il n'est pas parti en boucle infinie, ensuite je crée un mail de réponse avec formail -r que je balance au démon sendmail de mon postfix....
A mon avis c'est ça qui foire...l'exemple doit être pour sendmail et pas postfix, mais la toute aide est la bienvenue
Hors ligne
:0 *!^FROM_DAEMON *!^X-Loop: your@own.mail.address { :0 h c | (formail -rk -I "ton-mail" -A "mail-destination" ; cat $HOME/.reponse )|$SENDMAIL -oi -t }
Et là, il faut juste avoir le fichier .reponse
Hors ligne
Merci, je vais tester ça
Hors ligne
Bon, en fait ça marchait depuis le début en injectant manuellement un mail à procmail...le problème c'est qu'en utilisation réelle (= postfix qui délivre les messages) cela ne marche plus.
Un peu plus de détails sur la manière dont j'utilise procmail...
1) Je l'appelle à partir du fichier .forward qui contient:
"|/usr/bin/procmail -m /chemin_vers_user/.procmailrc VERBOSE=ON"
2) Dans le fichier .procmailrc j'ai:
:0hc * !^FROM_DAEMON * !^X-Loop: test@test.ch | (formail -r -A"X-Loop: test@test.ch"; cat .autoreply) | $SENDMAIL -t
Je rapelle que ceci marche très bien en injectant manuellement un mail.
En utilisation réelle avec postfix j'ai cependant droit à ça dans mes logs:
postfix/local[20478]: F3B6F174008: to=<test@test.ch>, relay=local, delay=1, status=bounced (can't create user output file)
Une idée? D'après ce que je sais procmail se lance avec l'UID du récepteur du mail et par conséquent il n'a peut-être pas le droit d'écrire dans /var/spool/mail pour envoyer la réponse...d'autres idées?
Hors ligne
Alors j'ai trouvé la solution...c'est TRES con. En fait comme je l'ai dit, procmail est appelé par postfix et se lance avec l'UID du destinataire et moi j'essayais de créer un répondeur avec mon compte root. Sauf que le gentil postfix refuse pour des raisons de sécurité de le lancer avec l'UID 0 (root)...d'ou l'erreur.
PUTAIN DE MERDE, j'ai passé 6h à chercher pour trouver ça.
J'espère sincèrement que ça servira à quelqu'un un jour ce post...
Hors ligne