본문 바로가기

전공 과목 시험정리/서버구축실무

메일 서버

1. 메일 서버 

가. 메일 서버의 개요

- MTA (Mail Transfer Agent) 라고도 불림.

- 메일 서버는 메시징 시스템이라는 또 다른 프로그램들과 함께 사용됨.

- 이메일 송수신에 사용되는 프로토콜 3가지

SMTP (Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때 사용

POP3 (Post Office Protocol 3) : 메일서버에 도착되어 있는 메일을 클라이언트로 가져올 때

IMAP (Internet Message Access Protocol) : POP3 와 용도가 같음


나. 메일 서버의 작동원리

1. kim 은 daum.net 이라는 메일 서버에 계정이 있고, lee 는 naver.com 에 계정이 있다.

2. kim 이 컴퓨터 1에서 메일 클라이언트 프로그램 (outlook,thunderbird 등) 을 실행하여 daum.net에 접속하여 [받는이]에

lee@naver.com 이라 쓰고 메일을 보낸다. (SMTP 이용)

3. 메일서버1 (daum.net)은 kim이 보낸 메일을 잠시 임시 장소에 보관, 메일서버1은 naver.com의 IP주소를 얻어옴

4. 메일서버1은 메일을 인터넷을 통해 메일서버2 (naver.com) 에게 전송함. (SMTP 이용)

5. 메일서버2 는 받은 메일의 수신자 이름을 확인하고, lee 라는 계정이 있으면 lee의 메일박스에 메일을 넣어둔다.

6. lee는 메일 클라이언트 프로그램을 통해 자신의 메일서버에서 메일박스의 메일들을 컴퓨터로 가져온다. (POP3/IMAP)


다. 메일서버의 종류

1) 센드메일 (sendmail)

- 현재 사용되고 있는 메일 서버 가운데 가장 강력하고 많이 사용되는 프로그ㅐㄻ

- 환경설정이 Qmail에 비해 까다롭고, 보안이나 속도 문제가 있음.


2) Qmail 

- 센드메일에 비해 환경설정이 비교적 간단하고 다른 운영체제에 대한 이식성이 강하며 보안적인 측면에서도 강력한 안정성을 가지고 있음

- 시스템 자원의 소모가 크지 않아 같은 시스템에서 센드메일보다 더 많은 메일을 전송할 수 있음.


3) MS Exchange Server

- Microsoft 사에서 개발한 메일서버 프로그램으로 윈도우즈 서버에서만 사용할 수 있음.

- 액티브 디렉토리와 연결되기 때문에 인터넷 상의 다른 서버들과 연결되어 정보를 공유하는데 매우 우수한 성능을 발휘.

- 유료임


2. 센드메일 설치

가. 센드메일 설치

패키지 확인 및 설치

rpm -qa | grep sendmail         // 패키지 설치 확인

yum install -y sendmail sendmail-cf // 패키지 설치


나. 환경설정

vi /etc/mail/sendmail.cf


1. 도메인 이름을 가진 메일서버 / 메일을 수신할 호스트 이름을 명시한 파일


Cw localhost            // 도메인 이름을 가진 메일 서버

# ~~~~~

Fw /etc/mail/local-host-names  // 메일을 수신할 호스트 이름을 명시한 파일


2. Relay 허용 설정

FR -o /etc/mail/relay-domains


--> relay-domains 파일에는 Relay를 허용할 호스트의 이름을 설정한다. 만약 이곳을 주석으로 처리하면 모든 IP에 대해 Relay 가 허용되어 스팸메일 문제가 발생할 수 있다.



3. Relay 사용시 IP 또는 도메인 설정

Kaccess hash -T<TMPF> -o /etc/mail/access.db

--> Relay 를 허용하거나 거부할 특정 IP와 도메인을 설정하는 파일


4. 메일 최대 크기 설정

#O MaxMessageSize=0

--> 크기를 설정하면 (주석해제) 설정된 크기보다 큰 메일은 전송할 수 없다. Byte 단위이다.


5. 포워딩 파일 설정

O ForwardPath=$z/.forward.$w:$z/.forward

--> 여러 개의 메일을 가진 경우, 특정 메일 계정으로 들어온 메일을 다른 메일로 보내주는 포워딩 파일을 설정한다.

---> 사용자의 홈 디렉토리에 .forward 파일을 만들고 포워딩 시킬 메일 주소를 입력한다.


Ex) 

su - hyunwoo   // hyunwoo 라는 계정으로 접속하여 

vi .forward      // .forward 라는 파일을 만듬


---.forward---

asdf@hw.com

fdsa@hw.com

-------------


--> hyunwoo@hw.com 으로 오는 메일은 asdf@hw.com 과 fdsa@hw.com 으로 포워딩됨.


6. 데몬 옵션 - SMTP 포트 접속의 제한

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

--> SMTP 포트 접속에 대한 제한을 어느 범위로 정할 것인지 설정.

위 설정에 대한 경우,

127.0.0.1 만 SMTP 접속을 허가하고 메일을 발송할 수 있게 되어있다.

외부 접속 허용시 Addr=127.0.0.1 부분을 삭제해주면 된다.


7. 큐 디렉토리 설정 (임시 저장 디렉토리)

O QueueDirectory=/var/spool/mqueue

--> 메일 전송 시 사용하는 임시 디렉토리. sendmail 에서는 메일의 수,발신 시 즉시 진행하지 않고 여기에 일시적으로 보관하다가 전송한다.


8. 메일 재발송 기간 설정

O Timeout.queuereturn=5d

--> 문제가 생겨 수신 메일서버에서 수신이 지연되면 5일 동안은 보관하고 있다가 다시 메일을 보내는 설정이다.

5일이 지나게 되면 발송자에게 리턴 메일을 보낸다.


9. 메일 오류 시 경고 메세지 전송 시간 설정

O Timeout.queuewarn=4h

--> 메일 전송 시 수신 메일서버에 문제가 생겨 받지 못할 때 4시간 동안은 발송 시도를 해본 다음 발송이 실패했을 때 발송자에게 경고 메일을 리턴해준다.


[+] 8번과 9번은 각각 리턴메일, 경고메일을 리턴하는 것이 다르다.



vi /etc/mail/local-host-names

도메인에 대한 메일을 수신하기 위해 /etc/mail/local-host-names 파일에 도메인을 입력한다.


# local-host-names - include all aliases for your machine here.

hw.com


--> 메일서버는 여기에 있는 도메인을 체크하고 메일을 수신한다.


vi /etc/mail/access

- access 파일은 스팸메일을 방지하기 위해 Relay 를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한 파일.


--> 특정 IP의 주소 또는 도메인, Email, 특정 네트워크 범위에 대해 Relay를 거부할 수 있도록 함.

사용법: Connect: [릴레이 대상] Tab [옵션]


Connect : localhost.localdomain    RELAY

Connect : naver.com    RELAY

Connect : 192.168.0.2    REJECT

Connect : i.am.spam    ERROR:"550 not accepted at this server"


Relay 옵션

RELAY    릴레이 허용. 허용된 대상은 메일의 수/발 신이 가능하다.

REJECT    이 옵션으로 지정된 대상은 메일의 수/발 신이 불가능하다.

DISCARD    메일은 수신하지만 곧바로 폐기처리하며, 수신자에게 전달하지 않는다.

OK        무조건 메일 수/발 신을 허용한다.

ERROR:" n message"    n에는 오류코드를, message 에는 전달할 메세지를 입력한다.


오류코드

501 : 메일주소가 일정부분 일치할 경우 message 리턴

502 : 발신 메일주소에 host 명이 없을 경우 message 리턴

503 : 릴레이 대상과 관련된 메일을 송/수신 하지 않고 message 리턴

550 : 특정 도메인에 대해 거부하고 message 리턴


DB 파일 만들기

access 파일은 Text 파일이므로, sendmail이 참조할 수 없다. 따라서 DB 형태로 변환시켜 주어야 한다.


cd /etc/mail

makemap hash access < access 

--> access 파일을 수정할 때마다 해주어야 함.


다. sendmail 시작

service sendmail start/restart/stop


[+] 방화벽 풀어주기 (포트번호 25번)



3. 메일 보내기 테스트

telnet localhost 25


1) HELP --> 사용가능한 명령어 보여줌


2) MAIL 발송

MAIL From : 메일 발송자

RCPT To : 메일 수신자 

DATA\n : 메세지 작성

. : 내용 입력 종료. 내용 발송

quit : 접속 종료


3) 확인하기

발송한 사용자로 전환한 후, 메일 확인

# mail

메일 넘버 입력 후 메일 확인.


[+] mail 명령어로 메일 보내기

MAIL -s [메일제목] [받는 사람 이메일]

메일 내용

.   // 점으로 끝냄. 내용 발송


[+] 메일 서버 상태 확인

# mailstats

'전공 과목 시험정리 > 서버구축실무' 카테고리의 다른 글

라우터 명령어  (0) 2015.10.06
Ubuntu 14.10 Server 에 Pydio 설치  (0) 2015.07.24
네임서버(DNS)  (0) 2015.07.02
웹서버  (0) 2015.07.02
FTP 서버  (0) 2015.07.02