2 votes

Erreur avec procmail script pour utiliser le format Maildir

J'ai ce code dans le fichier /etc/procmailrc :

DROPPRIVS=yes

DEFAULT=$HOME/Maildir/

:0
* ? /usr/bin/test -d $DEFAULT || /bin/mkdir $DEFAULT
{ }
:0 E
{
        # Bail out if directory could not be created
        EXITCODE=127
        HOST=bail.out
}

MAILDIR=$HOME/Maildir/

Mais lorsque le répertoire existe déjà, il arrive qu'il renvoie un message d'erreur : 554 5.3.0 unknown mailer error 127 . L'e-mail est toujours délivré, mais il renvoie également un code d'erreur à l'utilisateur qui l'a envoyé.

J'ai corrigé ce problème temporairement en commentant la ligne EXITCODE y HOST mais j'aimerais savoir s'il existe une meilleure solution.

J'ai trouvé ce bloc de code à plusieurs endroits sur le net, mais je n'ai pas vraiment trouvé pourquoi cette erreur me revenait. Cela semble se produire lorsque j'envoie un courriel à un utilisateur local. Parfois, l'utilisateur a un .forward pour le transmettre à d'autres utilisateurs, parfois non, mais le résultat est le même. J'ai également essayé de supprimer DROPPRIVS Il n'y a pas eu de problème avec le transfert, mais cela n'a pas semblé l'affecter.

  • La ligne commençant par * ? /usr/bin/test un problème ?
  • En * signifie une expression rationnelle, mais l'élément ? renvoie une valeur entière, n'est-ce pas ?
  • Quel est le nombre entier qui est comparé ? Ou s'agit-il simplement de comparer la valeur de retour de l'entier ?
  • Faut-il un espace entre les deux blocs ?

Merci pour votre aide.

1voto

mreggen Points 2940

Je parierais sur une sorte de condition de course. Est-ce que cela a de l'importance si vous intégrez la ligne /usr/bin/test dans un petit Shell Shell ? comme :

* ? /usr/local/bin/make-sure-exists-dir $DEFAULT

avec un make-sure-exists-dir qui le fait :

/usr/bin/test -d "$1" || mkdir "$1"

De plus, en regardant la page de manuel de mkdir, -p ne provoque pas d'erreur sur l'existence, donc vous pourriez simplement le faire :

* ? mkdir -p $DEFAULT

0voto

Jhet Points 31

En fait, le Dovecot instructions pour procmail est ce que je cherchais.

# file: /etc/procmailrc
# system-wide settings for procmail
SHELL="/bin/bash"
SENDMAIL="/usr/sbin/sendmail -oi -t"
LOGFILE="/var/log/procmail.log"
DROPPRIVS="yes"
DELIVER="/usr/lib/dovecot/deliver"
# fallback:
DEFAULT="$HOME/Maildir/"
MAILDIR="$HOME/Maildir/"
:0 w
* ^X-Spam-Status: Yes
| $DELIVER -m spam
:0 w
| $DELIVER

Merci pour votre aide.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X