티스토리 뷰


0. 개요


도메인을 활용하여 메일을 수신할 수 있는 환경을 구성하려 한다.

Local Network 에서 테스트 도메인 정보를 알고 있는 네임서버를 구축하고

메일 수신을 테스트 하기 위해 메일 수신서버와 메일 발신서버를 구축해본다.




1. 관련 용어


(1) SMTP(Singple Mail Transfer Protocol)  :  다른 메일 서버로 메일을 보내거나 다른 메일 서버로부터 메일을 받을 때 이용되는 프로토콜

(2) POP3(Post Office Protocol) : SMTP 에 의해서 메일 서버에 도착한 메일을 클라이언트 사용자가 전송받을 때 이용하는 프로토콜

(3) IMAP(Internet Mail Access Protocol) :  POP3 와 동일한 역할을 하는 프로토콜

(4) MUA(Message User Agent) : 사용자가 메일을 보내기 위하여 사용하는 프로그램(아웃룩 익스프레스 등)

(5) MTA(Message Trasmit Agent) : 사용자가 MUA 에 의해서 전달받은 메세지를 다른 메일 서버로 전달해 주는 프로그램(sendmail, qmail 등)




2. 메일 송수신 과정


(1) 사용자가 MUA 를 이용하여 메세지 작성

(2) 메일 서버의 /var/spool/mqueue 에 큐잉되었다가 MTA 에 의해서 외부 메일서버로 메일 전달

(3) 메일을 수신하는 메일서버는 MTA 에 의해서 mail 을 전송받아 /var/spool/mail 디렉토리에 계정이름으로 메일 저장 

     메일 수신시 수신메일서버의 /etc/passwd 에서 계정을 체크하며, 존재하지 않는 계정이라면 발신서버로 반송됨

(4) 수신서버에 도착한 메일은 사용자가 MUA 를 사용하여 POP3 또는 IMAP 으로 수신메일서버를 체크하여 메일 다운로드하게 됨

※  메일을 발신,수신이 동일한 로컬호스트 환경이라면 메일전송은 MTA 가 하지 않고 procmail 과 같은 MDA(Mail Delivery Agent) 가 담당하게 됨

     메일 수신위치는 동일하게 /var/spool/mail 의 해당 계정명에 저장함




3. SendMail 설치하기 


yum install sendmail sendmail-cf sendmail-devel


yum 사용방법

 

yum은 인공지능적인 툴로 인터넷을 통하여 자동적으로 설치해주는 기능으로 rpm이 수동적인 반면 보다 편리한 yum을 사용하길 권장함

저장소의 URL은 /etc/yum.repos.d/ 디렉토리의 파일에 저장됨


설치하기
 yum install 패키지 이름

 # y 
옵션은 설치시 묻지 않고 설치 진행함.
 yum -y install 패키지 이름

 # 
업데이트 가능 목록 확인
 yum check-update

 # 
패키지 업데이트
 yum update 패키지 이름

 # 
패키지 삭제
 yum remove 패키지 이름

 #
 패키지 정보확인
 yum info 패키지 이름

 # 
로컬 파일로 설치
 yum localinstall 패키지 이름




4. SendMail 설정하기 ( /etc/mail/sendmail.cf )


- 수신 메일서버 설정

(1) 메일 호스트 지정하기(Cw)

    . SendMail 을 설정하는 데 있어서 가장 중요한 부분으로 메일 서버의 호스트명을 지정해주는 기능

    . Cworiginalchoi.net 과 같이 설정해주면 됨

(2) 메일 호스트 지정하기(Fw)   

    . 기본설정은 Fw/etc/mail/local-host-names 으로 /etc/mail/local-host-names 파일을 불러들임

    . /etc/mail/local-host-names 에는 각 라인마다 도메인을 입력해주면 됨

(3) 메일 릴레이 설정(Access list database)

   . 스팸메일을 차단하기 위하여 디폴트로 설정되는 값으로 모든 네트워크에 대해 메일 릴레이 기능을 선택적으로 제어 가능

     즉, 자신의 네트워크가 아닌 다른 네트워크상의 호스트에서 자신의 메일 서버를 이용하여 메일을 전송하는 것을 원천적으로 거부하는 기능

   . /etc/mail/access 파일에 릴레이 허용하고자 하는 네트웍 주소와 허용여부를 입력 

   . access 파일 DB 화 : makemap hash /etc/mail/access < /etc/mail/access

   . SendMail 재시작 


Access Control Option


OK            지정된 호스트나 사용자가 보낸메일은 다른 설정 rule 이 거부하는 경우에도 받아들인다.

RELAY      지정된 호스트에 대해 SMTP 메일 중계 역할을 한다. 

                즉 지정된 도메인에 있는 사용자에게 오는 메일을 받고 그 도메인에있는 사용자가 서버를 통해 메일을 보낼수 있도록 한다. 

    지정된 도메인에서 오는 메일은 다른 룰이 거부하는 경우에도 받아 들인다.

REJECT     지정된 도메인과 관련된 모든 메일(수신/발신)을 거부한다.

DISCARD    $#discard mailer를 사용해 메세지를 완전히 폐기한다. 

    메세지를 받기는 하지만 배달은 하지않고 발신자에게 폐기사실을 알리지 않기 때문에, 발신자는 배달되었다고 생각하게 된다.


501 <message> 지정된 user@host 와 발신자의 주소가 전체 혹은 부분적으로 일치할경우 이메일을 받지 않는다. 

                       return mail 에 포함될 에러 메세지 구문을 지정하여 넣을수 있다.

553 <message> 발신자의 주소에 호스트명이 없을 경우 메일을 받지 않는다.

550 <message> 지정된 도메인과 관련된 메일을 받지 않는다.


C Class 의 경우 "A.B.C     RELAY" 와 같이 기록한다.


사용예)

@hotmail.com                    550 Don't send me any Spam

brown@originalchoi.net      550 Sorry!. His account was expired  

10.0.0                RELAY

100.0.0.5            RELAY


(4) 메일 호스트 지정(Dj)

   . Djoriginalchoi.net (Dj$w 로 localhost name 을 사용할 수 있음)

(5) 전달모드 설정

   .  O Delivery=background 를 아래 4가지 레벨 중 하나로 지정해서 사용할 수 있다.

     - ineractively : Mqueue 에 있는 메일들을 동기화 모드로 작동시켜 메일을 전송함.

     - background : Mqueue 에 있는 메일들을 비동기화 모드로 작동시켜 전송함

     - queue : 메일을 수신하여 Queue 에 저장하도록 함.

     - defer  : 메일을 수신하여  최대한 빨리 Queue 에 저장함

(6) SMTP Daemon Options

   . O DaemonPortOptions=Port=smtp,Addr=127.0.0.1,Name=MTA 

   . 위 설정에서 Addr=127.0.0.1 삭제 필요

   . 기본적으로 127.0.0.1 에서만 접근가능하도록 되어 있어 SendMail 이 정상작동하더라도 외부에서 접근이 불가능한 상태임

 (7) 서버 재기동 시 SendMail 자동 실행

    . ntsysv 명령어 통해 등록

 (8) 그외

    . 메세지 크기 조정, 타임아웃 시간 조절, 메일 저장 큐 값 설정, 메일 알리어스, 가상메일 유저 설정, 동적 릴레이 기능 등이 있음


  - 발신메일서버 설정

(1) 메일 호스트 지정하기(Cw)

(2) 메일 호스트 지정하기(Fw)   

(4) 메일 호스트 지정(Dj)




5. 네임서버 설정하기


Bind 를 활용해 네임서버를 구축하는 것은 매우 방대하고 어려운 작업이다.    

DNSMASQ 를 활용하면 네임서버의 /etc/hosts 를 활용하여 DNS 기능을 제공할 수 있다.


DNSMASQ 의 설치 및 활용은 아주 간단하다.

메일서버의 도메인명과 네임서버의 hosts 파일의 내용이 틀리지 않도록 주의하자.



(1) yum install dnsmasq

(2) /etc/hosts 에 도메인 추가

# cat /etc/hosts 10.0.0.2 originalchoi.net 10.0.0.3      test.com

(3) 클라이언트 서버의 /etc/resolv.conf 에 네임서버 주소를 입력


DNSMASQ 를 기동한 Local Name Server 이 인터넷에 연결가능한 Public Name Server 를 DNS Server 로 바라보고 있다면

Local Name Server 를 바라보는 Local Client 들은 정상적인 DNS 질의와 Local Name Server 의 hosts 정보를 활용한 DNS 질의를 모두 할 수 있다.


DNSMASQ 에 대한 보다 자세한 내용은 여기 를 참고하라



6. 메일 전송하기


[mail_sender:/] telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail_sender ESMTP Sendmail 8.13.8/8.13.8; Tue, 10 Sep 2013 13:28:38 +0900

helo mail_sender

250 mail_sender Hello localhost.localdomain [127.0.0.1], pleased to meet you

mail from : tset@test.net

250 2.1.0 tset@test.net... Sender ok

rcpt to : root@originalchoi.net

250 2.1.5 root@originalchoi.net... Recipient ok

data

354 Enter mail, end with "." on a line by itself

subject : This is Test Mail

helo, smtp!

.

250 2.0.0 r8A4ScvV024355 Message accepted for delivery


quit

221 2.0.0 restore closing connection

Connection closed by foreign host.


[mail_sender:/] 





7. 트러블 슈팅


  - 대부분의 경우 mqueue 에 쌓인 메일 로그 또는 발신메일 계정의 반송 메일을 확인해보면 된다.

  - 큐에 쌓인 메일 강제로 다시 보내기 : sendmail -q –v

[root@lmdn041 mail]# sendmail -q -v


Running /var/spool/mqueue/r6V5lWYV031684 (sequence 1 of 1)

root@originalchoi.net... Connecting to originalchoi.net. via esmtp...

root@originalchoi.net... Deferred: Connection refused by originalchoi.net.






8. 주의점


  - 중간 방화벽의 SMTP 허용 여부, 도메인 네임 설정의 오탈자, DNS 정상 작동, SendMail Access, Relay 설정 등을 꼼꼼히 확인해보자





9. 참고자료


  - 서자룡과 함께하는 Fedora Core 리눅스 그대로 따라하기, 서자룡 지음, 2005


  


728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함