실습/[CentOS]

[CentOS] 메일 서버 개념과 구축

메일 서비스에 사용되는 프로토콜

- SMTP, POP3, IMAP 등

SMTP(Simple Mail Transfer Protocol, TCP 25)
- 메일서버간에 메일 송/수신에 사용되는 프로토콜

POP3(Post Office Protocol 3, TCP 110)
- 메일서버에 저장된 메일을 다운로드하는 프로토콜

IMAP(Internet Mail Access Protocol, TCP 143)
- 메일서버에 저장된 메일을 접근(Access)하는 프로토콜

 


메일 송수신 역할에 따른 용어
 MUA(Mail User Agent): 사용자를 대신해서 메일 발송/수신
                       받아주는 프로그램
대표 유틸리티

- Microsoft Outlook (유료). Mozilla Thunderbird (무료)

 


 MTA(Mail Transfer Agent): 메일 서버에서 메일 송/수신을
                           담당하는 프로그램
대표 유틸리티

- sendmail, qmail, Exchange Server (Microsoft)

 MDA(Mail Delivery Agent): 수신된 메일을 메일함 저장
                           하는 프로그램
대표 유틸리티

- procmail

 MRA(Mail Retrieval Agent): 메일함 저장된 메일을 사용자에게
                            전송하는 프로그램
  대표 유틸리티

- dovecot, uw-imap

 

 

 

- 메일 서버의 동작과정 -

 

메일 서버 구축

 

1. hostname 수정후 재부팅

CentOS ~6 : /etc/sysconfig/network

HOSTNAME=호스트명

CentOS 7~ : /etc/hostname

호스트명 변경 후 재부팅

# reboot, init 6

 

2. /etc/hosts 등록, NS서버에 MX레코드와 A레코드를 등록

Localhost(메일서버): /etc/hosts

192.168.200.103   호스트명

 

NS(네임서버): /var/named/영역명.zone

@             IN MX 10     호스트명

호스트명    IN A        192.168.200.103

 

3. sendmail 패키지를 설치, 업그레이드

설치확인 : rpm -qa | grep sendmail

yum list sendmail

설치 : yum install sendmail

업그레이드: yum update sendmail

 

4. /etc/mail/sendmail.cf 에서 수신받을 IP주소, 저장할 영역명

 

- 수신(청취,Listen) IP주소 지정 옵션

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

 

Addr=0.0.0.0 or 생략 : 모든 IP주소로 청취

Addr=127.0.0.1 : LocalHost(127.0.0.1)만 청취

Addr=192.168.200.103 : 특정 IP(192.168.200.103)만 청취

 

IP주소가 여러개인 경우 옵션을 계속 추가할 수 있다.

 

- 저장할 영역명

Cw영역명 <- 저장할 영역명을 직접 설정

 

Fw/etc/mail/local-host-names <- 파일에 1행씩 영역명을 추가

 

5. /etc/mail/access 파일을 편집하여 RELAY,DISCARD,REJECT

IP대역, 도메인을 추가한다.

그리고, > (입력전환)을 이용하여 access.db에 저장한다.

/etc/mail/access

192.168.200.100 RELAY : IP주소만 릴레이

192.168.200.0/24 RELAY : IP대역만 릴레이

192.168.200.0/255.255.255.0 RELAY : IP대역만 릴레이

co.kr RELAY : *.co.kr 로 끝나는

모든 영역에 릴레이

@naver.com DISCARD : naver.com 영역에 거부

spam@ REJECT : spam 계정에 반송

 

# makemap hash access.db < access

 

6. 데몬(서비스) 구동, 방화벽 포트 개방

CentOS ~6 : service 데몬명 start

CentOS 7~ : systemctl start 데몬명.service

 

--------------------실습--------------------

 

 

우선 메일서버로 운영하기 위해 호스트 네임을 바꾸어주자.

# vi /etc/sysconfig/network

# vi /etc/hosts

기본 설정을 해주고

# init 6

로 설정이 적용될 수 있도록 재부팅해주자.

 

 

 

 

# yum install sendmail

로 패키지를 설치해주자.

 

 

 

 

 

# vi /etc/mail/sendmail.cf

에서 환경설정을 변경해주자.

수신할 도메인 설정

  1. sendmail.cf 파일에 Cw 옵션으로 하나하나 나열하는 지정하는 방식

  /etc/mail/sendmail.cf

  85행 쯤

  ex)   Cwnaver.com

  86행 Cwgoogle.com

  2. 파일에 따로 나열하여 지정하는 방식

  /etc/mail/local-host-names : Cw도메인명으로 설정할 내용을 별도의 파일에서 관리할 수 있다.

설정파일이 길어지는 것은 싫으므로 본인은 local-host-names 파일을 수정하겠다.

그리고 265행 쯤 허용할 IP주소와 포트를 지정하는 옵션이있다.

줄을 복사해서 계속해서 나열하는 방법도 있다. 루프백 주소와 자신의 IP만 설정해주었다.

 

    265행  DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
    266행  DaemonPortOptions=Port=smtp,Addr=192.168.200.103, Name=MTA

    - Addr=127.0.0.1 : 유지하는 경우 127.0.0.1(localhost) 허용
    - Addr=127.0.0.1을 제거할 경우 모든 interface 수신 허용
      Addr=0.0.0.0 과 동일함
    - 그외 interface 추가할 경우 아래 1행을 복사하여 추가할 IP주소로
      수정한다.

 

 

 

 

 

 

# vi /etc/mail/local-host-names

에서 도메인을 설정해주자.

 

 

 

 

# vi /etc/mail/access

파일을 수정하여 접근권한을 설정해주자.

예시로 여러가지 설정해보았다. RELAY는 허용이다. DISCARD 등 다른 옵션은 위에 설명해놓았다.

 

 

 

 

위에서 access 파일을 텍스트로 변경을 하였다. 변경한 파일을 DB로 변환하여 설정하도록 하자.

# makemap hash /etc/mail/access.db < /etc/mail/access

strings 명렁어를 이용하여 DB 파일 내용을 확인할 수 있다. 확인을 해보니 수정한 내용이 잘 설정된 것같다.

 

 

 

 

 

 

# iptables -I INPUT -p tcp --dport 25 -j ACCEPT

# service sendmail restart

 

명령어를 이용하여 포트개방과 시스템을 실행해보자.

 

테스트를 위해 user1 계정을 만들어서 확인해보자.

# useradd user1

 

 

 

root에서 메일을 보내보았다. user1에서 확인해보자.

 

 

 

 

user1에서 확인해보니 보냈던 메일이 온 것을 확인할 수 있었다.