10.10. Sendmail 전자우편 데몬 설정하기

전자메일 서비스를 제공하기 위해서 나는 Sendmail 패키지를 사용하고 있다. Sendmail 은 가장 확실한 메일 핸들러이다; 사실 인터넷을 통하여 전송되는 전자메일의 80% 이상이 한쪽 또는 양쪽에서 이 프로그램을 사용한다고 추정된다. 이 프로그램이야말로 해야할 일을 제대로 하는 프로그램이며 이 프로그램없이 인터넷 서버를 운용한다는 것은 상상조차 할 수 없다 (Qmail 이라고 불리는 또다른 전자메일 서버도 약간 인기가 있는 모양이다 -- 하지만 나로서는 그 프로그램 사용을 시도할 이유를 찾지 못하고 있다).

새로운 기능과 버그 수정을 활용하고 더 중요하게는 보안상의 이유로 Sendmail 을 가끔 업그레이드하는 것이 바람직하다. 게다가 최신판의 Sendmail 은 강력한 스팸방지 기능이 포함되어 있어 허락받지 않은 사용자가 메일 서버를 남용하는 것을 방지할 수 있다.

이 섹션에서는 Sendmail 을 받는 메일 서버로 사용하려고 할 때 해야할 일에 대하여 약간 다루려고 한다. 그리고 주로 서버 시스템에서 어떻게 하는 지에 대한 내용이 될 것이다. 한편 만약에 받는 메일을 처리할 필요는 없고 보내는 메일 기능만 사용하려고 하는 것이라면 ((여기에 내용을 추가해야함)) 를 해야한다.

이 섹션에서는 최신 버전의 Sendmail (이 글을 쓰는 시점에서는 8.9.3) 을 이미 설치하여 사용하고 있다고 가정하고 있다.

레드햇 배포판에 들어있는 것을 보면 Sendmail 은 대부분의 서버에서 제대로 돌아갈 수 있도록 적절한 설정 정보를 포함하고 있다. 그럼에도 불구하고 ``/etc/sendmail.cf'' 파일을 편집하고 필요에 따라 몇가지 셋팅을 맞춰주어야 한다. 이는 물론 이 문서의 수준을 넘는 내용이다.

하지만, 내 생각에 도움이 될만한 것으로는 스패머들을 차단하기 위하여 설정 파일을 약간 수정하는 것이다. 여기에 포함되는 내용은:

O PrivacyOptions=authwarnings
바꾼 뒤:
O PrivacyOptions=authwarnings,noexpn,novrfy
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
바꾼 뒤:
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b  NO UCE  C=xx L=xx

첫번째 변경내용은 스패머가 ``EXPN'' 과 ``VRFY'' 명령을 사용하지 못하도록 하는 것이다. 나는 이들 명령이 너무나도 자주 비도덕적인 사람들에 의해 악용된다는 것을 발견하였다. 두번째 변경내용은 Sendmail 이 연결을 받을 때 표시하는 배너의 내용을 바꾸는 것이다. 내용 중에서 ``C=xx L=xx'' 에 들어있는 ``xx'' 는 국가 코드와 지역 코드로 바꾸어 주어야 한다. 예를 들어, 내 경우에는 캐나다 온타리오이므로 ``C=CA L=ON'' 라고 쓰고 있다. (두번째 변경은 실제로 어떤 영향을 미치지는 않지만 news.admin.net-abuse.email 뉴스그룹에 있는 친구들이 이를 법적인 예방조치로서 해두는 것이 좋다고 권장하고 있다.)

만약 당신의 메일 서버가 실제로 실행되는 실제 기계의 호스트 이름과 다르다면 ``/etc/sendmail.cw'' 파일에 한두개의 별명을 덧붙여 주어야 한다. 예를 들어, 당신 시스템의 이름이 "kirk.mydomain.name" 인데 이 시스템을 mydomain.name 도메인의 우편 교환기로 사용하고 들어오는 메일의 주소가 ``user@mydomain.name'' 형식으로 된 메일이 "kirk" 에게 배달되게 하려면 이 별명을 다음과 같이 추가해주면 된다:

mydomain.name

마지막으로 당신의 sendmail 서비스에 연결할 수 있는 도메인 (또는 부도메인 subdomain) 을 제한하려면 ``/etc/mail/access'' 파일을 편집하여 도메인에 대한 정보와 제한의 종류를 입력해주면 된다. 예를 들어:

some.domain             REJECT
hax0r.another.domain    550 관리자에게 전화하세요 (555) 555-1234.

위의 예는 ``some.domain'' 사이트에서 오는 모든 전자우편 연결을 거부하고 ``hax0r.another.domain'' 기계에서 오는 연결에 대하여는 거부를 하면서 그 다음에 있는 메시지를 내보낸다.

이 파일을 변경한 다음 ``access.db'' 파일을 갱신해주고 난 다음 sendmail 을 다음과 같이 재시작시켜준다:

/usr/sbin/makemap hash /etc/mail/access.db < /etc/mail/access
/etc/rc.d/init.d/sendmail restart

작은 정보: 팁: 만약 전자메일 악용을 우려한다면 그러한 악용을 다루는 "메일 악용 예방 시스템 Mail Abuse Prevention System" (MAPS) 프로젝트에서 매우 유용한 정보를 얻을 수 있다; http://www.mail-abuse.org/ 에 있는 웹 페이지를 참조하시요

만약 Sendmail 8.9 버전 또는 그 이상을 사용하고 있다면 RBL 지원기능이 내장되어 있다. 하지만 이 기능을 디폴트로 사용하지 않도록 되어 있다. 이 기능을 사용하려면 sendmail.mc 파일에 다음과 같은 내용을 추가하면 된다:

        FEATURE(rbl)

그리고 나서, Sendmail 데몬을 다시 설정하고 재시작시키면 된다.

다른 메일 전송 에이전트를 위한 설정 정보 등 더 자세한 정보를 보려면 http://www.mail-abuse.org/rbl/usage.html 를 보면 된다.

가끔은 계속 통신을 해야 하는 어떤 도메인이 RBL 리스트에 들어있을 수 있다. 어쩌면 블랙 리스트에 오른 도메인에 속한 어떤 사람과 꼭 통신을 해야할 수도 있다. 이런 경우에는 Sendmail 에서 (블랙 리스트에 들어있더라도) 특정 도메인에서는 전자우편을 수신할 수 있도록 지정할 수 있다. ``/etc/mail/access'' 파일을 편집하여 적절한 도메인 정보를 넣어주면 된다. 예를 들어:

블랙리스트의.어떤도메인      OK

(앞에서 설명했듯이) access.db 파일을 다시 만드는 것을 잊으면 안된다!

RBL 에 가입하기로 결정했다면 가급적 메일 사용자들에게 알려주는 것이 현명한 처사이다. 만약 사용자들이 이에 반발한다면 다른 서비스를 준비해두어야 하기 때문이다.

Sendmail 에 대한 자세한 정보는 http://www.sendmail.org/faq/ 에 있는 FAQ 문서를 참조하시요.