sendmail 구동시 권한 설정
chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
본 자료 출처 : http://www.kjist.ac.kr/new/com-services/manual/manual_02.html |
|||||
1. 자료 받기 |
|||||
2. 압축을 풉니다. |
|||||
shell> gzip -cd sendmail-8.10.1.tar.gz |tar xvf - |
|||||
3. 문서 확인 |
|||||
|
|||||
4. 컴파일 |
|||||
shell> cd sendmail sendmail-8.10.1 cf/cf 디렉토리에서, generic-osname_version.mc 와 같은 형식의 file 들 중 , 자신의 os name 과 version에 가장 가까운 것을 선택하여 config.cf 로 복사한다.
shell> sh Build sendmail.cf -> sendmail.mc 를 바탕으로 sendmail.cf 를 만든다
shell> sh Build installshell> cd /etc/mail shell> touch access relay-domains relay-domain은 domain name별로 제어하기 위해서다.
abc.domainname.com localhost shell> /usr/sbin/makemap hash access < access shell> chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue shell> chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue shell> newaliases shell> /usr/lib/sendmail -bi --> 제대로 설치되었는지 확인. /etc/mail/aliases: 3 aliases, longest 10 bytes, 52 bytes total
|
|||||
<sendmail 설정하기> Sendmail에서 가장 중요하고도 어려운 부분이 sendmail.cf 파일의 설정입니다. O’Reilly사에서 Sendmail에 대한 전문서적이 나올 정도로 방대하고 다양한 기능을 가지고 있으며 사용법도 매우 다양합니다. Sendmail을 사용하기 위해 기본적으로 알아야 할 설정 파일들에 대해 살펴보겠습니다. |
|||||
1. /etc/sendmail.cf Sendmail의 가장 중요한 설정파일로 /etc 또는 /etc/mail 디렉토리에 자동으로 설치되어 있습니다. Sendmail.cf에 대한 자세한 내용은 Bryan Costales 와 Eric Allman이 집필한 O’Reilly의 Sendmail을 참고하십시요. 여기서는 간단히 메일서버를 관리하기 위한 몇 가지 설정에 대해서만 다루겠습니다. Fw/etc/mail/local-host-names FR-o /etc/mail/relay-domains DnMAILER-DAEMON Kaccess hash /etc/mail/access O ForwardPath=$z/.forward.$w:$z/.forward 사용자의 홈 디렉토리에 .forward라는 파일을 만들고 포워딩시킬 메일 주소를 입력하면 됩니다. # O MaxMessageSize=1000000 O QueueDirectory=/var/spool/mqueue O Timeout.queuereturn=5d O Timeout.queuewarn=4h
사용자계정에 대문자가 있는 경우에도 메일을 받을 수 있도록 설정하려면 Mlocal로 시작하는 부분을 찾아 F= 부분에 'u'를 추가합니다. |
|||||
2. /etc/mail/access |
|||||
스 팸메일을 방지하기 위해 Relay를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한 파일입니다. 먼저 vi에디터나 emacs를 사용해 /etc/mail/access파일을 열고 릴레이를 허용하거나 거부할 IP 주소를 아래와 같이 입력합니다. 203.243.88 RELAY -> 203.243.88 네트워크에 속하는 C클래스의 IP주소에 대해서는 메일을 [보내기/받기]를 할 수 있지만 다른 IP주소에서는 메일을 받을 수만 있습니다. spam.com REJECT -> spam.com 도메인에 속한 모든 호스트에서 오는 메일은 완전히 거부됩니다.
# makemap hash access < access 위의 작업은 access 파일을 수정할 때마다 해주어야 하며, Sendmail을 다시 시작할 필요는 없습니다. 예를 들어 A라는 사람은 IP주소가 203.243.88.21이라는 컴퓨터에서 aroma@mail.linuxul.com이라는 메일을 사용한다고 가정하고, B라는 사람은 IP주소가 168.211.106.34인 컴퓨터에서 nea@yahoo.co.kr 이라는 메일을 사용한다고 가정합니다. B가 A에게 메일을 보내면 메일은 203.249.88.21로 가는 것이 아니라 mail.linuxul.com서버의 /var/mail 디렉토리 밑에 aroma라는 파일로 복사가 됩니다. 그러면 A는 MUA 프로그램을 사용해 메일을 확인할 수 있지요. 그런데 여기서 중대한 문제점이 생겨나게 됩니다. 아무나 주소를 맞게 보내면 그냥 /var/mail에 쌓이게 되는 것이죠. 그래서 하드디스크가 메일로 꽉 차버리거나, 네트워크 전송량의 증가로 네트워크가 마비되는 경우가 생겨나게 됩니다. 이 문제를 막기 위해서 고안된 방법이 바로 Relay라는 방법입니다. Relay에는 두 가지 방식이 있습니다. o 첫 번째는 메일을 보내는[송신] 컴퓨터의 제한 Relay로 주로 쓰이는 방법은 메일을 확인하는 컴퓨터는 제한하지 않고 메일을 보내는 것을 제한하는 것입니다. 즉, 위의 그림과 같이 /etc/mail/access파일에 203.243.88의 C클래스를 허용 가능하게 해주면 203.243.88.21 처럼 허용 그룹에 들어 있는 컴퓨터에서는 메일을 보내고/받을 수가 있지만, 그룹에 들지 않은 168.211.106.34 라는 컴퓨터에서는 메일을 확인할 수만 있습니다. 또한 spam.com이라는 도메인에 속한 호스트에서 오는 메일 은 보내기와 받기가 모두 거부됩니다. |
|||||
3./etc/mail/local-host-names |
|||||
메일을 수신할 호스트의 이름을 입력하는 파일로, Sendmail 8.9.x 버전이하에서 사용되었던 sendmail.cw 파일의 명칭이 Sendmail 8.10.x 버전부터는 local-host-names로 변경되었습니다. Sendmail 서버는 이곳에 적힌 호스트 의 이름으로 메일이 들어오면 더 이상 다른 서버로 메일을 보내지 않고 자신의 메일박스에 저장합니다. 아래와 같이 메일서버의 호스트이름을 입력하거나 여러 개의 가상호스트를 사용한다면 모두 입력해야 합니다. |
|||||
4. /etc/aliases |
|||||
특정 사용자에게 온 메일을 다른 사람에게 보내주거나, 메일링리스트를 작성해야 하는 경우에 사용되는 파일로 보안에 주의하여 사용해야 합니다. aliases 파일을 열어보면 시스템 계정들이 아래와 같이 root로 alias되어 있습니다. |
|||||
5. 메일링 리스트 작성하기 |
|||||
메일링리스트란 동일한 메일을 여러 사람에게 보내야 할 경우 사용되며, 그룹을 지정해 구성원들의 목록을 써주거나 특정 파일을 지정하는 방법 등으로 사용됩니다. 예를 들어 aroma, bulpeng, bibi와 같은 사용자들을 test1라는 그룹으로 지정해 보겠습니다.
test2: :include:/etc/maillist/test2 # cat /etc/maillist/test2 파일을 수정한 후에는 newaliases 명령으로 aliases.db를 만들어 줍니다 .# newaliases |
|||||
< MAIL Server에서의 한글 지원문제> |
|||||
메일에서 사용되는 SMTP프로토콜은 기본적으로 7bit문자만을 기반으로 제작되었습니다. 하지만 한글의 경우 EUC-KR로 표현하면 8bit를 사용하기 때문에 문제가 생길 수 있습니다. 따라서 메일에서 사용하기 위해 한글의 7bit 표현방법인 ISO-2022-kr(RFC 1557)이 만들어 졌고 메일의 본문에 사용되었습니다(헤더에는 EUC-KR을 B나 Q인코딩 방법으로 인코딩해서 사용했습니다.). 하지만 대부분의 프로그램에서는 한글을 8bit표현방법인 EUC-KR을 사용했으므로 이 두 표현간의 변환을 해 주는 프로그램이 필요했습니다. 이 작업은 크게 MTA, MDA, MUA에서 해 줄 수 있습니다. MTA에서 변환을 해 주는 대표적인 프로그램이 sendmail 8.6.12h2입니다. 이 프로그램은 프로그램으로부터 8bit표현을 입력으로 받아서 다른 곳으로 전송할때 ISO-2022-kr로 변환한 후 전송을 하고, 네트웍을 통해 받은 ISO-2022-kr로 표현된 메일을 EUC-KR로 변환 후 메일박스에 저장하도록 만들어 졌습니다. 그래서 몇년전까지만 해도 대부분의 메일서버에서 sendmail 8.6.12h2를 사용했었습니다. 하지만 SMTP 프로토콜이 8bit문자를 지원하는 ESMTP 프로토콜로 변하면서 본문에서도 ISO-2022-kr대신에 EUC-KR을 사용하도록 표준이 바뀌었습니다. 하지만 이 안을 정식 표준으로 공표하지 않았고, 아직까지 인터넷에는 ISO-2022-kr 로 표현된 메일이 돌아다니기 때문에 이 메일을 EUC-KR로 변환해 주는 작업이 추가적으로 필요하게 되었습니다. ISO-2022-kr을 EUC-KR로 변환해 주는 프로그램들은 UNIX환경에서는 많이 만들어 졌습니다. hconv와 hmconv가 대표적인 프로그램입니다. 이제 관리자가 해 줘야 하는일은 sendmail이 받은 메일을 메일박스로 저장하기 전에 이 프로그램을 통과하게 만들어서 ISO-2022-kr을 EUC-KR로 변환만 해 주면 되게 되었습니다. 이렇게 필터링을 가능하게 해 주는 대표적인 프로그램이 procmail입니다. 여기에서는 procmail을 이용하여 한글 메일을 처리하는 과정을 설명드리겠습니다. 여기에서 알아두셔야 할 내용중에 중요한 내용으로 MDA에 대한 이해입니다. MDA(Mail Delivery Agent)는 MTA(Mail Transfer Agent, 대표적인 예는 sendmail입니다.) 가 받은 메일의 최종적인 도착지가 현재 호스트인경우(sendmail의 경우 sendmail.cw를 참고하여 결정합니다.) 메일을 MDA에게 넘겨줍니다. 보통 시스템의 기본적인 MDA는 /bin/mail입니다. procmail은 /bin/mail대신에 사용할 수 있는 프로그램으로 필터링 기능이 강력하여 한글처리에 이용할 수 있습니다. 따라서 procmail뿐만 아니라 한글 디코딩을 위한 프로그램을 설치하셔야 합니다. 여기에서는 hcode를 사용하도록 하겠습 니다. hcode는 ftp://ftp.kaist.ac.kr/hangul/code/hcode/에서 구할 수 있습니다. 그다음 procmail을 설치합니다. procmail은 대부분의 ftp서버에서 구할 수 있습니다. 그런다음 /etc/procmailrc을 만들어 환경설정을 해준후 sendmail이 MDA로 procmail을 사용할 수 있도록 sendmai.cf를 적절하게 수정합니다. %% 일반적으로 PC의 MUA(Mail User Agent)로 사용되는 프로그램인 Microsoft outlook, Netscape messenger이 한글처리를 자동으로 해주므로 유닉스 시스템용 MUA프로그램인 Mutt나 elm을 사용하지 않은 한 한글 메일을 송, 수신한데 불편은 없습니다. |
|||||