o procmail está ignorando as configurações do usuário

1

Eu uso o procmail para filtrar e-mails em combinação com o postfix. O procmail é disparado pelo postfix através do comando main.cf mailbox_command

mailbox_command = /usr/bin/procmail -t -a "$EXTENSION"

mas no master.cf

procmail unix    n    n    -    20    pipe
    flags=R user=vmail argv=/usr/bin/procmail -o SENDER=${sender} -m USER=${user} EXTENSION=${extension}

Eu não entendo exatamente, mas parece-me que os dois não são o mesmo comando É possível que esta situação seja a razão pela qual o procmail está ignorando a configuração do usuário no /home/user/.procmailrc?

se dermos uma olhada nos logs do procmail, veremos que

From info@some_spam_domain.com  Sat Mar  1 17:10:24 2014
 Subject: ***** SPAM 27.4 ***** Hi i'm Masha 22 yo. do you have web camera?
  Folder: /usr/lib/dovecot/deliver -m Junk -d hans                       4202

na verdade, ele está usando o dovecot para entregar os e-mails. hans é um usuário e JUNK é uma pasta definida no principal / etc / procmailrc como

DROPPRIVS=no    
DELIVER="/usr/lib/dovecot/deliver"
SPAMORDNER="$DELIVER -m Junk -d $USER"

:0 w
* ^X-Spam-Status: Yes
| $SPAMORDNER

Eu tenho lá no meu procmailcf

DROPPRIVS=no

DROPPRIVS = não funciona com -d, mas desativa o usuário .procmailrc DROPPRIVS = sim procmail forçado para atuar como usuário que tem como resultado que entregar trabalha sem -d e entrega para / var / mail / E aqui chegamos mais perto do ponto que eu não entendo.

ativar o DROPPRIVS parece funcionar apenas se o usuário tiver um .prcocmailrc em sua pasta pessoal, porque eu posso definir lá para entregar para / home / else os e-mails são entregues para / var / mail / e seu formato mbox em vez de formato maildir

Suponho que a solução seria algo como isto (exemplo em pseudocódigo) em / etc / procmailrc

if exist  /home/<username>/.procmailrc
    set DROPPRIVS=yes
else
    set DROPPRIVS=no

como escrevo isso na linguagem do procmail?

    
por user1888089 01.03.2014 / 18:58

1 resposta

0

a solução parece ser esta

TMPFILE="$HOME/.procmailrc"
:0 w
* ?test -f $TMPFILE
{
    DROPPRIVS=yes
}

:0 Ew
* !test -f $TMPFILE
{
    DROPPRIVS=no
}

funciona perfeito, mas parece haver um bug que escreve o seguinte no arquivo de log

procmail: Executing "test -f $TMPFILE"
procmail: Match on "test -f $TMPFILE"
procmail: Assigning "DROPPRIVS=yes"
procmail: Assuming identity of the recipient, VERBOSE=off
procmail: Program failure (75) of "/usr/lib/dovecot/deliver"

Eu não consigo entender quem definiu este VERBOSE = off, porque não está no meu procmailrc parece estar em algum lugar no código de entrega.

de qualquer forma, após esta linha, ele salta corretamente para o usuário .procmailrc e o executa sem falhas. então essa falha parece ser apenas cosmética.

P.S. a melhor maneira de entender um problema é tentar explicar para outra pessoa:))

    
por 02.03.2014 / 22:09