Dovecot: Implementando auditoria para caixas postais e mensagens

Olá ! Certamente um recurso muito interessante para servidores IMAP ou POP é a possibilidade de auditar as operações que estão sendo efetuadas nas caixas postais e mensagens.

No Dovecot é possível implementar essa auditoria através do Plugin Mail Logger (http://wiki2.dovecot.org/Plugins/MailLog):

Captura de tela de 2015-03-06 10:17:45

Conforme a imagem acima, as seguintes operações podem ser auditadas:

  • Aplicando e removendo a flag \Deleted
  • Expunge
  • Copiando mensagens para outra pasta (também se aplica para mover)
  • Criação de pastas
  • Remoção de pastas
  • Renomear pastas
  • Qualquer modificação nas flags
  • Armazenamento

Você pode habilitar o plugin para todos os serviços ou em um serviço específico através da entrada abaixo:

mail_plugins = $mail_plugins mail_log notify

O plugin notify é requerido para se aplicar o plugin mail_log, portanto, certifique-se que também o habilitou.

Agora você pode configurar o que deve se logado e quais campos devem ser considerados:

plugin

{
# Operação para logar
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename flag_change save mailbox_create

# Informações da mensagem que devem ser apresentadas no log
mail_log_fields = uid box msgid size from subject flags vsize

}

A sintaxe utilizada neste artigo é para versões 2.X do Dovecot.

Referências:

http://wiki2.dovecot.org/Plugins/MailLog

Dovecot: Habilitando o protocolo LMTP para entrega de mensagens

Olá ! O Dovecot ( http://http://dovecot.org ) é um servido POP/IMAP livre muito utilizado e muitas pessoas entram em contato querendo orientações sobre como efetuar entregas para o Dovecot ao implementa-lo em um servidor dedicado, ou seja, um cenário onde os serviços de SMTP e POP/IMAP estão em servidores diferentes.

Para que a entrega seja possível, é necessário habilitar o protocolo LMTP:

LMTP é concebido como uma alternativa para SMTP normal para situações onde o lado de recebimento não tem uma fila de correio, como um servidor de armazenamento de correio agindo como um Mail Delivery Agent. Filas de correio são um requisito inerente de SMTP. Em situações em que isso não é possível, isso é desejável uma vez que um servidor de armazenamento de e-mail deve gerir apenas o seu arquivo de correio sem a necessidade de alocar mais o armazenamento de uma fila de mensagens. Isso não é possível com o SMTP quando há vários destinatários de uma mensagem de email. SMTP só pode indicar a entrega de sucesso ou fracasso para todos ou nenhum dos destinatários, criando a necessidade de uma fila separada para lidar com os destinatários falhou. LMTP, por outro lado, pode indicar o sucesso ou fracasso para o cliente para cada destinatário, permitindo ao cliente para lidar com as filas em vez disso. O cliente, neste caso normalmente seria um voltado para a Internet gateway de correio. LMTP não se destina a uso em redes de área ampla.

Fonte: http://pt.wikipedia.org/wiki/Local_Mail_Transfer_Protocol

Para habilitar este protocolo no Dovecot, abra o seu arquivo de configuração e procure pela entrada “protocols” e adicione o protocolo “lmtp”:

protocols = imap pop3 lmtp

Agora, adicione as diretivas para este protocolo:

service lmtp {
inet_listener lmtp {
address =  127.0.0.1 ::1 IP_REDE
port = 24
}

Feito isso, reinicie o Dovecot e o serviço LMTP irá estar habilitar para receber entrega de mensagens, escutando na porta 24.

Dovecot: Adicionando mais informações na entrega da mensagem

Olá ! Esta dica é para quem utiliza o Dovecot e deseja aumentar a rastreabilidade das mensagens entregues. Por padrão, ao entregar a mensagem na caixa postal do usuário o Dovecot registra somente com as informações como no exemplo abaixo:

lda(joao@laboratorio.com.br): Info: msgid=<d3eeda6273fd6200692be138668e43fd@laboratorio.com.br>: saved mail to INBOX

Muitas vezes o ID da mensagem (msgid) não é suficiente para rastrear a mensagem e certamente ter informações como o remetente e o assunto ajuda muito.

Para incluir estas informações na entrega, configure o parâmetro deliver_log_format conforme abaixo:

deliver_log_format = from:%f msgid:%m subject:%s action:%$ 

Desta forma, para todas as entregas o Dovecot irá registrar, nesta ordem: Remetente, ID da Mensagem, Assunto e ação aplicada.

Exemplo:

lda(joao@laboratorio.com.br): Info: from:joao@dextermatriz.com.br msgid:<1817fc98bb0f6b64372aea33184718fa@laboratorio.com.brr> subject:Novo teste action:saved mail to INBOX

Dovecot: userdb reply doesn’t contain uid (change userdb socket permissions)

Olá ! Essa dica é para quem está implementando ou atualizando o Dovecot e seu MTA não está conseguindo entregar mensagens para o mesmo.

Caso esteja recebendo a mensagem abaixo:

userdb reply doesn’t contain uid (change userdb socket permissions)

As duas soluções possíveis são:

1 – Alterar a permissão do socket para 0666

Como fica a configuração:

service auth {

unix_listener auth-userdb {

mode = 0666

}

 

2 – Alterar o proprietário do arquivo para  o usuário que está executando o Dovecot

Como fica a configuração:

service auth {

unix_listener auth-userdb {

user = vmail

group = vmail

}

 

Dovecot: Mover SPAM automaticamente para a pasta desejada

Quem implementa uma solução anti-spam em seu ambiente, certamente pode desejar mover automaticamente as mensagens marcadas como SPAM  para uma pasta específica do usuário, muitas vezes isto é feito através do Procmail, porém é possível efetuar essa configuração diretamente no Dovecot (Se o estiver utilizando para armazenamento das caixas postais, obviamente), não sendo necessário incluir mais um componente no ambiente.

No Dovecot essa configuração é possível utilizando o serviço SIEVE ( para mais informações: http://wiki.dovecot.org/LDA/Sieve), assumindo que você já o tenha configurado no seu Dovecot, basta modificar a diretiva plugin incluindo a linha abaixo:

plugin {

sieve_global_path = /var/lib/dovecot/default.sieve

}

O script que irá mover as mensagens marcadas como SPAM automaticamente é este, portanto você deve alterar o arquivo configurado no sieve_global_path da seguinte forma:

require [“fileinto”];

# rule:[Move Spam to Junk Folder]
if header :is “X-Spam-Flag” “YES”
{
fileinto “Spam”;
stop;
}

Caso deseje mover para uma outra pasta, como Junk que é muito utilizada, basta substituir o nome da pasta após o fileinto.