BigAdmin System Administration Portal
특집 기사: Solaris 9 플랫폼에서 sendmail 구성
Print-friendly VersionPrint-friendly Version

Solaris 9 플랫폼에서 Sendmail의 구성

집필자: Eric Rinker

이 기사의 목적은 Solaris 9 운영 체제로 가동되는 시스템에서 Sendmail의 변경 방법에 관한 기초 지식을 전달하는 데 있습니다. 이 기사는 UNIX 운영 체제의 표준 원칙에 관련된 실무 경험을 바탕으로 일정 정도의 지식을 보유한 엔지니어를 대상으로 하고 있습니다. 이 기사를 활용하기 위해서는 파일 편집 방법과 프로그램의 실행 방법을 이해하고, 루트에서 접속할 수 있어야 합니다.

전자 메일의 구조(Mail Transfer Agent)

전자 메일을 처리하는 응용 프로그램에는 Mail User Agent(MUA) 및 Mail Transfer Agent(MTA)의 2종류가 있습니다.

Mail User Agent는 전자 메일 메시지를 간단하게 작성하고 표시하며 삭제할 수 있도록 도와주는 응용 프로그램입니다. 예를 들면 UNIX 환경인 경우는 mail이나 elm, Windows 환경인 경우는 EudoraOutlook등이 있습니다. Netscape 및 Explorer는 MUA도 겸할 수 있는 인터넷 브라우저입니다.

Mail Transfer Agent는 1대의 시스템으로부터 전자 메일을 전송합니다. 통상 각 시스템은 1개의 MTA만을 사용합니다. Sendmail이 이 역할을 수행하는 MTA지만, MTA에는 그 밖에도 Exim, PostfixQmail이 있습니다.

Sendmail의 진화

Sendmail은 전세계적으로 널리 이용되고 있는 가장 오래된 MTA 중의 하나입니다. HP의 HP-UX, IBM의 AIX 및 Sun Microsystems의 Solaris OS 등 대부분의 UNIX 배포판에서는 MTA가 기본 마운트되어 있습니다. Sendmail은 오래전부터 이용되어 왔기 때문에 구성 및 유지 관리가 복잡해졌지만, 그 결점을 다양한 기능으로 보완하고 있습니다.

Sendmail은 30여년 전에 등장하여 전자 메일을 일정 장소에서 다른 장소에 전송하기 위한 가장 믿음직스럽고 기능이 가득한 도구로서 진화해 왔습니다. 원래 Sendmail은 하드디스크 드라이브가 세탁기와 같은 수준의 크기면서 사용할 수 있는 저장 공간이 64KB 밖에 없었던 시대에 설계된 것입니다. 그렇기 때문에 모든 수단을 이용해 공간을 절약했습니다. 간단히 설명하자면 Sendmail의 구성 파일은 「메일을 수신하는 도메인을 의미하는 "Fw"나 「로컬 전자 메일을 모두 취득하는 사용자를 의미하는 "DH" 등 암호 같은 파라미터를 사용했습니다. 불가피한 사정이 있었겠지만 그래도 이 방법은 초보자에게는 이해하기 힘든 것입니다. 그러나 하위 호환성을 갖추기 위해 이러한 암호 같은 파라미터는 Sendmail의 현재 릴리스의 구성 파일로서도 사용되고 있습니다.

해를 거듭하면서 Sendmail에 추가된 기능이 누적되어 구성 프로세스가 매우 복잡해졌습니다. 관리자가 사용하기 쉽도록 Sendmail은 m4 기반의 컴파일 및 구성 모델을 사용하기 시작했습니다. 관리자와 구축 및 구성 프로세스의 사이에 있는 이 레이어를 사용함으로써 새로운 대화 방법을 처리하기 위해 낡은 프로그램을 업그레이드하지 않아도 Sendmail을 간단하게 설정 및 유지 관리할 수 있게 됩니다.

구성

Sendmail에 대해서 알아야 할 모든 것을 이 기사에 망라하려면 수백 페이지를 필요로 하고 읽는데도 상당한 고생을 해야 할 것입니다. 그래서 일반적으로 볼 수 있는 3개의 구성 「Mail Server」, 「Incoming Relay」 및 「Outgoing Only」로 범위를 좁혀 설명하도록 하겠습니다.

Sendmail의 동작을 변경하는 경우 /etc/mail/sendmail.cf 파일은 직접 변경할 수 없습니다. 대신에 .mc 파일을 변경하여 m4 매크로 프로세서를 진행합니다. 다음의 .mc 파일의 샘플이 /usr/lib/mail/cf 에 있습니다.

  • main.mc는 시스템에 설정된 기본값입니다.
  • submit.mc는 Sendmail을 기본 메일 송신 프로그램으로 구성합니다.
  • subsidiary.mc는 이 시스템 상의 모든 메일을 다른 시스템을 경유하여 상대방에게 전달합니다.

이 예에서는 main.mc 파일을 new.mc에 복사하여 다음과 같이 변경합니다.

cd /usr/lib/mail/cf 
vi new.mc
make new.cf
cp new.cf /etc/mail/sendmail.cf
/etc/init.d/sendmail restart

3개의 구성 모두에서 공유되는 공통의 요소가 있습니다. 최소한 다음 파일이 포함되어 있습니다.

OSTYPE(`solaris8')dnl
DOMAIN(`generic')dnl
MAILER(`local')dnl
MAILER(`smtp')dnl

OSTYPE 매크로는 이 파일이 존재하는 시스템을 정의합니다.
DOMAIN 매크로는 변환 후의 sendmail.cf 파일에 다른 파일을 가져오기 위해서 사용됩니다.
MAILER 매크로는 수많은 여러 가지 전달 방법 가운데 어떤 것을 이 구성 파일이 사용할지를 정의합니다.
이 예에서는 Solaris 8 이후 릴리스를 사용하여 도메인 파일 "generic"을 가져와서 로컬 전달 시스템과 SMTP 시스템을 양쪽 모두 사용하려고 하고 있습니다.

Mail Server

Mail Server는 메일 수신에 사용되는 대표적인 서버입니다. user@domain의 메일을 수신하여 사용자의 로컬 메일함에 저장하고 외부의 세계에 전달하기 위해 큐에 넣어 처리합니다.

한 가지만 변경하면 됩니다. 즉 로컬 계정으로 사용하는 각 도메인을 /etc/mail/local-host-names에 추가합니다.

최종적인 구성:

OSTYPE(`solaris8')dnl
MAILER(`local')dnl
MAILER(`smtp')dnl
Incoming Relay

Incoming Relay는 회사의 방화벽 바깥쪽에 위치하는 사내의 전자 메일 서버에서 자주 사용되는 구성입니다. 전자 메일을 축적하지 않고 방화벽 안쪽에 위치하는 사전에 정의된 서버에 전송합니다. 이 설정은 필터링 기능을 구현하는데 가장 적합합니다. 이 시스템에서는 통상 사용되는 메일 서버의 작업 중에 필터링 이외의 작업은 처리하지 않기 때문입니다.

Incoming Relay를 구성하려면 우선 릴레이 서버 정보를 추가해야 합니다. 이 경우 모든 것을 relay.mydomain.com에 릴레이하게 됩니다.

define(`SMART_HOST', 'relay.mydomain.com')dnl

또한 메일도 이 시스템을 경유하여 릴레이되어야 합니다. 최선의 방법은 내부 서버에 의해서 지원되는 도메인과의 사이에서만 메일을 릴레이하는 것입니다. 다음 옵션은 이 서버를 매개로 하여 메일을 송수신할 수 있는 도메인의 리스트로서 /etc/mail/relay-domains 파일을 사용하도록 sendmail에 알립니다.

FEATURE(`relay_entire_domain')dnl

이로써 구성은 종료되었습니다. 서버는 로컬 계정을 제외한 /etc/mail/relay-domains 파일 내의 도메인들 사이에서 주고받는 메일을 relay.mydomain.com에 릴레이하게 됩니다.

최종적인 구성:

OSTYPE(`solaris8')dnl
DOMAIN(`solaris-antispam')dnl
define(`SMART_HOST', 'relay.mydomain.com')dnl
FEATURE(`relay_entire_domain')dnl
MAILER(`local')dnl
MAILER(`smtp')dnl
Outgoing Only

보안상 무차별적인 메일 릴레이는 설정하지 않을 것을 권장합니다. 모든 시스템은 MTA를 사용해 전자 메일을 송신해야 하며, 프로그램에 따라서는 SMTP 서버를 매개하여 전자 메일을 릴레이하는 기능이 필요합니다. 이러한 요건의 경우 로컬 서비스의 메일을 릴레이하면서 시스템을 오픈 릴레이가 되지 않도록 보안을 유지하려면 루프백 주소에만 접속하도록 Sendmail을 구성합니다.

Sendmail을 발신 전용으로 하려면 Sendmail이 원격 호스트로부터의 메일을 수신하지 않도록 할 필요가 있습니다. 이것에는 로컬 루프백 주소만을 Sendmail에 강제적으로 사용하게 합니다.

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

그 외의 옵션은 필요하지 않습니다. Sendmail는 기본값으로 로컬 시스템에서 외부로 보내는 메일을 전송합니다.

최종적인 구성:

OSTYPE(`solaris8')dnl
DOMAIN(`solaris-generic')dnl
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
MAILER(`local')dnl
MAILER(`smtp')dnl

다음 수행 단계

릴레이 서버 옵션의 자세한 내용은 sendmail.org의 팁에서 Allowing controlled SMTP relaying in Sendmail 8.9 and later를 참조하십시오. 특히 access_db 옵션을 사용하여 보다 신뢰성이 높은 스팸메일 대책용 필터링 릴레이 서버를 구성하는 방법의 절을 참조하십시오.

변경 방법을 이해하였으면 다음으로는 어떠한 변경 사항을 적용할지를 결정할 수 있습니다. 먼저 /usr/lib/mail/README를 읽으십시오. 이 파일에는 Sendmail의 구성 및 m4 매크로 등에 관한 많은 정보가 기재되어 있습니다. 그리고 나서 다음의 리소스를 읽으십시오.

서적: 사이트:

감사의 말씀

이 기사를 감수해 주신 Sun Microsystems의 John Beck에게 감사의 말씀을 드립니다.


Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin
  
 
BigAdmin Upgrade Hub