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 getmail4como 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 ~/.getmailEntã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
getmailClaro, 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 -ee 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.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.