Skip to main content


Formas de entregar e-mails ao Dovecot


Ao configurar um servidor de e-mail, é comum utilizar o Postfix para processar mensagens SMTP e o Dovecot para a entrega e acesso a e-mails via IMAP/POP3. O Postfix pode atuar como um relay na frente do Dovecot, garantindo uma entrega eficiente das mensagens. Existem duas formas principais de entregar e-mails ao Dovecot:

  • Usando dovecot-lda (Local Delivery Agent)
    O Postfix entrega e-mails ao Dovecot via pipe, usando o dovecot-lda. Isso pode ser problemático porque cada e-mail exige um novo processo, causando sobrecarga. Além disso, e-mails com múltiplos destinatários precisam ser entregues várias vezes.

  • Usando LMTP (Local Mail Transfer Protocol)
    O Postfix entrega os e-mails ao daemon LMTP do Dovecot (Este é o método recomendado). Esse método é mais eficiente porque evita criar novos processos para cada entrega. O LMTP permite uma comunicação bidirecional, fornecendo feedback adequado ao Postfix.



Entrega via dovecot-lda


O dovecot-lda (Local Delivery Agent) é um programa do Dovecot responsável por receber e-mails via pipe do Postfix e armazená-los na caixa de correio do usuário. Ele era anteriormente chamado de deliver, e algumas documentações ainda fazem referência a esse nome​.


Para configurar esse método de entrega, primeiro edite o arquivo main.cf do Postfix:

/etc/postfix/main.cf
virtual_transport = dovecot

Em seguida, edite o arquivo master.cf para configurar o pipe do Postfix com o Dovecot:

/etc/postfix/master.cf
dovecot   unix  -       n       n       -       -       pipe
flags=ODRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -e -f ${sender} -d ${recipient}

O nome dovecot no início da configuração acima deve ser exatamente o mesmo que está definido em virtual_transport.


cuidado

O uso de dovecot-lda apresenta diversas limitações, como a criação de novos processos para cada entrega, aumentando a carga no servidor. Recomendo fortemente a utilização do LMTP, que é mais eficiente e permite melhor gerenciamento de múltiplos destinatários e quotas.



Entrega via LMTP


O LMTP (Local Mail Transfer Protocol) é um protocolo otimizado para entrega de e-mails localmente, funcionando de forma semelhante ao SMTP, mas com comunicação mais eficiente entre o Postfix e o Dovecot. O uso do LMTP é altamente recomendado, pois evita a criação de novos processos para cada e-mail e permite melhor gerenciamento de múltiplos destinatários.


Para configurar a entrega via LMTP, primeiro edite o arquivo main.cf do Postfix:

/etc/postfix/main.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp

Em seguida, edite o arquivo master.cf, caso o Postfix esteja configurado para tratar a entrega via um serviço separado:

/etc/postfix/master.cf
lmtp      unix  -       -       y       -       -       lmtp

As opções usadas acima são:

  • lmtp: Nome do serviço.
  • unix: Tipo de transporte (socket UNIX, em vez de TCP/IP).
  • -: Não há limite de processos.
  • -: Não roda como root.
  • y: Usa chroot.
  • -: Sem limite de tempo.
  • -: Sem limite de conexões simultâneas.
  • lmtp: O Postfix usará o binário LMTP para entrega.

Agora, edite o arquivo 10-master.conf do Dovecot para habilitar o serviço LMTP:

/etc/dovecot/conf.d/10-master.conf
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}

O nome definido em virtual_transport (dovecot-lmtp) no Postfix precisa ser o mesmo que o configurado no unix_listener do Dovecot para que a comunicação ocorra corretamente.


Cuidado com o nome do socket

Não atribua o mesmo nome de socket duas vezes! O Postfix já usa /var/spool/postfix/lmtp (configurado em master.cf) para seu próprio serviço LMTP interno. Se o Dovecot tentar usar o mesmo nome, haverá um conflito. Para evitar isso, use um nome diferente, como /var/spool/postfix/private/dovecot-lmtp, e configure o Postfix para usá-lo corretamente.


Portanto, o nome configurado no master.cf do Postfix deve ser diferente do nome configurado no unix_listener do Dovecot e no virtual_transport do Postfix.