다음 이전 차례

3. 메일 소프트웨어와 같이 사용하기

이 섹션은 팝 클라이언트 소프트웨어를 ssh가 포워딩한 포트를 사용하도록 설정하는 것을 설명한다. 주된 초점은 fetchmail (에릭 레이몬드가 만든 훌륭한 프로그램) 에 맞추었다. fetchmail 은 다음에서 찾을수 있다.

http://www.tuxedo.org/~esr/fetchmail/. 또한, fetchmail의 문서를 읽는 것도 당신에게 많은 도움을 줄것이다.

3.1 fetchmail 설정하기

이것은 나의 .fetchmailrc 파일이다.


defaults
        user msingh is manish
        no rewrite

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

간단하죠? fetchmail 은 이외에도 풍부한 옵션을 가지고 있으나, 여기서 중요한 것은 preconnectpoll 옵션이다.

우리는 POP 서버에 직접 접속않고 대신 로컬 호스트 11110 포트로 접속한다. preconnect 은 ssh 가 미리 접속을 해서 패치메일을 위해 포트 포워딩을 하고 5초동안 포트를 열어 놓는다. 이제 패치메일은 로컬 11110 포트로 접속하여 메일을 긁어오게 된다.

그래서 패치메일을 실행할때 마다, 당신은 암호입력을 해야한다. 만약 당신이 백그라운드(내가 하는 것처럼) 실행하고자 한다면, 이것은 불편하므로, 다음 섹션에서 이것을 해결하자.

3.2 모두 자동화 하기

ssh 는 사용자 인증을 여러 방법으로 할수 있다. 그중 한가지가 RSA public/private key pair 이다. 당신은 ssh-keygen를 사용해 인증키를 만들수 있다. 인증키는 passphrase 를 가질수 있으며, 그것은 공백일수 있다.

만약 당신의 머신이 안전하다고 생각된다면, 공백의 passpharase를 사용해라. 그리고 위와 같이 .fetchmailrc 를 설정한후 패치메일을 데몬모드로 실행하면 메일을 자동으로 받아올수 있다.

그러나, 만약 passphrase가 필요하다고 생각된다면, 좀더 복잡해진다. ssh 는 agent 에 의해 실행되어 지며, 등록키, 인증등을 ssh 접속이 이루어진 상태에서 해야한다. 그래서 나는 다음과 같은 스크립트를 사용했다.

getmail.sh:


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

모뎀 접속을 할때, 다음을 실행한다:

$ ssh-agent getmail.sh

이것은 나에게 passphrase를 한번 묻는다. 그리고, 매 5분마다 메일을 첵크하게 된다. 모뎀 접속이 끊어지면, ssh-agent 를 끝낸다. (나는 이것을 ip-up, ip-down 스크립트 에 넣었다.)

3.3 fetchmail을 사용하지 않는 방법

만약 패치메일을 사용하지 못하거나 사용하기 싫다면? Pine, Netscape 등의 메일 클라이언트들은 그들만의 POP 매카니즘을 가지고 있다. 그러므로, 패치메일의 사용을 고려해라! 그 편이 더 유연한 방법이다. 그리고 메일 클라이언트들은 그런 종류의 작동을 해서는 않된다. Pine 과 Netscape 은 로컬 메일 시스템을 사용하기 위해 설정될 수 있다.

그러나, 이렇게 하려면 당신의 메일 클라이언트들이 포워딩된 포트에 접속되어 있도록 충분한 여유 시간을 주어야 한다 (예를 들어 sleep 100000000 와 같은). 이것은 어쩌면 당신의 네트워크 관리자가 허용하지 않을지도 모른다.

두번째로, 몇몇 클라이언트 (넷스케입과 같은) 는 POP 서버의 포트가 110으로 하드 코딩되어 있다. 이것은 루트 권한으로 해당 포트로 포워딩을 해야 한다. 이것은 고민거리 이긴 하나, 작동은 할것이다.


다음 이전 차례