Email Retrieval · 6 min read · Sep 08, 2025

Recuperando Emails de Servidores Remotos Com fetchmail no Debian

Fetchmail é um programa para recuperar emails de servidores remotos. Imagine que você tem cinco contas de email em cinco servidores diferentes. Claro, você não quer se conectar a cada um deles para obter seus emails. É aqui que o fetchmail entra em cena. Se você tem uma conta de usuário em um servidor Linux, pode fazer o fetchmail baixar emails de servidores remotos e colocá-los em apenas uma caixa de entrada (a do seu usuário Linux), de onde você pode recuperá-los com seu cliente de email (por exemplo, Thunderbird ou Outlook).

Ou imagine que você tem uma conta de email em um provedor que não faz filtragem de spam e vírus. Nesse caso, você poderia usar o fetchmail para baixar os emails para seu próprio servidor e filtrá-los através de filtros de spam e vírus (por exemplo, SpamAssassin e ClamAV) antes de baixar os emails com seu cliente de email.

1 Nota Preliminar

Você precisa de um servidor Linux com um usuário do sistema que possa receber emails, o que significa que um MTA como Postfix ou Sendmail deve estar instalado no sistema. Caso contrário, o fetchmail não funcionará, porque ele tenta passar os emails baixados para um MTA (Postfix, Sendmail, …), e o MTA entrega os emails na caixa de entrada do usuário (você pode configurar o sistema para incluir a varredura de spam e vírus nesse processo, por exemplo, com amavisd-new ou procmail, mas isso não é abordado neste tutorial).

Eu uso um sistema Debian neste tutorial onde existem dois usuários chamados falko e till.

2 Instalar fetchmail

Para instalar o fetchmail, tudo o que precisamos fazer é executar

apt install fetchmail

3 Configurar fetchmail

Existem duas maneiras de configurar o fetchmail. Podemos fazê-lo rodar como um daemon com um arquivo de configuração global, ou podemos criar um trabalho cron para executar o fetchmail junto com arquivos de configuração por usuário. Vou descrever ambos os métodos aqui.

3.1 Executar fetchmail Como Um Daemon Com Um Arquivo De Configuração Global

Para fazer o fetchmail rodar como um daemon, precisamos editar /etc/default/fetchmail e definir START_DAEMON como yes:

nano /etc/default/fetchmail
# Este arquivo será usado para declarar algumas variáveis para o fetchmail
#
# Descomente o seguinte se você não quiser mensagens de log localizadas
# export LC_ALL=C

# Declare aqui se queremos iniciar o fetchmail. 'yes' ou 'no'
START_DAEMON=yes

Em seguida, devemos criar o arquivo de configuração /etc/fetchmailrc porque o daemon fetchmail não iniciará se este arquivo não existir. Neste arquivo, podemos especificar como o daemon fetchmail deve se comportar, bem como os detalhes que o fetchmail precisa saber para recuperar emails de contas de email estrangeiras.

Vamos supor que falko tenha duas contas de email das quais queremos recuperar emails:

  • Primeira conta: servidor pop.someprovider.tld, protocolo POP3, nome de usuário [email protected] (sim, o nome de usuário é um endereço de email neste caso), senha secreta.
  • Segunda conta: servidor mail.otherprovider.tld, protocolo POP3, nome de usuário ftimme, senha verysecurepassword.

till tem uma conta de email:

  • Servidor mailin.tillsprovider.tld, protocolo POP3, nome de usuário tbrehm, senha iwonttellyou.

Então nosso arquivo /etc/fetchmailrc poderia ser assim:

nano /etc/fetchmailrc
# /etc/fetchmailrc para modo daemon global
# Este arquivo deve ter chmod 0600, proprietário fetchmail

set daemon        300                # Pool a cada 5 minutos
set syslog                        # log através da instalação syslog
set postmaster  root

set no bouncemail                # evitar perda em erros 4xx
                                # por outro lado, erros 5xx ficam
                                # mais perigosos...

##########################################################################
# Hosts para pool
##########################################################################

# Padrões ===============================================================
# Defina antispam como -1, pois é muito mais seguro usar isso junto com
# no bouncemail
defaults:
timeout 300
antispam -1
batchlimit 100

poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall
poll mailin.tillsprovider.tld protocol POP3 user "tbrehm" there with password "iwonttellyou" is till here keep

No início do arquivo, temos algumas opções globais, como set daemon 300 (o que significa que o fetchmail deve recuperar emails a cada 300 segundos) que controlam a operação do programa. Os significados das opções acima são os seguintes:

  • set daemon: Define um intervalo de polling em segundo plano em segundos.
  • set syslog: Faça o registro de erros através do syslog.
  • set postmaster: Dê o nome do destinatário de email de último recurso (padrão: usuário que executa o fetchmail, “postmaster” se executado pelo usuário root).
  • set no bouncemail: Direcione emails de erro para o postmaster local (de acordo com a opção global “postmaster” acima).

Então temos as opções de servidor e usuário. Essas vão juntas nas linhas que começam com poll; se houver opções que são as mesmas para cada linha de polling, também podemos especificá-las antes das linhas de polling em uma seção que começa com defaults: (como timeout, antispam e batchlimit em nosso exemplo).

  • timeout: Tempo limite de inatividade do servidor em segundos (padrão 300).
  • antispam: Especifique quais retornos SMTP são interpretados como bloqueios de política de spam.
  • batchlimit: Especifique o número máximo de mensagens que serão enviadas para um ouvinte SMTP antes que a conexão seja deliberadamente encerrada e reconstruída (padrão 0, significando sem limite).

As linhas de polling são autoexplicativas; como você vê, o fetchmail recupera emails de ambas as contas de email externas de falko e os coloca em uma conta.

Você notará que as linhas de polling têm diferentes terminações (por exemplo, nofetchall (padrão), fetchall, keep, nokeep). Os significados são os seguintes:

  • nofetchall: Recuperar apenas novas mensagens (padrão). Se nada mais for especificado (por exemplo, fetchall, keep), isso significa nofetchall.
  • fetchall: Buscar todas as mensagens, sejam vistas ou não.
  • keep: Não excluir mensagens vistas do servidor.
  • nokeep: Excluir mensagens vistas do servidor.

Para saber mais sobre todas as configurações de configuração disponíveis, dê uma olhada em

man fetchmail

/etc/fetchmailrc deve ter permissões 600 e deve ser de propriedade do usuário fetchmail, então fazemos o seguinte:

chmod 600 /etc/fetchmailrc  
chown fetchmail /etc/fetchmailrc

Finalmente, podemos iniciar o fetchmail:

/etc/init.d/fetchmail start

Fetchmail deve agora baixar emails e colocá-los nas caixas de entrada de falko e till (usando o MTA). Ele repetirá isso a cada set daemon segundos.

3.2 Usar Arquivos De Configuração Por Usuário E Executar fetchmail Via Cron

Em vez de usar um arquivo de configuração global como mostrado no capítulo 3.1, podemos usar arquivos de configuração por usuário. Estes devem ter o nome .fetchmailrc e devem estar localizados no diretório home do usuário.

Queremos criar tal arquivo para o usuário falko agora. Certifique-se de que você está logado como falko, não como root! Então fazemos isso:

cd ~/  
vi .fetchmailrc
set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret"
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" fetchall

O arquivo parece muito semelhante ao arquivo /etc/fetchmailrc do capítulo 3.1, no entanto, você notará que eu não uso mais a frase is falko here (como .fetchmailrc está no diretório home de falko, o fetchmail sabe que os emails devem ser entregues a falko). Claro, você ainda pode usar is falko here, então o arquivo também poderia ser assim:

set postmaster falko
set bouncemail

poll pop.someprovider.tld protocol POP3 user "[email protected]" there with password "secret" is falko here
poll mail.otherprovider.tld protocol POP3 user "ftimme" there with password "verysecurepassword" is falko here fetchall

Para saber mais sobre todas as configurações de configuração disponíveis, dê uma olhada em

man fetchmail

.fetchmailrc deve ter permissões 600, para que apenas falko possa ler/escrever nele:

chmod 600 ~/.fetchmailrc

É isso. Agora falko pode iniciar o processo de recuperação executando

fetchmail

ou

fetchmail -v

que mostra o que está acontecendo.

Claro, falko não quer iniciar a recuperação manualmente a cada poucos minutos, então criamos um trabalho cron para ele. Ainda como o usuário falko, executamos

crontab -e

e criamos um trabalho cron como este (que iniciaria o fetchmail a cada cinco minutos):

*/5 * * * * /usr/bin/fetchmail &> /dev/null

4 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.