segunda-feira, 8 de janeiro de 2007

POP3 gateway com fetchmail

Neste artigo, venho novamente compartilhar minha experiência de trabalho falando sobre como utilizar o fetchmail como gateway pop, ou seja, uma máquina interna que ficaria puxando todos os e-mails de todos os clientes 24 horas por dia.

Eu publiquei este artigo na vivaolinux.com.br, mas estou adicionando ele aqui tambem.

De uma certa forma, eu nunca tinha mexido com fetchmail, sempre criei servidores de e-mail com Postfix + MySQL + Courier e etc, mas desta vez tive que desenvolver um projeto em um cliente do qual eu nunca tinha feito... pra variar hehe.

O cliente queria um servidor interno que ficaria 24 horas puxando as mensagens de todos os clientes da empresa e o cliente de e-mail dos funcionários iria buscar as mensagens neste servidor interno e não em um servidor externo. De uma certa forma acho a idéia válida, pois não temos todas as máquinas fazendo requisições ao mesmo tempo para fora da rede.

No caso se você quiser utilizar o CBQ no seu firewall e priorizar a banda para esta máquina no futuro, fica seu critério.

















Sistema operacional: Debian Stable 3.1

Instale o fetchmail:

# apt-get install fetchmail

Fetchmail é o programa mais tradicional no recebimento de mensagens através dos serviços POP3, IMAP, POP2, etc no GNU/Linux. Ele pega as mensagens de seu servidor POP3 e as entrega ao MTA local ou nos arquivos de e-mails dos usuários do sistema em /var/mail.

Todo o funcionamento do fetchmail é controlado pelo arquivo ~/.fetchmailrc. Segue abaixo um modelo padrão deste arquivo:
poll pop3.seuprovedor.com.br protocol pop3
user chroot password sua_senha keep fetchall is chroot here
Este arquivo é lido pelo fetchmail na ordem que foi escrito.

Veja a explicação abaixo sobre o arquivo exemplo:

A palavra "poll" especifica o servidor de onde suas mensagens serão baixadas, o servidor especificado no exemplo é pop3.seuprovedor.com.br.

A palavra "skip" pode ser especificada, mas as mensagens no servidor especificado por skip somente serão baixadas caso o nome do servidor de mensagens for especificado através da linha de comando do fetchmail.

"protocol" é o protocolo que será usado para a transferência de mensagens do servidor. O fetchmail utilizará a auto-detecção de protocolo caso este não seja especificado.

"user" define o nome do usuário no servidor pop3.seuprovedor.com.br, que no exemplo acima é "chroot".

"password" define a senha do usuário chroot (acima), especificada como sua_senha no exemplo.

"keep" é opcional e serve para não apagar as mensagens do servidor após baixa-las (útil para testes e acesso a uma única conta de e-mail através de vários locais, como na empresa e sua casa por exemplo).

"fetchall" baixa todas as mensagens do provedor marcadas como lidas e não lidas.

"is chroot here" é um modo de especificar que as mensagens obtidas de pop3.seuprovedor.com.br do usuário chroot com a senha sua_senha serão entregues para o usuário local chroot no diretório /var/mail/chroot.

As palavras is e here são completamente ignoradas pelo fetchmail, servem somente para dar um tom de linguagem natural na configuração do programa e da mesma forma facilitar a compreensão da configuração.

Se possuir várias contas no servidor pop3.seuprovedor.com.br, não é necessário repetir toda a configuração para cada conta, ao invés disso especifique somente os outros usuários do mesmo servidor:
poll pop3.seuprovedor.com.br protocol pop3
user chroot password sua_senha keep fetchall is chroot here
user conta2 password sua_senha2 fetchall is chroot here
user conta3 password sua_senha3 fetchall is chroot here
Note que todos os e-mails das contas chroot, conta2 e conta3 do servidor de mensagens pop3.seuprovedor.com.br são entregues ao usuário local chroot (arquivo /var/mail/chroot).

Então, por exemplo, se eu tiver um e-mail "maria.joana@provedor.com", preciso criar o usuário "maria.joana" localmente no Linux com a mesma senha POP que ela usa para baixar as mensagens do servidor externo.











Instale um servidor POP na sua máquina e coloque-o para rodar.

# apt-get install qpopper

Cadastre todos os usuários no seu /etc/fetchmailrc, por exemplo. Crie todas as contas necessárias no servidor Linux, com as permissões que julgar conveniente (podem ser apenas para POP).

No /etc/fetchmailrc, coloque algo como o seguinte:
set logfile "/var/log/.fetch.log"
set postmaster "root"
set bouncemail
set no spambounce
set properties ""
set daemon 1
poll 200.x.x.x with proto POP3 and options uidl
user 'bruno.oliveira@provedor.com' there with password '123' is 'bruno' here
user 'abimael.oliveira@provedor.com' there with password '123' is 'abimael' here
Ao se conectarem como "bruno", "abimael" no seu servidor Linux local, com estes usuários locais, para baixar as mensagens, elas estarão ali.

Rode o fetchmail como daemon. Algo como "fetchmail -d 300 -F /etc/fetchmailrc", para baixar todas as mensagens das caixas postais configuradas acima a cada 5 minutos é suficiente.

Ou no Debian:

# /etc/init.d/fetchmail start

PS: Sempre crie os usuários locais parecidos com o endereço de e-mail, não precisa ser igual, mas parecido, somente para você não se perder.

As contas de e-mail ficam em /var/mail.

Agora no seu software de e-mail (Outlook, Evolution, Pine, Mutt, etc), mude o IP do servidor POP para o IP interno deste servidor e você verá as mensagens chegando.

Espero ter ajudado a comunidade.

Um abraço e até o próximo artigo.

Referências: Guia Foca Linux

0 comentários:

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger | Printable Coupons