fetchmail - transferir e-mail para servidor local.

Atualizado em: 07/02/2008



Sobre este documento

Alguns comandos, modelos, indicações e dicas utilizados na configuração e manutenção do Fetchmail

Os comandos e dicas podem não atender as suas necessidades ou não ser compatível com sua instalação, tente adaptar ao seu ambiente.

Ambiente gráfico.

Neste tutorial as configurações, comandos e manutenção tem indicação para uso em modo texto, pesquise sobre o uso do ssh -X, interface gráfica remota, em lugar de usar o editor indicado "vi", use seu editor preferido, pode ser qualquer um da inerface gráfica, tem que salvar em modo texto puro.

webmin tem modulo fetchmail, acesse via navegador, clique na aba de menu (Servidores), procure por (Fetchmail Mail Retrieval)

Fetchmail - o que é?, como funciona?

O Fetchmail busca mensagens de e-mail em outro servidor, transfere (faz download) de e-mail de outros servidores para o servidor local, trabalha em conjunto com MTA, como exemplo o Postfix, ideal para transferir as mensagens de e-mail de provedores externos para o servidor de e-mail local.

Fetchmail não envia e-mail, não é cliente de e-mail, não entrega mensagens para os cliente de e-mail, nem recebe e-mail, somente pega as mensagens no provedor e entrega para um MTA, como exemplo Postfix, o resto requer outros pacotes, para ler as mensagens requer um cliente de e-mail, pode ser webmail ou cliente de e-mail que baixe as mensagens do servidor local para estação, neste caso requer ou servidor POP ou IMAP para entrega das mensagens, como pode notar, um servidor de e-mail requer diversos programas, cada um fazendo sua parte, Fetchmail faz somente a transferencia do provedor externo para o MTA interno.

Suporta os protocolos POP, POP3, IMAP e muitos outros, não é um cliente de e-mail mas busca as mensagens de forma bem semelhante, a diferença consiste em baixar as mensagens e entregar para o MTA local, permite configurar diversos servidores e contas remotas, faz a entrega na conta local conforme a configuração.

O Fetchmail baixa as mensagens e salva no arquivo, /var/spool/mail/usuariolocal ou outro local conforme o MTA, Onde usuariolocal tem que ser um usuário da maquina e será indicado nas configurações do fetchmail.

O intervalo de tempo é definido em segundos ou se preferir use crontab para executar nos intervalos desejados.

Com as mensagens no servidor local pode passar antivirus, anti spam e outras ferramentas de controle de e-mail.

Muitas vezes precisamos de controle mais refinado no recebimento de mensagens, aplicar filtros, anti-virus e outras regras, serviços que muitos sites que hospedam páginas e servidores de e-mail não oferem ou não atendem às necessidades, podemos montar um servidor local e aplicar os controles desejados.

Servidor de e-mail envolve varios pacotes, por exemplo o Postfix, ele recebe mensagens enviadas a ele diretametne mas não busca as mensagens em outro servidor (provedor externo), então resta duas opções, tornar ele o servidor único e pedir para quem administra o dominio fazer o redirecinamento do MX para a maquina interna que automaticamente assume todo o serviço de recebimento e entrega de e-mail, antes de pedir isto, considere que a maquina precisa ficar no ar o tempo todo, tudo será concentrado nela, inclusive ataques e tentativas de usa-la para spam, estude o consumo de banda e outros detalhes.

Quem não domina administração de servidores de e-mail, acho uma boa opção iniciar com a montagem de um servidor interno, faça testes com contas criadas para testes, IG, GMAL ou crie contas de testes no seu provedor, mantenha o servidor externo onde hospeda a página, não altere nada no provedor, ele nem precisa ficar sabendo que voce tem um servidor interno, simplesmente monte um servidor interno e use o fetchmail para transferir (baixar) todas as mensagens. O fetchmail baixa as mensagens como um cliente de e-mail qualquer, faz a entrega ao Postfix ou outro MTA e demais aplicativos de controle...

Não tem uma configuração aplicável a todos os provedores, não perca tempo pedindo ajuda para configurar o fetchmail, sempre que tentei obter ajuda no suporte de varios provedores, nas páginas de ajuda não tem informação alguma, em contato telefonico os atendentes sempre com a resposta padrão:

"não conhecemos este seu programa (fetchmail), insistem que voce deve fazer o acesso pelo browser, (webmail) querem mostrar que sua conta de e-mail está OK.

Não adianta argumentar que preciso baixar as mensagens via Fetchmail, que funciona com outros provedores, em resumo, a resposta é sempre a mesma, parece uma gravação, "por favor acesse pelo navegador", "pela página da web ou Outloock" querem mostrar que o sistema deles está Ok e o problema está no seu programa, como você pode ver, tudo esta funcionando, não conhecemos este seu cliente de e-mail nem damos suporte.

Toda a minha insistencia para resolver este problema foi inútil, nestas horas me sinto conversando com uma maquina, sempre aquela resposta padrão, não damos suporte a este tipo de programa, o problema é no teu programa e por aí vai.......

Neste documento tem diversos modelos de configuração para diversos provedores, caso o teu não esteja na lista, vai ter que adaptar, com um pouco de tentativas de erro e acerto, testando uma por uma vai conseguir.

Caso descubra outras soluções, outros programas que faz o mesmo serviço do fetchamil, outras configurções, por favor, envie a solução pro FAQ, envie para zagolinux@uol.com.br e menciona em algum lugar da menagem "pro FAQ", copia destas mensagens vão para o arquivo fetchmail.txt (neste diretório). A comunidade agradece.

Instalar Fetchmail

Este pacote está presente na maioria das distro, procure no seu gerenciador de pacotes pelo (fetchmail)

A seguir alguns exemplos de instalação em algumas distribuições.

Criar arquivo de configuração .fetchmailrc

Este arquivo requer um cuidado muito especial, deve impedir o acesso de pessoas não autorizadas, lembre que contém as senhas em formato texto, quem tiver acesso a este arquivo consegue pegar as senhas das contas de e-mail

Não encontrei maneira de criptografar este arquivo, a solução adotada foi com permissões via chmod.

Baixar e-mails de provedor externo, além de instalar, precisa configurar o fetchmail, ele não vem com um arquivo de configuração, precisa criar com os dados do usuário, de preferencia no home do usuário, como vou utilizar varias contas em provedores diferentes, optei por colocar este arquivo no home do root e protejer o acesso deste arquivo, evitar que usuário comum tenha acesso para pegar as senhas.

Este arquivo tem que ter o nome: .fetchmailrc, veja copia do modelo que tem no site da Conectiva:

      set logfile "/var/log/fetchmaillog"
      set postmaster ""
      set daemon 123
      set bouncemail
      poll [provedor_internet] proto POP3
         user [usuário] password "[senha]" is [usuário_local] here

Exemplo com root.

No home do root (diretório do root), use seu editor preferido para criar o arquvivo .fetchmailrc, ou com "vi"

    cd ~
    vi .fetchmailrc

pressione insert pra entrar no modo inserção digite as linhas de configuração ou copie de outra instalação ou até mesmo dos modelos deste documento e faça os ajustes, altere os dados necessários, depois salve, pressione ESC SHIFT+:, :wq

Ajustar a permissão e executar;

    chmod 710 .fetchmailrc
    fetchmail

prontinho..., acompanhe as mensagens no log;

tail -f /var/log/fetchmaillog

Neste documento tem mais dicas para testar o funcionamento.

Iniciar, executar - Intervalo de tempo ou agendar (crontab)

Embora não seja recomendável, pode executar como root, dentro do home do root, o comando:

fetchmail -a

  cd /root
  fetchmail -a

o parametro (set daemon 300) dentro do arquivo .fetchmailrc indica o tempo em segundos que o fetchmail vai buscar as mensagens no provedor, 300 = 5 minutos, ajuste o tempo conforme sua necessidade.

Quem usar esta opção deve iniciar o fetchmail toda vez que ligar ou reiniciar o micro, pode facilitar com uma entrada no crontab para executar de tempos em tempos, quando optar pelo crontab deverá remover o parametro (set daemon 300) das configurações do fetchmail e configurar no crontab o tempo desejado.

Como configurar o crontab pra executar o fetchmail a cada 5 minutos, em um terminal como root, execute:

crontab -e

este comando vai abrir o editor vi, basta pressionar a tecla INSERT e digitar a linha abaixo:

*/5 * * * * fetchmail -a

depois pressione a tecla ESCAPE, depois a tecla SHIFT+: e depois wq pra gravar e sair :wq

Alguns comandos úteis:

crontab -l - Lista as tarefas agendadas

crontab -e - Editar o agendador de tarefas, incluir, alterar ou remover entradas.

Outras opções e mais sobre o cron, crontab, agendador de tarefas e etc.. veja em:

http://www.zago.eti.br/agenda.txt

SUSE 10.1

Tem o pacote do fetchmail no CD de instalação, use seu gerenciador de pacotes ou via smart basta executar;

smart install fetchmail

Automaticamente cria uma entrada para chkconfig com todas opções off

Reiniciei a maquina e passou a baixar as mensagens, ainda não procurei na configuração, em um teste, criei o .fetchmailrc no /root e entrei no webmin para testar a configuração, acabei desistindo por falta de tempo, quando liguei a maquina em outro dia, baixou as mensagens normalmente, pelo chkconfig está desabilitdado, neste script /etc/init.d/fetchmail não encontrei dados da conta nem chamada para minha configuração. preciso descobrir se foi configuração do webmin ou de outro script que está iniciando e de onde está pegando os dados.

Minha configuração para baixar mensagens do IG.

  cd ~
  cat .fetchmailrc
      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop3.ig.com.br proto POP3 user zago_hard password minhasenha is zago here
  
  ls -la .fetchmailrc
  -rwx--x--- 1 root root 200 May  7 06:41 .fetchmailrc

Neste tutorial tem mais exemplos para outros provedores.

Conectiva 9 e 10

Tem o pacote do fetchmail no CD de instalação, basta executar;

apt-get install fetchmail

Criar o arquivo de configuração, procure no menu pelos exemplos conforme o provedor.

No FAQ (fetchmail.txt) tem mais dicas.

modelos de configuração por provedor

UOL

Meu .fetchmailrc para baixar e-mail da conta: antoniofzago@uol.com.br e salvar em /var/spool/mail/zago:

cat .fetchmailrc

      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop3.uol.com.br proto POP3 user antoniofzago password minhasenha is zago here

Terra + UOL + IG

Modelo para baixar mensagens de diversos provedores e contas diferentes.

cat /root/.fetchmailrc

      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop3.ig.com.br proto POP3 user zago_hard password senhadoxxxx is zago here
      poll pop3.uol.com.br proto POP3 user antoniofzago password senhadoxxxx is zago here
      poll pop3.bra.terra.com.br with proto POP3
         user zagoteste there with password senhadoxxxx is zago here
         user zagorede there with password senhadoxxxx is zago here

Nesta configuração estão incluidos os provedores IG, UOL e TERRA, observe que o provedor Terra tem um parametro a mais, tem o parametro "bra" utilizado em contas de e-mail dos assinantes do plano speedy business, quem assina speedy home ou conexão discada, deve usar outras opções, é a mesma utilizada no cliente de e-mail, para São Paulo é spo para Speedy home, veja como configurou no seu cliente de e-mail ou procure no site deles, no suporte pelo atentimento telefonico. Quando configurei minha conta, o suporte informou que este parametro é obrigatorio.

OBS IG

Dica envia por Hélio.

O serviço do email do ig passou a funcionar com o software da google, por isso sugiro que altere no seu tutorial as dicas de fetchmail para quem usa email do ig.com.br.

Usei as dicas que v. deu para o gmail nas minhas contas ig e aí elas passaram a funcionar corretamente.

abs Hélio

Yahoo

Por default as configurações do Yahoo são para acessar as mensagens somente via webmail, antes de usar um cliente de e-mail precisa acessar a página do Yahoo e selecionar a opção POP, para o provedores o fetchmail funciona como um cliente de e-mail POP.

O Fetchmail trabalha como um cliente de e-mail para baixar as mensagens, portanto, se ainda não fez a opção por POP, então acesse:
http://help.yahoo.com/help/br/mail/pop/
http://help.yahoo.com/help/br/mail/pop/pop-03.html

Baixar e-mail do Yahoo, use nas configurações de POP:

pop.mail.yahoo.com.br

Exemplo:

poll pop.mail.yahoo.com.br proto POP3 user zagolinux password minhasenha is zago here

Nas configurações de smtp no Postfix e SASL, use:

smtp.mail.yahoo.com.br

gmail

GMAIL - como baixar via fetchmail no CL10

Acesse seu e-mail, no canto superior direito, entre em "Definições", na nova tela entre em " Encaminhamento e POP", nesta tela procure pelas opções de configuração POP "Download pelo POP:", configure de maneira que permita o download das mensagens, neste tela tem indicações de ajuda para configurar diversos clientes de cliente de e-mail, clique em "Saiba mais" e "Instruções de configuração".

Optei por baixar as mensagens via pop e enviar para lixeira, não achei opção eliminar mensagens, então optei pela lixeira, com esta opção o fetchamail baixa as mensagens e automaticamente elas vão para a lixeira do Gmail, no meu .fetchmail para salvar as mensagens de zagolinux@gmail.com na conta do usuário zago local, acrescentei:

     poll pop.gmail.com with proto POP3 port 995
         user 'zagolinux' there with password 'minhasenha' is 'zago' here options fetchall ssl

Use neste formato:

  poll pop.gmail.com with proto POP3 port 995
         user 'seuusuáriogmail' there with password 'suasenhagmail' is 'usuáriolocal' here options fetchall ssl

Cuidado com a quebra de linha, navegadores e editores sempre quebram a linha, no exemplo acima são duas linhas, a primeira inicia com poll e termina com 995, a segunda linha inicia com user e termina com ssl.

Na minha configuração Postfix no CL9 ou CL10, as mensagens são gravadas automaticamente em:

/var/spool/mail/nomedelogindousuario

no /etc/profile tem esta linha:

MAIL="/var/spool/mail/$USER"

Além desta linha tem a configuração do MTA, nesta configuração tem o Postfix. Caso queira gravar as mensagens no home do usuário ou outro local, tente descobrir o que alterar nesta linha do profile e na configuração do MTA.

fastweb e schemer

http://www.fastweb.com.br
http://www.schemer.com.br

Baixar e-mail com fetchmail o nome do usuário tem que estar no formato usuario@seudominio.com.br, exemplo para e-mail zagoteste@zago.com.br

  [root@faqcl10 root]# cat .fetchmailrc
      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop.zago.com.br proto POP3 user zagoteste@zago.com.br password minhasenha is zago here

locaweb

Localweb ou Locaweb, neste provedor o nome do usuário tem que estar no formato usuario@seudominio.com.br, exemplo de .fetchmailrc para zagoteste@lupanet.com.br:

  [root@faqcl10 root]# cat .fetchmailrc
      set logfile "/var/log/fetchmaillog"
      set postmaster "nome do postmaster"
      set daemon 300
      set bouncemail
      poll pop.lupanet.com.br proto POP3 user zagoteste@lupanet.com.br password minhasenha is zago here

click 21

Ainda não consegui baixar e-mail do click21, o Anderson enviou esta mensagem de erro quando tenta baixar as mensagens via fetchmail:

  Erro desconhecido de login ou autenticação em andersonmsp@pop.click21.com.br
  fetchmail: erro protocolo cliente/servidor enquanto baixando mensagens de pop.click21.com.br
  fetchmail: Situação da consulta=4 (PROTOCOLO)

Ainda não pesquisei, precisa verificar se tem alguma opção no site deles, algo como no Yahoo ou Gmail.

log

A primeira linha do .fetchmailrc define o local e arquivo de log.

set logfile "/var/log/fetchmaillog"

O arquivo de log /var/log/fetchmaillog, será criado automaticamente na primeira execução do fetchmail, acompanhe os logs enquanto são criados, execute:

tail -f /var/log/fetchmaillog

Definir rotação do arquivo de log, configure em /etc/logrotate.d/fetchmail

mais exemplos e dicas no FAQ log.txt e fetchmail.txt

Indicações, tutoriais, sites, FAQ e etc..

Não esqueça do manual, páginas do man, no console execute; man fetchmail

Site oficial do projeto, manual, documentação, lista, download e muito mais...
http://fetchmail.berlios.de/

Como faço para usar o fetchmail?
http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/internet.aplicativos.fetchmail.configurar.html

Como baixar contas de mail da internet para uma pequena rede utilizando acesso discado e utilizar um servidor de mails internos?
http://www.conectiva.com.br/cpub/pt/incConectiva/suporte/pr/servidores.sendmail.fetchmail.procmail.html

FAQ com respostas esclarecedoras na lista Linux-br
http://www.zago.eti.br/email/fetchmail.txt
Procmail separa e filtrar mensagens, veja o FAQ:
http://www.zago.eti.br/email/procmail.txt

getmail também baixa e-mail, pesquise no google e veja mais em:
http://freshmeat.net/projects/getmail/

Página principal sobre E-mail
http://www.zago.eti.br/email/A-menu-email.html

Página principal deste site (FAQ)
http://www.zago.eti.br/menu.html