Como forçar o maildrop a ser executado como o usuário e grupo especificado do Postfix

3

Eu substituí o Postfix LDA pelo maildrop. O script maildroprc que estou usando também cria as pastas da caixa de correio, caso elas não existam.

No meu /etc/postfix/master.cf eu defini o serviço maildrop

maildrop  unix  -       n       n       -       -       pipe
   flags=ODRhu user=vmail:daemon argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop}
   ${extension} ${recipient} ${user} ${nexthop}

Quando este script cria uma pasta para uma conta, a pasta e os arquivos dentro dela pertencem ao grupo "daemon" e o Courier IMAP não quer ler o conteúdo da pasta porque espera que username: group seja vmail: vmail.

Se eu alterar a definição de serviço para maildrop em master.cf para ser "vmail: vmail" recebo um erro de maildrop

ERR: authdaemon: s_connect() failed: Permission denied Invalid user specified.

e o e-mail não pode ser entregue. Eu acho que isso é devido ao maildrop precisar de acesso ao / var / run / courier / authdaemon que é de propriedade do grupo "daemon". Mas eu realmente não entendo porque maildrop precisa acessar a pasta authdaemon.

A parte do script maildrop que cria a pasta:

'test -e $HOME_DIR/$HOST/$USER'
#log "Testing for $HOME_DIR/$HOST subdirectory: result=$RETURNCODE"
# Only continue if directory does NOT exist
if ($RETURNCODE != 0)
{
        log "MailDir $HOME_DIR/$HOST/$USER does NOT exist"
        'test -e $HOME_DIR/$HOST'
        if ( $RETURNCODE != 0 )
        {
                log "Creating $HOME_DIR/$HOST"
                'mkdir $HOME_DIR/$HOST'
                'chmod -R 0700 $HOME_DIR/$HOST'
        }

        # Create users MailDir
        'maildirmake $HOME_DIR/$HOST/$USER'
}

Eu até tentei adicionar chown vmail:vmail $HOME_DIR/$HOST/$USER ao script para ser executado depois de criar o maildir, mas a pasta ainda pertence ao grupo "daemon".

EDITAR:

Estou usando o pacote maildrop 2.0.4 do repositório Debian Lenny (5.0) e, a julgar pela informação do pacote, ele é compilado com o autenticador courier authlib

Version: 2.0.4-3
Replaces: courier-base (<= 0.58.0-1)
Depends: courier-authlib, exim4 | mail-transport-agent, libc6 (>= 2.7-1), libgcc 1 (>= 1:4.1.1-21), libgdbm3, libpcre3 (>= 7.4), libstdc++6 (>= 4.2.1-4)
    
por Goran Jurić 25.10.2009 / 15:26

1 resposta

5

Isso é o que eu encontrei:

When using the standalone maildrop build with courier-authlib, one of the following configurations must be used:

  • Your mail server must invoke maildrop as the root user (the -d flag reads the mail account's uid and gid, then drops root) .
  • Manually change the permissions on the maildrop binary to be setuid root.
  • Manually change the permissions on the courier-authlib's socket directory (/usr/local/var/spool/authdaemon by default) to be globally readable or executable.

A mudou a propriedade do grupo na pasta / var / run / courier / authdaemon de "daemon" para "vmail" e tudo funciona bem agora. Eu reiniciei o courier-authdaemon e ainda posso acessar a minha conta IMAP (eu acho que esta biblioteca também é usada quando o Courier id procura contas de usuário e senha).

Existe uma implicação de segurança de fazer isso que eu deveria estar ciente?

Eu acho que não. O vmail do usuário não tem uma conta local na caixa e alguém no grupo de vmail pode acessar todos os e-mails na caixa. Proteger as senhas não parece grande coisa se meu sistema já foi comprometido assim:)

    
por 26.10.2009 / 00:31

Tags