윤봉환 / eletuz@chollian.net
|
1. 들어가며 (Introduction) 삼바, IP 매스커래이딩(Masquerading), 그리고 diald 을 이용한 Linux와 Win95 홈 네트워크(home network) 구성은 Linux Gazzete에서도 매우 여러 번 설명되어 왔지만, 여태껏 나는 오직 하나의 전화접속(dial-up) 전자 메일 계정(e-mail account)을 가진 작은 네트워크에서 메일 설정하는 방법을 찾지 못했다. 이 기사(article)에서 나는 이렇게 하는 방법을 설명하여 한다. 이 시스템에서: ■ 네트워크 위의 사용자는 각자 다른 사람에게
지역적으로 메일을 보낼 수 있고, 이것은 내 시스템에서 (Debian Linux 2.1이 운영중인) 아래 프로그램들을 이용하여 구현된다: ■ 메일 전송 에이전트 exim (Smail 3와 비슷한
Mail Transfer Agent(MTA)로 sendmail보다 나는 두 머신에서 (1 Linux + 1 Win95) 이렇게 설정했지만, 아마도 조금 더 큰 네트워크에서도 역시 동작할 것이고, 작은 사무실에서라면 아마 충분할 것이다. Note: 이 문서는 Debian 지향적이다. 만일 당신이 다른 배포본을 사용한다면, 적절하게 바꾼다.
2. 네트워크, 그리고 이름들 (The network and the names) 이 기사에서 나는 아래와 같은 이름들을 가정한다. (이 것들은 당신 자신의 경우에 적절하도록 바꾼다) ■ 주인(owner) / 시스템 관리자는 Joe Bloggs라
불린다. heaven과 earth는 home이라 불리는 도메인에
속한다. 이런 도메인 이름을 예로 든 것은, 이 도메인 이름이
다만 홈 네트워크 안에서만 사용된다는 것을 의미한다; Joe는 그의
도메인 이름을 등록하지 않았고 이 것은 바깥 세상에서는 (outside
world) 알지 못한다. heaven의 /etc/hosname 파일은 heaven heaven의 /etc/hosts 파일은 127.0.0.1 localhost earth에서 /etc/hosts와 같은 내용의 파일은 c:\windows\hosts다.
3. 메일 주소 (Mail addresses) 메일 메시지들은 ‘To:’와 ‘From:’ 줄들에 주소 이상의 것을 가질 수 있다. 이를테면 : To: Emily Bloggs <joe.bloggs@isp.com> 위 예제에서 ‘Emily Bloggs’는 ‘실제-이름 부분(real-name part)’이다. 이 것은 메시지를 작성하는 e-mail 프로그램 안에서 설정한다. 이 ‘실제-이름 부분’은 Emily의 메일을 그녀에게 배달하는데 사용할 수 있다. Note: 만약 ‘실제-이름 부분’이 그 안에 점 들(dots)을 가진다면, 반드시 “ 문자로 인용되어야 한다. (“Joe C. Bloggs”). man mailaddr를 참고한다.
4. exim 환경설정 (Configuring exim) Debian 시스템에서는 eximconfig를 실행하는 것으로 충분하다. 이 프로그램은 아래처럼 당신이 대답할 수 있는 몇 가지 질문들을 묻는다. ■ 당신의 시스템이 smarthost를 사용하는 인터넷
사이트인지. MS Internet Mail에서 (또는 Win95에서 당신이 사용하는 다른 메일 클라이언트일지라도) heaven은 반드시 STMP 서버와 POP3 서버 모두에 등록되어 있어야 한다. ‘pop3 계정’ 과 ‘pop3 패스워드’ 아래에서, 사용자 이름 emi와 그녀의 리눅스 패스워드를 넣는다. 적절한 곳에 이름, Emily Bloggs를 넣고, e-mail 주소로, emi@home을 넣는다. e-mail 주소는 반드시 로컬 도메인이어야 하는 것에 주의한다! 리눅스 쪽에서는, 특별히 설정할 것이 없다. /etc/pine/conf 와 사용자의 ~/.pinerc는 ‘박스 밖(out of the box)’에서 사용되어질 수 있다. 메일 클라이언트(pine)는 호스트네임과 함께 /etc/passwd로부터 사용자 정보로 로컬 주소들을 구성한다. 앞서 설정으로, 로컬 사용자들은 서로에게 메일을 보내고 그 회신을 유쾌하게 전송할 수 있다. 예를 들어, heaven의 pine으로, 사용자 joe가 사용자 emi에게 메일을 보낸다. 자동적으로, pine은 이 것을 이렇게 변경한다: To: Emily Bloggs <emi@heaven.home> 메시지는 즉시 배달된다. (당신이 exim 모니터링 도구인 eximon을 사용한다면, 눈으로 확인할 만큼) emi는(그녀는 아마 heaven에 로그인했을 것이다) 다음과 같은 메시지를 볼 것이다. From: Joe Bloggs <joe@home>
5. From: address 고정하기 우리는 반드시 로컬 From: 주소를 유효한 e-mail
주소로 (ISP에서의 e-mail 계정) 바꾸어야 하지만, 오로지 나가는
메시지인 경우에만 해당된다. exim에서, 우리는 ‘전송 필터’가
뜻하는 바에 따라 이렇게 할 수 있다. 나가는 메일은 이 필터를
통해 지나가고, From: 주소는 바뀌어진다. 로컬 메일은 영향을
받지 않을 것이다. #!/usr/bin/perl 당신의 메일들에서 e-mail 주소를 바꾸는 것을 잊지 말아야 한다! 이 프로그램을 outfilt라 이름 짓고, chmod +x outfilt 명령을 수행하여, /usr/bin 아래 넣는다. 이제 우리는 /etc/exim.conf에서 TRANSPORTS CONFIGURATION 섹션의 마지막 줄을 읽어 한 줄을 추가해야 한다: remote_smtp: 실제로, 우리는 두 줄을 추가했다. headers_remove 줄도 역시 새로운 것이다. 이 것은 메시지에 Sender: 헤더가 추가되는 것으로부터 exim을 막아준다. (실제로 당신이 pine을 사용한다면 이 설정을 사용해야 한다.) Sender: 줄은 어떤 (나쁘게 설정된) 메일 목적지에서 문제의 원인이 될 수 있다. /etc/exim.conf에서 이들을 변경함으로써, 누군가 e-mail 메시지를 바깥 세상에 보낼 때엔 언제나 exim에 의해 바로바로 정확하게 배달된다. Exim은 (diald를 통해) 바깥쪽 회선을 한번에 연다. home 위치에서 이 것은 아마도 당신이 바라는 바일 것이다. 작은 사무실에서, 매우 많은 e-mail 교통량(traffic)으로 시달린다면, 전화요금을 절약하기 위해, 메시지들을 늦추고 시간이 확보되었을 때 묶어서 보내기를 원할 것이다. 이 것은 물론 가능하겠지만, 내 자신에게는 필요치 않은 일이고 연구해 본 적도 없다. 당신은 ‘Linux Mail-Queue mini-HOWTO’를 읽어볼 수도 있을 것이다.
6. 패치메일 환경설정 fetchmail 명령으로 diald는 회선을 열고, ISP로부터의 메일은 모아진다. (그리고 지역적 배달을 위해 exim을 지나간다.) 오직 .fetchmailrc 파일을 가진 사용자들만이 그들 자신에 의해, 그들의 홈 디렉터리에서 fetchmail을 실행할 수 있는 권한을 소유한다. 이 파일은 환경설정 도구인 fetchmailconfig를 사용함으로써 생성될 수 있다. 당신은 다음과 같은 어떤 것을 얻는다: # Configuration created Sun Mar 28 03:15:20
1999 by fetchmailconf .fetchmailrc 파일들은 다양한 사용자에 속해있어
서로 복사하는 등 모든 것을 할 수 있지만, 소유권 설정은 사용자와
관계가 있다. 모든 사용자가 그저 보기만 하는 데 패스워드를
가지는 것은 좋지 않다. 더 좋은 방법들이 있을지도 모르지만,
home 영역에서는 별 문제가 없다.
7. exim의 배달제한 없애기 Exim은 기본설정에 의해 한 번에 10개 이상의 메시지들을 배달하지 않는다. 나는 이 것이 정말 이치에 닿는 상황이라 확신하지만, 다이얼업 계정을 가지고 있는 것은 그들 가운데 하나가 아니다. 이 제한을 극복하기 위해서, 당신은 반드시 /etc/exim.conf 파일의 MAIN CONFIGURATION 섹션에서, 그 내용이 끝나기 전에 한 줄을 추가해야 한다. smtp_accept_queue_per_connection = 0
8. 개인 메일 배달하기 fetchmail과 exim을 통해, 바깥으로부터 들어오는 모든 메일은 기본 설정 값에 의해 heaven에 있는 Joe의 메일박스로 (var/spool/mail/joe) 배달된다. Joe의 홈 디렉터리에 그는 아래와 같은 문자열을 포함하는 .forward라 불리는 파일을 넣어둔다. # Exim filter 만약 메일이 To: 주소에서 ‘Emily’를 (‘진짜 이름 부분’에서) 포함한다면 (그리고 그녀의 친구들이 그녀에게 메일을 보낼 때 거의 모든 경우에 이렇게 될 것이다) Joe의 것이 아닌 heaven에 있는 그녀의 메일 계정으로 갈 것이다. 그녀는 POP3를 사용하는 그녀 자신의 머신으로 메일을 옮길 수 있다. (아래를 보라.)
9. qpopper로 메일 전송하기 earth를 위해 heaven이 POP3 서버와 같이 동작하도록 만들기 위해, qpopper가 설치될 수 있다. 나는 Debian 패키지 qpopper_2.3-4.deb를 설치했다. 설치는 자동적이다: 환경설정을 필요하지 않다. Emily가 MS 인터넷 메일에서 ‘메시지들을 가져오고/보내기’를 강요한다면, 그녀의 heaven에 있는 그녀 메일박스의 내용이 earth로 옮겨질 수 있다 (그리고 그녀가 썼거나 배달된 로컬 또는 바깥의 모든 메일)
10. 메일 수동 관리하기 고맙게도 earth의 Win95 ‘desktop’ 위 ‘shortcut’은,
heaven에 telnet을 수행한다. Emily는 heaven에 로그하고
직접 fetchmail을 실행할 수 있다. 그 것은 fetchmail이 동작할
때 그녀가 계획된 cron 일정을 기다리려고 하지 않는다는 것이다.
메일이 ISP로부터 전송된 후, 그녀가 ‘메시지들을 가져오고/보내기’를
강요한다면, heaven에 있는 그녀의 메일박스 내용이 earth 하나로
옮겨질 수 있다.
덧붙임 (appendix) 나는 나가는 메시지들에서 Mail Transport Agent는 (이 경우 exim이다) 고유의 From: 주소를 설정한다고 설명했다. Mail User Agent가 말썽을 일으키지 않는다면 잘 동작한다. 유감스럽게도, pine 3.96은 (내가 사용하는) 이런 경우에 문제로부터 자유롭지 않다. 만약 pine에서 메시지를 작성하고 배달을 뒤로
미룬다면 (메시지를 보내기 전에, 나중에 편집하기 위해 저장한다거나)
pine은 나중에 메시지가 다시 시작될 때 Reply-To: 헤더를 추가할
것이다. 그래서, Joe Bloggs에 의해 보내진 연기/재시작된
메시지처럼 아래 헤더들과 함께 밖으로 보내질 것이다. 이것은 첫 번째 지연된 메시지에만 발생할 것이고, 다음에 재시작되고 보내진다! 한 곳에서 작성되고 보내진 메시지들은 Reply-To: 주소는 없이 단지 From: 주소만을 가질 것이다. 문제는, 만약 수신인이 당신의 메시지에 회답한다면 Reply-To: 헤더는 From:보다 우선권을 가진다는 것이다. 그래서 답신은 진짜 isp.com 도메인 대신 home 도메인으로 갈 것이다. 이 버그는 (pine 3.96 소스코드에서 고쳐지지 않은 버그로 알려진) pine의 몇 가지 새로운 버전에서는 고쳐졌다. (적어도 pine 4.10에서는) 그러나 pine 3.96은 여전히 이 문제를 가진다. 당신의 pine에 이 버그가 있다면, 쓰기, 미루기, 다시 시작하기, 그리고 다시 미루기를 테스트하여 점검한다. 그 다음 Reply-To: 헤더가 나타나는지 알아보기 위해 ~/mail/postponed-msgs 파일을 점검한다. (그리고나서 메시지를 없애버린다.) 만약 당신에게 문제가 있다면, pine 외의 다른
MUA를 사용하는 것은 별개로하고, 가장 쉬운 해결방법은 나가는
메일에서 어떤 Reply-To: 헤더들을 지우도록 /etc/exim.conf 파일을
수정하는 것이다. 이 것은 한 줄을 변경하는 것으로 해낼
수 있다. (앞서 설명되었다.) 를 아래처럼 수정한다. headers_remove = “sender:reply-to” 이 것은 최소한의 임시적인 방법이다. 가장 좋은 방법은 pine 4.10 버전으로 업그레이드하는 것이다. (그러나 나 자신은 Debian package에서 pine 4.10을 얻을 수 있게 될 때까지 기다릴 것이다.) |