Introdução
Fetchmail é uma ferramenta consolidada para recuperar e-mails de servidores externos (POP3/IMAP) e entregá-los a um servidor local (geralmente Postfix + Dovecot). Em ambientes onde múltiplas contas precisam ser sincronizadas, configurar fetchmail para trabalhar com várias contas e automatizar a tarefa via cron é essencial.
Este post detalha:
- Configuração para múltiplas contas remotas
- Integração com Postfix/Dovecot via MDA (Mail Delivery Agent)
- Automação com cron para execução periódica
- Explicação do uso do comando
sendmailno contexto do fetchmail
Pré-requisitos
- Servidor Linux com Postfix e Dovecot configurados e funcionando
- Usuário local para receber as mensagens
- Credenciais e servidores das contas remotas
1. Instalação do Fetchmail
apt update
apt install fetchmail
2. Configuração para múltiplas contas
O arquivo principal é o .fetchmailrc do usuário que vai rodar o fetchmail (normalmente root ou um usuário dedicado).
Exemplo de .fetchmailrc com duas contas:
poll imap1.exemplo.com protocol IMAP:
user "[email protected]" password "senha1" is "localuser1" here
ssl
mda "/usr/sbin/sendmail -i -f %F %T"
options fetchall
poll pop3.exemplo.net protocol POP3:
user "[email protected]" password "senha2" is "localuser2" here
ssl
mda "/usr/sbin/sendmail -i -f %F %T"
options fetchall
Explicação:
- poll — endereço do servidor remoto com protocolo e porta
- user / password — credenciais da conta remota
- is “localuser” here — entrega local para o usuário no sistema (usuário que tem mailbox ou maildir configurado no Dovecot/Postfix)
- ssl — conexão segura (recomendado)
- mda — encaminha o e-mail para o MTA local (Postfix via sendmail)
- options fetchall — força o download de todos os e-mails não baixados
3. Entendendo o uso do comando sendmail no fetchmail
Embora o nome sendmail remeta ao antigo daemon SMTP, no contexto do fetchmail, o comando:
mda "/usr/sbin/sendmail -i -f %F %T"
não é o daemon clássico “sendmail”, mas sim o binário compatível que o Postfix disponibiliza para receber e-mails localmente.
Por que usar esse comando?
- Ele recebe a mensagem do fetchmail e a insere na fila do Postfix para entrega local, respeitando as configurações de mailbox e usuários.
- É um padrão UNIX amplamente suportado por vários MTAs modernos, garantindo compatibilidade.
- Evita a necessidade de configurar um agente de entrega separado (como procmail ou dovecot-lda), simplificando o setup.
Alternativas
Se desejar, é possível usar outros MDAs, como:
procmailmaildropdovecot-lda(entrega direta pelo Dovecot)
Essas opções podem oferecer funcionalidades adicionais, como filtragem avançada, mas exigem configuração extra.
4. Permissões
Como o arquivo .fetchmailrc contém senhas em texto claro, proteja-o adequadamente:
chmod 600 ~/.fetchmailrc
chown usuario:usuario ~/.fetchmailrc
5. Automação com cron
Para automatizar o processo de download de e-mails, use o cron:
Exemplo para rodar a cada 5 minutos:
*/5 * * * * /usr/bin/fetchmail -s -f /caminho/para/.fetchmailrc
-ssilencia a saída para não poluir logs-findica o arquivo de configuração, caso não esteja no padrão
Edite o crontab com:
crontab -e
6. Integração com Postfix e Dovecot
O fetchmail entrega os e-mails para o Postfix via o comando sendmail (binário compatível). O Postfix então entrega os e-mails para os usuários locais, armazenando-os na mailbox ou maildir conforme configuração.
O Dovecot é o responsável pelo acesso IMAP/POP dessas mailboxes aos usuários finais.
7. Debug e logs
Para testar manualmente e obter saída detalhada:
fetchmail -v -f /caminho/para/.fetchmailrc
Para acompanhar logs do sistema:
tail -f /var/log/mail.log
Considerações finais
Fetchmail continua sendo uma solução estável e eficiente para integrar múltiplas contas remotas em um servidor local com Postfix e Dovecot. Sua simplicidade e compatibilidade o tornam uma excelente opção para ambientes Linux tradicionais.
