(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

654. Usando isto com o seu programa de correio

Esta seção descreve a configuração do programa cliente POP para usar a conexão de reenvio do ssh. O foco primário será o fetchmail (utilitário excelente para recebimento e envio de mensagens), uma vez que este é o programa mais flexível que eu encontrei para lidar com o POP. Ele pode ser encontrado em http://www.tuxedo.org/~esr/fetchmail/. Será de grande ajuda a leitura da excelente documentação que o acompanha.

654.1 Configurando o fetchmail

O que se segue é o meu .fetchmailrc:


defaults
        user msingh is coringa
        no rewrite

poll localhost with protocol pop3 and port 11110:
        preconnect "ssh -C -f msingh@popserver -L 11110:popserver:110 sleep 5"
        password foobar;

Bem simples, não? O fetchmail tem um grande número de comandos, mas suas chaves são as linhas preconnect e a opção poll.

Não estamos nos conectando diretamente com o servidor POP, mas sim com a porta 11110 da máquina local. O parâmetro preconnect faz o reenvio cada vez que o fetchmail for executado, deixando a conexão aberta por 5 segundos, quando então o fetchmail executa a sua própria conexão. O restante é feito pelo fetchmail.

Então, cada vez que ele for executado, será solicitada a informação de senha do usuário via ssh para autenticação. Caso se execute o programa em segundo plano (como eu faço), é inconveniente ter que informar sempre a senha, o que nos leva para a próxima seção.

654.2 Automatizando tudo isto

O ssh pode autenticar usando vários métodos. Um destes é um par de chaves pública/particular RSA. Pode-se gerar uma chave de autenticação para uma conta usando o utilitário ssh-keygen. Uma chave de autenticação pode ter associada a ela, uma frase-senha ou algo em branco. O uso de uma frase-senha depende de quão seguro se acha que é a conta local que se está usando.

Caso se entenda que a máquina é segura, vá em frente e use uma frase-senha em branco. Assim, o .fetchmailrc acima funcionará perfeitamente. Pode-se então executar o fetchmail no modo servidor, quando há um acesso discada e as mensagens de correio são recuperadas automaticamente. Pronto.

Entretanto, se você acha que precisa de uma frase-senha, as coisas tornam-se um pouco mais complexas. O ssh pode ser executado sob controle de um agente, o qual pode registrar chaves e autenticar qualquer conexão feita sob ele. Para tanto criei o programa getmail.sh descrito a seguir:


#!/bin/sh
ssh-add
while true; do fetchmail --syslog --invisible; sleep 5m; done

Ao fazer um acesso discado, executo:

$ ssh-agent getmail.sh

Este procedimento solicita a minha frase senha uma vez, depois verifica o correio a cada 5 minutos. Quando a conexão discada é fechada, o agente ssh é encerrado (isto é, automatizado nos programas ip-up e ip-down).

654.3 Não usando o fetchmail

O que acontece se eu não posso/não quero usar o fetchmail? Pine, Netscape e alguns outros clientes têm seus próprios mecanismos POP. Primeiro considere o uso do fetchmail! Ele é muito mais flexível e, de qualquer modo, é possível que os clientes do correio não possam executar este tipo de coisa. Tanto o Pine quanto o Netscape podem ser configurados para usar sistemas de correio locais.

Se isto for possível, a não ser que o cliente tenha pré-conectado uma característica como fetchmail, será necessário deixar o reenvio ativo todo o tempo em que se estiver conectado. O que significa usar sleep 100000000 para deixar a conexão ativa. Isto pode não funcionar muito bem com o administrador de rede local.

Segundo: alguns clientes (como Netscape) tem o número de porta pré-codificado para 110. Então será necessário ser superusuário para executar o reenvio proveniente de portas privilegiadas. Isto é um pouco incômodo, mas deve funcionar.


Página seguinte Página anterior Índice