메일 서버 개념

클라이언트는 상대방 클라이언트와 통신이 아닌 메일서버와 통신하고, 상대방과의 메일 교환은 메일 서버간 통신으로 교환된다.

통신을 위한 프로토콜로는 아래의 프로토콜이 주로 사용된다.

 

SMTP(Simple Message Transfer Protocol) 클라이언트가 메일을 보내거나, 메일 서버간 통신때 사용하는 프로토콜

POP3(Post Office Protocol) 메일 서버에 도착한 메일을 클라이언트로 가져올때 사용하는 프로토콜

IMAP(Internet Mail Access Protocol) POP3와 동일한 용도

 

메일 서버를 구현하기 위해서는 네임 서버를 이해하고 구현해야 하는데, 메일도 도메인을 기반으로 한 통신이기 때문에 당연한 부분이다. DNS 서버 포스팅 참고.

 

메일을 주고 받는 과정을 정리해보면

  1. 사용자(메일 클라이언트)1은 프로그램(or 웹 브라우저)를 통해 메일서버1에 메일을 전송한다. (SMTP 사용)

  2. 메일서버1은 메일 큐에 해당 메일을 넣고 네임 서버를 통해서 수신자측 IP 주소를 얻어낸다.

  3. 메일서버1은 수신자측 메일서버2에 메일을 전송한다.(SMTP 사용)

  4. 메일서버2는 수신한 메일의 수신자이름을 확인하고 메일박스에 담아놓는다.

  5. 수신자는 프로그램(or 웹 브라우저)를 통해 메일서버2에 수신한 메일을 요청한다. (POP3, IMAP 사용)

 

 

센드메일 서버 구현

CentOS에서 제공하는 센드메일 서버를 구현해보자. 과정을 먼저 보자면

  1. 메일서버1, 메일서버2 의 도메인을 관리할 네임서버를 구현한다.

  2. 메일서버1, 메일서버2 를 각각 구현한다.

  3. 클라이언트 프로그램을 설치해서 메일을 직접 교환해본다.

 

네임 서버 구현

네임서버와 메일서버1을 하나의 컴퓨터에서 처리하기로 하고 이를 server1이라 부른다.

도메인은 mail.naver.com을 사용한다. (naver.com 도메인은 사설 네트워크 내에서 연습을 위한 도메인이다.)

  1. dnf -y install sendmail 명령어로 sendmail패키지를 설치한다.

  2. /etc/hostname 파일의 내용을 mail.naver.com으로 변경한다.

  3. /etc/hosts 파일 젤 아래에 <server1 IP> mail.naver.com 을 추가한다.

  4. /etc/mail/local-host-names 파일에 mail.naver.com 을 추가한다.

  5. /etc/sysconfig/network 파일에 HOSTNAME=mail.naver.com을 추가한다.

위 과정으로 server1의 호스트네임이 mail.naver.com으로 변경된다. 리부트시킨다.

 

메일서버를 server2라 부르기로 하고, 도메인은 mail.daum.net 을 사용한다. (사설 네트워크 내에서 연습을 위한 도메인이다.)

  1. dnf -y install sendmail 명령어로 sendmail패키지를 설치한다.

  2. /etc/hostname 파일의 내용을 mail.daum.net으로 변경한다.

  3. /etc/hosts 파일 젤 아래에 <server2 IP> mail.daum.net 을 추가한다.

  4. /etc/mail/local-host-names 파일에 mail.daum.net을 추가한다.

  5. /etc/sysconfig/network 파일에 HOSTNAME=mail.daum.net을 추가한다.

위 과정으로 server2의 호스트네임이 mail.daum.net으로 변경된다. 리부트시킨다.

 

 

네임서버역할을 할 server1에서 실행한다.

  1. dnf -y install bind bind-chroot 명령어로 네임 서버 패키지를 설치한다.

  2. /etc/named.conf 파일에서  아래 내용을 수정한다.

    1. zone "naver.com" IN {

    2. type master;

    3. file "naver.com.db";

    4. allow-update { none; };

    5. };

    6. zone "daum.net" IN {

    7. type master;

    8. file "daum.net.db";

    9. allow-update { none; };

    10. };

    1. 11행에서 linsten-on-port 53 { any; };

    2. 12행에서 linsten-on-v6 port 53 { none; };

    3. 19행 allow-quert { any; };

    4. 34행에서 dnssec-validation no;

    5. 하단에 아래를 추가한다.

  3. /var/named/ 디렉토리에 naver.com.db와 daum.net.db를 생성한다.

  4. 각각의 내용을 아래와 같이 작성해서 저장한다. (daum.net.db는 serverIP와 mail.daum.net으로 변경해 작성한다.)

    1. $TTL 3H

    2. @    SOA    @    root.    ( 2 1D 1H 1W 1H )

    3. IN    NS    @

    4. IN    A    server1 IP

    5. IN    MX    10    mail.naver.com

    6. mail    IN    A    server1 IP

  5. systemctl restart/enable named 를 각각 입력해 네임 서비스를 재시작하고 상시가동으로 변경시킨다.

  6. systemctl stop/disable firewalld 로 방화벽을 일시적으로 끈다.

 

server1과 server2에 각각 네임서버설정을 해준다. 과정은 두 서버 모두 아래와 동일하다.

  1. /etc/sysconfig/network-scripts/ifcfg-ens160 파일에서 DNS1 부분을 server1(네임 서버) IP로 수정하고 저정한다.

  2. /etc/resolv.conf 의 nameserver 부분을 server1IP로 수정하고 저장한다.

 

리눅스 환경의 클라이언트에서 네임서버 설정을 해준다.

  1. /etc/resolv.conf 에서 nameserver부분을 server1 IP로 수정해서 저장한다.

  2. nslookup으로 네임서버가 정상적으로 변경되었는지 확인하고 mail.naver.com, mail.daum.net을 확인해서 위에서 설정했던 server1, server2 의 IP가 출력되는지 확인한다.

 

위의 과정을 네임서버 구현, 각 메일서버에서의 네임서버 설정, 클라이언트에서 네임서버 설정이 끝났다.

 

메일 서버 구현

각각의 메일서버를 구현한다. 메일서버 구현을 위해서 사용할 패키지는

sendmail, sendmail.cf, dovecot 세가지이다.

  1. dnf -y install sendmail.cf dovecot 으로 패키지를 설치한다. (snedmail을 위 과정에서 설치되어있다.)

  2. /etc/mai;/sendmail.cf 파일에서 아래와 같이 수정한다.

    1. 85행 Cwnaver.com

    2. 267행 'Addr=127.0.0.1,' 부분 삭제

    3. 위 파일의 수정으로 외부에서도 이 메일서버를 이용해  naver.com 도메인으로 메일을 보낼수 있게 설정된다.

  3. /etc/mail/access에 다음 내용을 추가한다.

    1. naver.com    REPLY

    2. daum.net    REPLY

    3. server IP    REPLY        //IP는 상단

위 내용 추가로 해당 도메인과 아이피에 대해 메일서버에서 응답하도록 설정된다.

위에 추가되어 있지 않은 도메인이나 아이피는 메일서버가 응답하지 않는다.

혹은 REPLY대신 DISCARD로 거부, REJECT거부 후 메시지 전송 설정도 가능하다.

  1. /etc/dovecot/dovecot.conf 에서 아래의 내용을 수정한다.

    1. 24행 protocols = imap pop3 lmtp의 주석 제거

    2. 30행 listen = *. :: 주석 제거

    3. 33행 base_dir = /var/run/dovecot/ 주석 제거

    4. 24행을 활성화해 세 가지 프로토콜을 활성화 한다.

    5. 30행,33행으로 IPv4, IPv6 포로토콜을 활성화 한다.

  2. /etc/dovecot/donf.d/10-ssl.conf 에서 ssl = required를 ssl = yes로 수정한다.

  3. /etc/dovecot/conf.d/10-mail.conf 파일을 아래와 같이 수정한다.

    1. 25행 mail_location = mbox:~/mail:INBOX=/var/mail/%u 활성화

    2. 121행 mail_access_groups = mail 활성화

    3. 166행 lock_method = fcntl 활성화

  4. server1, 2에서 각각 메일 사용자를 생성한다.

  5. systemctl restart/enable sendmail/dovecot 로 서비스를 재시작시키고 상시가동 설정한다.

  6. server2에서는 방화벽을 비활성화 시킨다. (server1은 위에서 이미 비활성화 시켰다.)

위의 과정들을 통해 메일서버1, 메일서버2 가 생성된다.

 

클라이언트 프로그램 설치 및 메일교환

Linux환경에서는 기본으로 설치되어 있는 에볼루션을 사용한다.

사용자 메일은 메일서버에서 생성한 사용자명을 사용한다. 사용자명@naver.com , 사용자명@daum.net

 

Windows 환경에서는 썬더볼트를 사용한다. (다른 프로그램도 상관 없다.)

사용자 메일을 메일서버에서 생성한 사용자명을 사용해 만든다.

 

 

 

'Linux > Centos8' 카테고리의 다른 글

웹 서버  (0) 2020.11.13
데이터베이스 서버  (0) 2020.11.13
DNS 네임 서버  (0) 2020.11.12
텔넷, OpenSSH, XRDP 서버  (0) 2020.11.12
하드디스크 관리와 레이드 구성  (0) 2020.11.12

+ Recent posts