Postfix + Procmail : "can't create user output file" [urgent svp]

Postfix + Procmail : "can't create user output file" [urgent svp] - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 30-07-2004 à 09:13:33    

Salut,
 
J'ai mis en place un ptit serveur de mail sur une station SUN (Solaris 8), avec postfix.
 
Comme je souhaite mettre en place un message d'absence automatique pendant mes vacances, j'ai installé procmail, et j'ai rajouté dans le script main.cf de postfix :
 

mailbox_command = /usr/bin/procmail -m $HOME/.procmailrc


 
 
Dans le répertoire de chaque utilisateur, par exemple /toto pour l'utilisateur toto, j'ai placé un fichier .procmailrc avec le script suivant pour ceux qui sont en vacances :
 

EMAIL=toto@bidon.fr
SHELL=/bin/sh
 
:0 Whc: vacation.lock
# Perform a quick check to see if the mail was addressed to us
* $^(To|Cc):.*$EMAIL
# Don't reply to daemons and mailinglists
* !^FROM_DAEMON
# Mail loops are evil
* $!^X-Loop: $EMAIL
| formail -rD 8192 vacation.cache
 
:0 ehc         # if the name was not in the cache
| (formail -rI"Precedence: junk" -A"From: $EMAIL" -A"X-Loop: $EMAIL" ; cat $HOME/.autoreply;) | $SENDMAIL -oi -t


(c'est un script que j'ai trouvé sur le web qui permet de renvoyer un mail automatique)
 
Le problème, c'est que lorsque j'envoie un mail à toto@bidon.fr pour faire un essai, toto ne reçoit pas son mail, et je reçois un mail de retour :
 

This is the Postfix program at host mail.bidon.fr.
 
I'm sorry to have to inform you that the message returned
below could not be delivered to one or more destinations.
 
For further assistance, please send mail to <postmaster>
 
If you do so, please include this problem report. You can
delete your own text from the message returned below.
 
   The Postfix program
 
<toto@bidon.fr>: can't create user output file
 
Message/delivery-status
 
Reporting-MTA: dns; mail.bidon.fr
Arrival-Date: Fri, 30 Jul 2004 09:03:31 +0100 (WEST)
 
Final-Recipient: rfc822; toto@bidon.fr
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; can't create user output file


 
 
J'ai alors tenté de créer un fichier .procmailrc sans le script de renvoi de mail :
 

EMAIL=toto@bidon.fr
SHELL=/bin/sh


 
Je reçois le mail retour de postfix !!  :(  
 
Que dois-je faire ?? Y'a-t'il des paramètres à configurer avec Procmail pour qu'il puisse écrire le fichier de l'utilisateur ??
 
Merci par avance !!  :jap:  :jap:  
 

Reply

Marsh Posté le 30-07-2004 à 09:13:33   

Reply

Marsh Posté le 30-07-2004 à 13:14:56    

:bounce: il n'y a aucun utilisateur de procmail ici ?.... :sweat:


Message édité par benj63 le 30-07-2004 à 13:15:06
Reply

Marsh Posté le 30-07-2004 à 13:20:18    

il n'y a pas d'interet à spéficier dans un premier temps le

-m $HOME/.procmailrc

pour la raison simple que procmail les lis automatiquement si ils existent :) (cf man procmail :D )
tu peux en revanche préciser si ils sont en Maildir ou mbox dans ce fichier ( ou directement au niveau du /etc/procmailrc . )
après le $SENDMAIl existe ?

Reply

Marsh Posté le 30-07-2004 à 13:34:37    

mikala a écrit :

il n'y a pas d'interet à spéficier dans un premier temps le

-m $HOME/.procmailrc

pour la raison simple que procmail les lis automatiquement si ils existent :) (cf man procmail :D )
tu peux en revanche préciser si ils sont en Maildir ou mbox dans ce fichier ( ou directement au niveau du /etc/procmailrc . )
après le $SENDMAIl existe ?


 
J'ai ajouté le -m $HOME/.procmailrc car Procmail ne faisait carrément rien du tout sans cette précision ! Je ne comprenais pas pourquoi d'ailleurs, j'avais beau mettre le .procmailrc dans le $HOME des users, procmail ne le trouvait pas (à priori) puisqu'il ne faisait rien.
 
quelle est la différence entre maildir et mbox ?? je peux savoir en quel mode ils sont, si je regarde le main.cf de postfix ?
 
Le $SENDMAIL doit être placé où, et doit avoir quelle valeur ??
 
Merci pour les précisions !!  :jap:

Reply

Marsh Posté le 30-07-2004 à 13:53:02    

c'est bizarre que procmail ne lise pas automatiquement ce fichier (le .procmailrc) ,il est lisible par l'user a qui appartient le répertoire ? car en fait procmail se setuider sous l'user pour lequel il doit déposer le mail donc si ce fichier appartien a root et est en 600 ca risque d'etre effectivement dur pour lui de le lire :)
$SENDMAIl <-- bah il doit contenir le chemin vers ton equivalent binaire sendmail (celui mis en place par postfix lors de son installation ) .
mbox/Maildir .
pour mbox --> man mbox :D
en gros c'est un fichier qui contient tous les mails de l'user . il est classiquement dans /var/spool/mail/user  <-- user étant le nom du fichier et contient les mails de 'user' :D
Maildir --> man Maildir [:ddr555]  
en fait la structure est la totalement différente .
en fait c'est un repertoire ( Maildir ) contenant 3 autres repertoires , cur ,new et tmp .
chaque mail est stocké dans un fichier a part , il est 'plus' sur que le format mbox dans le sens ou quand un mail est dépose , il va dans le tmp/ une fois écris a ce niveau il est déplacé dans new/ , une fois lu il ira dans cur/ .
il est mieux que mbox car il y a notamment pas de lock contrairement a mbox , bref tu peux avoir plusieurs actions en simultanés sur la Maildir il n'y aura pas de blocage , alors que dans un mbox , il faut attendre son tour .
mbox est le format classique des mails sous *nix , et le comportement par défaut de postfix/procmail .
pour spécifier le format utilisé cela dépend du mda choisi :
si tu te sers de local de postfix alors il faut préciser au niveau du main.cf
par le biais de home_mailbox = Maildir/
si tu te sers d'un mda ( cas ou mailbox_command est spécifié )  comme procmail alors il faut le spécifier au niveau de la configuration de ce mda (donc ici procmail )
donc par exemple au niveau du /etc/procmailrc  

Citation :

DEFAULT="$HOME/Maildir/"


comme tu l'auras deviné les Maildir sont dans le $HOME de l'utilisateur et pas dans le /var/spool/mail/ .
 
 
 

Reply

Marsh Posté le 03-08-2004 à 23:24:24    

tiens j ai un pb similaire pour vacation : moi le user recoit son mail mais aucun reply n est envoyé :D


---------------
:: Light is Right ::
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed