include "top.php" ?>
| 시스템 관리 및 실습 #14 |
| 1. 메일 관련 프로토콜 정리 |
|
- SMTP (Simple Mail Transfer Protocol) 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때 쓰임 SMTP와 관련된 프로토콜의 표준은 STD와 RFC에서 정해진 것이다. 서버에서 서버로의 프로토콜이며 이외의 다른 여러 프로토콜은 메시지를 접속하기 위해서 사용한다. 이와 관련된 프로토콜을 살펴보면 다음과 같다. ① STD 10/RFC 821:두 컴퓨터 사이의 메일 교환 표준을 정의하며 SMTP 자체에 관한 표준으로 TCP/IP 호스트 사이에서 메일을 전달하는데 사용된다. ② STD 11/RFC 822, RFC1049:RFC 822와 RFC 1049에 포함된 메일 메시지의 형식에 관한 표준을 정의하며 공식적인 프로토콜명은 MAIL이다. RFC822는 메일 헤더 필드의 의미를 기술하고 헤더 필드 집합과 그에 대한 해석을 정의한다. RFC 1049는 평문 아스키 이외의 문서 형식들이 메일 본문에서 어떻게 사용될 수 있는지에 대해 기술하고 있다. ③ RFC 974:DNS(domain name system)을 이용한 메일 경로 배정에 관한 표준을 정의하고 있으며 공식 프로토콜명은 DNS-MX이다. STD 10/RFC 821에서는 SMTP를 통해 전달되는 데이터는 상위 비트가 0으로 설정된 7비트 아스키 데이터라고 기술하고 있다. 이는 영문텍스트 메시지를 전송하는데는 적합하지만, 비영어권 데이터 또는 비 텍스트 데이터에 대해서는 부적합하다. 이러한 제약을 극복하기 위해 다음과 같은 접근 방식이 사용된다. ① MIME(multipurpose internet mail extension):RFC 2045부터 RFC 2049에서는 텍스트와 2진 데이터를 RFC 822에서 정의한 7비트 아스키로 코드화하는 메카니즘을 명시한다. ② SMTP Service Extensions:RFC 821에서 정의한 SMTP의 기능을 확장하는 메커니즘을 RFC 1869, RFC 1652, 1870에서 각각 정의하고 있다. - POP3(Post Office Protocol) 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 쓰임 사용자가 쉘 계정이 있는 호스트에 직접 접속하여 메일을 읽지 않고 자신의 PC에서 바로 로컬 메일 리더(유도라나 넷스케이프 메일)를 이용하여 자신의 메일을 다운로드 받아서 보여주는 것을 정의한 프로토콜이다. POP2와 PO3과 함께 널리 사용된다. POP2는 RFC 937에 정의되어 있으며 POP3는 RFC 1725에 정의되어 있다. POP2는 포트번호 109를 사용하며 POP3는 포트번호 110을 사용한다. 이들은 다른 명령어를 사용하지만 기본적으로 같은 기능을 수행한다. POP 프로토콜은 사용자의 로그인 이름과 패스워드를 식별하고, 서버로부터 사용자의 로컬 메일 리더(local mail reader)로 사용자의 메일을 이동시킨다. POP2는 SMTP와 같이 단순한 요구/응답 프로토콜이다. HELO 명령은 검색중인 메일박스의 계정을 위해서 사용자의 이름과 패스워드를 제공한다. HELO 명령에 대한 응답으로 서버는 메일박스에 메시지의 수를 보낸다. READ 명령에 의해 메일을 읽기 시작한다. RETR 명령은 현재 메시지의 전체 텍스트를 검색한다. ACKD는 메시지의 수신 확인 명령으로 서버로부터 해당 메시지를 삭제한다. 각각의 메일에 대한 수신 확인 후에 서버는 새로운 메시지에 바이트의 수를 보낸다. 만약 바이트가 0이라면 더이상 검색할 메시지가 없다라는 것을 가리키며 클라이언트는 QUIT 명령에 의해 세션을 종료한다. POP3에 대한 명령은 POP2와 완전히 다르지만 유사한 기능을 수행한다. POP3의 USER 명령은 사용자의 계정 이름을 제공하고 PASS 명령은 사용자의 패스워드를 제공한다. STAT 명령은 읽지 않은 메시지의 수와 바이트 크기를 출력한다. RETR 명령은 해당 번호의 메시지를 검색한다. DELE 명령은 해당 번호의 메시지를 삭제한다. LAST 명령은 가장 최근에 접근된 메시지의 번호를 출력한다. LIST 명령은 모든 메시지나 해당 메시지의 크기를 출력한다. QUIT 명령은 세션을 종료한다. - IMAP(Internet Mail Access Protocol) 클라이언트가 메일 서버에서 메일을 읽기 위한 인터넷 표준 프로토콜의 한 가지로서, TCP/IP의 상위 프로토콜이며 최신 버전인 IMAP4는 RFC2060으로 규정되어 있다. POP3보다도 유연하고 뛰어나다고 할 수 있다. 서버측에 메일 박스를 둘 수 있다는 것과 메일의 헤드만을 읽을 수 있는 것이 특징이다. 클라이언트는 서버의 메일 박스에서 메일을 삭제하지 않고 필요한 메일만 복사할 수 있다. 또 저속 다이얼-업 접속시에는 헤드만 읽고 판단하여 크기가 큰 메일이나 우선도가 낮은 메일을 나중에 읽거나 삭제할 수 있다. 이러한 특징 때문에 이동 기기 액세스에 적합한 프로토콜이라고 할 수 있다. |
| 3. sendmail 설정 파일 정리 |
sendmail 설정파일 정리 : sendmail 데몬실행 파일 /usr/sbin sendmail.cf 주설정 파일 /etc/mail sendmail.mc 메크로 설정파일 /etc/mail access 중계 기능 설정 파일 /etc/mail access.db 중계 기능 db 파일 /etc/mail mailertable 특정 도메일 메일러 라우팅 설정 파일 /etc/mail mailertable.db mailer db파일 /etc/mail domaintable domain mapping 설정파일 /etc/mail domaintable.db domain mapping 설정 db파일 /etc/mail virtuserbable 가상메일 설정파일 /etc/mail virtuserbable.db 가상메일 설정 db 파일 /etc/mail ailases 알리어스 파일 /etc local-host-names 다중 메일 서버를 위한 기록파일 /etc/mail |
| 4. /etc/mail/aliases 이용 방법 정리 |
|
1) 기능 : 특정 사용자에게 온 메일을 다른 사람에게 보내주거나, 메일링리스트를 작성해야 하는 경우에 사용되는 파일로 보안에 주의하여 사용해야 한다. aliases 파일을 열어보면 시스템 계정들이 아래와 같이 root로 alias되어 있다. 또한 특정 사용자를 다른 사용자로 alias 시킬 수도 있다. 일종의 메일계정을 다른 메일주소나 다른 계정으로 매칭하는 기능이다. 이런 면에서 /etc/mail/virtusertable 과 거의 비슷하지만 약간 성격이 다르다. /etc/mail/virtusertable은 가상 도메인이 많이 있을 경우에 일반적으로 사용하는 방법이다. 2) 작성할 형식 : <계정 또는 가상유저>: <포워딩할 계정또는 가상유저 또는 다른 메일주소 리스트> 계정 : /etc/passwd 파일에 등록된 유저, 즉 시스템 유저와 일반 유저를 포함한 계정 가상유저 : /etc/passwd 파일에 존재하지 않은 유저로 시스템 관리자가 정하는 유저임 포워딩할 계정 : /etc/passwd 파일에 존재하는 시스템 유저가 아닌 일반 유저의 계정 다른 메일주소 : localhost에 등록되어 있지 않은 다른 메일서버(기계)의 메일주소 3) 리스트 작성 : 컴마(,)로 구분하여 계정또는 메일주소를 나열 4) 가상유저 생성 : /etc/passwd 파일에 aaa, bbb, ccc 라는 계정이 없고, love 라는 계정은 존재한다면, aaa: love bbb: love ccc: love 으로 설정하여 aaa@localhost, bbb@localhost, 모두 love 계정으로 3개의 메일이 가게됨 5) root로 오는 메일 : root: admin 으로 설정하면 root로 오는 메일을 admin이라는 유저가 받을 수 있다. |
| 5. /etc/mail/access 설정 방법 정리 |
|
/etc/mail/access 스팸메일을 방지하기 위해 Relay를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한 파일이다. [Relay란] 예 를 들어 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 첫 번째는 메일을 보내는[송신] 컴퓨터의 제한 o 두 번째는 메일을 받는[수신] 컴퓨터의 제한 Relay 로 주로 쓰이는 방법은 메일을 확인하는 컴퓨터는 제한하지 않고 메일을 보내는 것을 제한하는 것이다. 즉, /etc/mail/access파일에 203.243.88의 C클래스를 허용 가능하게 해주면 203.243.88.21처럼 허용 그룹에 들어 있는 컴퓨터에서는 메일을 보내고/받을 수가 있지만, 그룹에 들지 않은 168.211.106.34라는 컴퓨터에서는 메일을 확인할 수만 있다. 또한 spam.com이라는 도메인에 속한 호스트에서 오는 메일은 보내기와 받기가 모두 거부된다. /etc/mail/relay-domains을 사용해도 된다. 하지만, 차이점은 relay-domains을 사용하면sendmail데몬을 다시 실행시켜 주어야 하지만 /etc/mail/access파일을 사용하면 다시 실행할 필요 없이 makemap hash /etc/mail/access < /etc/mail/access라고 실행만 시켜주면 된다는 것이다. 먼저 vi에디터나 emacs를 사용해 /etc/mail/access파일을 열고 릴레이를 허용하거나 거부할 IP 주소를 아래와 같이 입력한다. 203.243.88 RELAY -> 203.243.88 네트워크에 속하는 C클래스의 IP주소에 대해서는 메일을 [보내기/받기]를 할 수 있지만 다른 IP주소에서는 메일을 받을 수만 있다. spam.com REJECT -> spam.com 도메인에 속한 모든 호스트에서 오는 메일은 완전히 거부된다. 이와 같이 설정한 후에는 아래의 명령으로 DB파일(access.db)을 만들어 준다. # cd /etc/mail # makemap hash access < access 위의 작업은 access 파일을 수정할 때마다 해주어야 하며, Sendmail을 다시 시작할 필요는 없다. |
| 6. sendmail deamon 관리 정리 |
|
1) Sendmail deamon을 실행하는 쉘을 바꾸어주기 Sendmail의 보안을 위해서는 보통 프로그램의 /bin/sh을 smrsh program으로 바꾸어 주어야 한다. /bin/sh로 실행이 되었을 경우에 해킹의 우려가 있으므로, 이를 제한하기 위해서 Sendmail 프로그램의 실행을 제한할 필요가 있기 때문이다. 하지만, 레드햇의 RPM으로 설치했을 경우에는 Default로 설정이 되어 있다. /etc/mail/sendmail.cf 또는 /etc/sendmail.cf 파일에서 수정 후 sendmail.cf 파일을 저장하고 아래와 같이 sendmail deamon을 재시작한다. 2) 인증되지 않은 사용자의 Sendmail Deamon사용을 제한하기 Sendmail에는 Anti-Spam Feature를 포함하고 있다. 이 기능을 제대로 사용하기 위해서는 /etc/mail/sendmail.cf 또는 /etc/sendmail.cf파일에서 옵션을 바꾸어 주어야 한다. Sendmail에서 goaway 옵션을 사용할 경우에 SMTP의 EXPN, VRFY명령어를 제한하게 된다. 이로 인해서 VERB명령어도 더불어 제한하게 된다. |
| 7. pop 서버 역할 정리 |
|
- POP [post office protocol] POP는 인터넷에서 자신에게 도달된 전자우편을 자신의 PC에 받아들이기 위한 통신규약이다. 이것으로 전자우편을 수취한다. 인터넷에서는 자신에게 온 메일은 우체국 역할을 하는 메일 서버의 자산의 사서함에 일단 저장된다. 메일은 다음과 같은 경로로 받아들인다. 1. 메일서버에 접속한다.(접속 소프트웨어) 2.자신에게 온 메일이 도달되었는지 문의한다.(전자우편 소프트웨어) 3.새로운 메일이 있으면 자신의 PC로 받아서 읽는다.(전자우편 소프트웨어) 이때의 통신 규약이 POP이고, 그기능을 하는 프로그램 또는 컴퓨터를 POP 서버라고 한다. 또 전자우편 소프트웨어로 다음의 옵션 설정이 가능하다. 1. 메일 서버에 보존된 메일을 삭제한다. 2. 메일 서버에 보존된 메일의 복사본을 남긴다. 3. 또 전자우편을 수취하기 위해서는 메일 계정 및 메일 패스워드가 필요하기 때문에 새로운 전자우편 소프트웨어에 설정해 둔다. POP서버는 SMTP 서버의 부담을 가볍게 하기 위한 것이다. 수백명이나 되는 사용자가 동시에 하나의 SMTP 서버에 접속하여 메일을 읽으면 큰 부하가 걸려서 처리 속도가 늦어진다. POP서버는 그것을 피하고 쾌적한 조작 환경을 가져오기 위한 것이다. |
| 8. IMAP 서버 역할 정리 |
|
- IMAP(internet messaging access protocol) IMAP을 사용한 경우, mail server에 mail folder를 만들어 mail을 download가 아닌 copy의 개념이다. 물론 mail sever의 origin msg는 지워지지 않는다. 그래서 몇 번을 다시 mail 열어 보기가 가능하다. 또한, mail의 전체 msg를 부분적으로 head만 보여주기도 한다. 이로인해서 mobile device에서 access할 때 장점을 갖게 된다. 클라이언트가 메일 서버에서 메일을 읽기 위한 인터넷 표준 프로토콜의 한 가지로서, TCP/IP의 상위 프로토콜이며 최신 버전인 IMAP4는 RFC2060으로 규정되어 있다. POP3보다도 유연하고 뛰어나다고 할 수 있다. 서버측에 메일 박스를 둘 수 있다는 것과 메일의 헤드만을 읽을 수 있는 것이 특징이다. 클라이언트는 서버의 메일 박스에서 메일을 삭제하지 않고 필요한 메일만 복사할 수 있다. 또 저속 다이얼-업 접속시에는 헤드만 읽고 판단하여 크기가 큰 메일이나 우선도가 낮은 메일을 나중에 읽거나 삭제할 수 있다. 이러한 특징 때문에 이동 기기 액세스에 적합한 프로토콜이라고 할 수 있다 |
| 맨위로 |
| 1.메일 관련 프로토콜 |
| 3.sendmail 설정 파일 |
| 4. /etc/mail/aliases 이용 방법 |
| 5./etc/mail/access 설정 방법 |
| 6.sendmail deamon 관리 |
| 7.pop 서버 역할 |
| 8.imap 서버 역할 |
| 맨아래로 |
| 이동 |