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 odovecot-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:
virtual_transport = dovecot
Em seguida, edite o arquivo master.cf para configurar o pipe do Postfix com o Dovecot:
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.
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:
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:
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:
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.
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.