Email Retrieval · 5 min read · Jan 01, 2026

Recuperando Emails de Servidores Remotos Com getmail (Debian Etch)

Recuperando Emails de Servidores Remotos Com getmail (Debian Etch)

Versão 1.1
Autor: Falko Timme

Getmail é um programa para recuperar emails de servidores remotos; é muito semelhante ao fetchmail, mas mais flexível. Por exemplo, pode ser configurado para entregar emails diretamente em um Maildir ou caixa de correio mbox sem a necessidade de um MTA como Postfix, mas, claro, também pode passar os emails por um MTA se você quiser. Getmail pode usar filtros chamados como SpamAssassin e ClamAV para escanear os emails, e você pode até dizer ao getmail para deletar emails no servidor original apenas após um certo número de dias.

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Eu testei o getmail em um sistema Debian Etch com um usuário local chamado falko que tem o endereço de email local [email protected].

2 Instalar getmail

Para instalar o getmail, tudo que precisamos fazer é executar

apt-get install getmail4

como root.

3 Configurar getmail

Getmail pode ser configurado através de arquivos de configuração por usuário, e o getmail pode então ser executado por esse mesmo usuário. Para fazer o getmail rodar automaticamente, podemos criar um trabalho cron para esse usuário.

Neste capítulo, estou assumindo que você está logado como o usuário falko, não como root!

Getmail está procurando o arquivo de configuração ~/.getmail/getmailrc, então primeiro precisamos criar o diretório ~/.getmail com permissões de 0700:

mkdir -m 0700 ~/.getmail

Então, criamos o arquivo de configuração ~/.getmail/getmailrc. Um arquivo getmailrc deve ter pelo menos uma seção [retriever] e uma seção [destination].

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Maildir path = ~/Maildir/ |

O exemplo acima assume que falko tem uma conta de email com o nome de usuário [email protected] e a senha secret no servidor pop.someprovider.tld, e que ele tem uma conta Maildir neste servidor, com ~/Maildir/ sendo seu diretório Maildir.

Isso já é suficiente para configurar o getmail. falko agora poderia recuperar emails do servidor remoto simplesmente executando

getmail

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 getmail a cada cinco minutos):

| */5 * * * * /usr/bin/getmail &> /dev/null |

Agora vamos supor que falko não tenha uma conta Maildir, mas uma conta mbox neste servidor (/var/mail/falko). Tudo que precisamos fazer é modificar a seção [destination] em ~/.getmail/getmailrc, por exemplo, assim:

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Mboxrd path = /var/mail/falko |

No próximo exemplo, queremos passar os emails que recuperamos do servidor remoto através de um MTA como Postfix (presumo que o Postfix já esteja instalado e funcionando). O Postfix pode então cuidar de entregar os emails para Maildir ou mbox, e também pode invocar scanners de spam e vírus, por exemplo, através do amavisd-new.

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = MDA_external path = /usr/sbin/sendmail arguments = ("-i", "-bm", "[email protected]") unixfrom = true |

(Como você vê, dizemos ao getmail que o endereço de email local de falko é [email protected].)

O switch -i na linha de argumentos é importante (obrigado a Chris Moules pela dica):

*O problema é que alguns emails, quando entregues ao sendmail, serão truncados. Isso pode acontecer quando o corpo da mensagem puxada da fonte contém uma linha com um único ponto (.). No SMTP, isso é usado para indicar o fim da mensagem. Ao invocar o sendmail na linha de comando, o padrão é terminar a mensagem no EOF ou em um único ponto.

Citação da página de manual do sendmail do Postfix:

Por padrão, o sendmail(1) do Postfix lê uma mensagem da entrada padrão até EOF ou até que leia uma linha com apenas um caractere de ponto (.), e organiza a entrega.

Citação da página de manual do sendmail:

Sem flags, o sendmail lê sua entrada padrão até um fim de arquivo ou uma linha que consiste apenas em um único ponto e envia uma cópia da mensagem encontrada lá para todos os endereços listados.

Eu recebi avisos de clientes de que, ocasionalmente, seus emails estavam ‘corrompidos’, ‘faltando’ ou ‘truncados’. Depois de olhar as mensagens em nosso servidor e o que estava em seu sistema de email, ficou claro que havia um problema.

Uma pequena pesquisa mostrou que o sendmail local precisava ser invocado com a opção ‘-i’:

Citação da página de manual do sendmail do Postfix:

-i Ao ler uma mensagem da entrada padrão, não trate uma linha com apenas um caractere de ponto (.) como o fim da entrada.

Isso faz com que o sendmail espere até o fim do arquivo até que a mensagem seja submetida.*

Você pode testar o switch -i com um email como o seguinte:

---
Quatro:
....
Três:
...
Dois:
..
Um:
.
---

3.1 Opções

Também podemos adicionar uma seção [options] ao ~/.getmail/getmailrc onde podemos mudar o comportamento padrão do getmail, por exemplo, assim:

vi ~/.getmail/getmailrc

| [...] [options] verbose = 1 read_all = false delete = true message_log_syslog = true |

As opções acima dizem ao getmail para imprimir mensagens sobre emails recuperados, para recuperar apenas novos emails, para deletar emails do servidor remoto após a recuperação, e para registrar no syslog.

Se você gostaria de deletar apenas emails mais antigos que dez dias, poderia mudar a seção [options] da seguinte forma:

vi ~/.getmail/getmailrc

| [...] [options] verbose = 1 read_all = false delete_after = 10 message_log_syslog = true |

Você pode aprender mais sobre todas as opções disponíveis em http://pyropus.ca/software/getmail/configuration.html#conf-options.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.