출처 : https://www.youtube.com/watch?v=t1Mg0O3EUSQ&list=PLVsNizTWUw7FqN2gq79Cb3R6qkS7mqOJk&index=54
메일 서버 개념
E-mail의 송수신에 사용되는 프로토콜은 3가지가 있다.
- SMTP(Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때 사용
- POP3(Post Office Protocol) : 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 사용
- IMAP(Internet Mail Access Protocol) : POP3와 같은 용도로 사용
E-mail 전송 원리
- Kim이 PC 1에서 메일 클라이언트 프로그램(에볼루션, Outlook 등)을 실행해 daum.net에 접속한다. lee@naver.com에게 메일을 보낸다. 이때 SMTP 프로토콜을 사용한다.
- 메일 서버 1(daum.net)은 kim이 보낸 메일을 임시 장소에 잠시 보관한다. 그 뒤, 메일 서버 1은 kim이 보낼 메일의 수신자 주소인 naver.com 메일 서버 IP 주소를 네임 서버에 요청해 알아낸다.
- 메일 서버 1은 인터넷을 통해 메일 서버 2(naver.com)로 전송한다. 이때도 SMTP 프로토콜을 사용한다.
- 메일 서버 2(naver.com)는 메일 서버 1 (daum.net)로부터 받은 메일의 수신자 이름을 확인한다. 즉, 자신이 관리하는 계정 중에 lee 라는 수신자 이름이 있는지 확인한다. lee라는 계정이 있다면 kim으로부터 받은 메일을 lee의 메일 박스에 넣는다.
- lee는 PC 2에서 메일 클라이언트 프로그램을 실행해 자신의 메일 서버인 naver.com에 접속한다. 접속 후 자신의 메일 박스에 도착한 편지들을 PC 2로 보낸다. 이때 POP3 or IMAP 프로토콜을 사용한다.
센드 메일 서버의 자세한 작동 원리
- 메일 클라이언트 1은 SMTP 프로토콜을 이용해 메일 서버 1의 센드 메일 서비스(데몬)에게 메일을 보내 달라고 요청한다.
- 센드 메일 서비스는 메일을 '메일 큐(Mail Queue)'에 넣는다. 메일 큐의 파일은 /var/spool/mqueue다.
- 센드 메일 서비스는 시간이 되면 MDA(Mail Delivery Agent)에게 메일을 보내 달라고 요청한다.
- MDA는 SMTP 프로토콜을 이용해 메일 서버 2의 센드메일 서비스에 메일을 전송한다.
- 메일 서버 2의 센드 메일 서비스는 받은 메일을 MDA를 통해 사용자의 메일 박스에 넣는다.
- 메일 클라이언트 2는 메일 서버 2의 dovecot 서비스에게 자신의 메일을 달라고 요청한다.
- dovecot 서비스는 메일 박스에서 메일 클라이언트 2의 메일을 POP3 또는 IMAP 프로토콜을 이용해 전송한다.
센드메일 서버의 구현
메일 서버를 구현할 네트워크 환경 구성도
- server 가상 머신을 naver.com의 메일 서버로 만든다.
- server(B) 가상 머신을 daum.net의 메일 서버로 만든다.
- Winclient(kim)는 daum.net의 클라이언트 사용자, Client(lee)는 naver.com의 클라이언트 사용자로 만든다.
- 사설 네트워크 안을 인터넷 환경이라고 가정하고 진행
- server 가상 머신을 name server로 구축한다. 즉, server 가상 머신은 메일 서버 겸 네임 서버가 된다.
메일 서버 구현을 위한 네임 서버 구현
실습 목표
- 메일 서버 환경을 구축하기 위해서 우선 naver.com 및 daum.net의 도메인을 관리하는 네임 서버를 구축한다.
실습
server 가상머신 메일 서버 구축
4대의 가상 머신(server, server(B), client, winclient)를 모두 초기화시키고 부팅한다. server는 root 사용자로 접속한다.
server 가상 머신에 센드 메일을 설치한다.
dnf -y install sendmail
server 메일 서버에 접근할 이름을 mail.naver.com으로 설정해줘야 한다.
gedit 에디터로 /etc/hostname을 열고, mail.naver.com을 입력하고 저장한다.
gedit /etc/hostname
mail.naver.com
gedit /etc/hosts 를 열고 맨 밑에 server의 IP 주소와 mail.naver.com을 입력한다.
gedit /etc/hosts
192.168.111.100 mail.naver.com
gedit /etc/mail/local-host-names 를 열고 맨 밑에 mail.naver.com을 입력한다.
gedit /etc/mail/local-host-names
mail.naver.com
gedit /etc/sysconfig/network 파일을 열고, 맨 밑에 HOSTNAME=mail.naver.com을 입력한다.
gedit /etc/sysconfig/network
HOSTNAME=mail.naver.com
reboot를 해서 설정한 내용이 적용되도록 만들고, root 사용자로 접속한다.
재부팅한 다음 터미널을 열어보면, root@mail이 된 것을 볼 수 있다.
hostname 또한 mail.naver.com이 되었다.
server(B) 가상 머신 메일 서버 구축
server(B) 가상 머신을 부팅하고 root 사용자로 접속한다. 진행과정은 server와 동일하다.
센드 메일을 설치한다.
dnf -y install sendmail
nano /etc/hostname을 열고 mail.daum.net을 입력한다. 저장하고 나가는 법은 ctrl + x -> y -> enter를 누르면 된다.
nano /etc/hostname
mail.daum.net
nano 에디터로 /etc/hosts를 열고 맨 밑에줄에 server(B)의 IP 주소와 mail.daum.net을 입력한다.
nano /etc/hosts
192.168.111.200 mail.daum.net
nano 에디터로 /etc/mail/local-host-names 를 열고 맨 밑에 mail.daum.net을 입력한다.
nano /etc/mail/local-host-names
mail.daum.net
nano 에디터로 /etc/sysconfig/network를 열고 맨 밑에 HOSTNAME=mail.daum.net을 입력한다.
nano /etc/sysconfig/network
HOSTNAME=mail.daum.net
설정한 내용이 시스템에 적용되도록 reboot를 하고 root 사용자로 접속한다.
root@mail이 되었고, hostname이 mail.daum.net이 된 것을 볼 수 있다.
server 가상 머신 네임 서버 구축
다시 server 가상 머신으로 돌아와서 네임 서버 패키지를 설치한다.
dnf -y install bind bind-chroot
gedit /etc/named.conf 파일을 열고 다음 내용을 수정한다.
11행 : listen-on port 53 { any; };
12행 : listen-on-v6 port 53 { none; };
19행 : allow-query { any; };
33행 : dnssec-validation no;
맨 밑에 다음 내용을 추가해서 naver.com과 daum.net의 도메인 설정을 진행한다.
zone "naver.com" IN {
type master;
file "naver.com.db";
allow-update { none; };
};
zone "daum.net" IN {
type master;
file "daum.net.db";
allow-update { none; };
};
/var/named/ 디렉토리로 이동한 다음, naver.com.db와 daum.net.db 라는 파일을 생성한다.
그 다음 gedit 에디터로 naver.com.db와 daum.net.db 파일을 수정한다.
먼저 naver.com.db 파일에 다음 내용을 작성한다.
$TTL 3H
@ SOA @ root. ( 2 1D 1H 1W 1H )
IN NS @
IN A 192.168.111.100 -> server 가상머신의 IP 주소
IN MX 10 mail.naver.com. -> 메일을 처리하는 컴퓨터를 지정
mail IN A 192.168.111.100 -> 메일을 처리하는 컴퓨터를 server 가상머신으로 지정
daum.net.db 도 동일한 방식으로 편집한다.
$TTL 3H
@ SOA @ root. ( 2 1D 1H 1W 1H )
IN NS @
IN A 192.168.111.200
IN MX 10 mail.daum.net.
mail IN A 192.168.111.200
설정한 파일에 이상이 없는지 확인한다.
named-checkconf
named-checkzone naver.com naver.com.db
named-checkzone daum.net daum.net.db
네임 서버를 재시작하고 상시 가동하도록 설정한 후 상태를 확인한다. active(running) 상태가 되면 잘 동작하고 있는 것이다.
systemctl restart named -> 네임 서비스 재시작
systemctl enable named -> 네임 서비스 상시가동
systemctl status named -> 네임 서비스 상태확인
방화벽에서 DNS 포트를 열어야하는데, 앞으로 다른 포트도 여러개 열어야 하므로 편한 실습을 위해 잠시 방화벽 실행을 멈춘 후 끈다.
systemctl stop firewalld
systemctl disable firewalld
nslookup 명령을 입력한 후 네임 서버가 잘 설정되었는지 확인한다.
nslookup
server 192.168.111.100 -> 현재 네임 서버를 192.168.111.100 으로 변경
mail.naver.com -> naver.com의 메일 서버가 192.168.111.100 인지 확인
mail.daum.net -> daum.net의 메일 서버가 192.168.111.200 인지 확인
server 메일 서버의 네임 서버 설정
mail.naver.com 메일 서버의 DNS 서버를 직접 구축한 네임 서버(192.168.111.100)으로 설정하자.
gedit /etc/NetworkManager/system-connections/ens160.nmconnection을 입력해 파일을 열고 14행의 dns의 주소를 192.168.111.100으로 변경한다.
gedit /etc/NetworkManager/system-connections/ens160.nmconnection
dns=192.168.111.100
/etc/resolv.conf 를 출력해보면 nameserver의 주소가 192.168.111.2일 것이다. 재부팅하면 우리가 설정한대로 192.168.111.100이 될 것이다.
재부팅을 한다.
재부팅하고 다시 확인하면 잘 변경된 것을 볼 수 있다.
Client 가상 머신 메일 클라이언트 설정
Client 가상 머신을 부팅한다.
su 권한으로 gedit /etc/resolv.conf 파일을 열고 nameserver를 192.168.111.100으로 설정한다.
비밀번호는 root 의 비밀번호를 입력하면 된다.
su -c 'gedit /etc/resolv.conf'
nameserver 192.168.111.100
nslookup 명령을 입력하고 mail.naver.com과 mail.daum.net의 IP 주소가 각각 192.168.111.100과 192.168.111.200 인지 확인한다.
Server(B) 메일 서버의 네임 서버 설정
server(B)로 돌아와 nano 에디터로 /etc/NetworkManager/system-connection/ens160.nmconnection 파일을 열고 dns의 IP 주소를 192.168.111.100 으로 수정한다.
nano /etc/NetworkManager/system-connection/ens160.nmconnection
dns=192.168.111.100
재부팅을 한다.
다시 root 사용자로 접속한 다음 nslookup 명령을 입력하고, mail.naver.com과 mail.daum.net의 IP 주소가 192.168.111.100과 192.168.111.200 인지 확인한다.
WinClient 가상 머신 메일 클라이언트 설정
WinClient 가상 머신을 부팅하고, windows powershell을 관리자 권한으로 실행한다.
DNS 서버를 변경하고 nslookup 을 입력해 마찬가지로 mail.naver.com과 mail.daum.net을 확인한다.
netsh interface ip set dns "Ethernet0" static 192.168.111.100
'Study > 이것이 리눅스다 with Rocky Linux 9' 카테고리의 다른 글
10장. 메일 서버 설치 및 운영 (3) - 라운드 큐브 메일 설치 (0) | 2024.01.04 |
---|---|
10장. 메일 서버 설치 및 운영 (2) - 센드메일 서버 구현(네이버, 다음 메일 서버 구현) (0) | 2024.01.03 |
9장. 네임 서버 설치 및 운영 (4) - 라운드 로빈 네임 서버 (0) | 2024.01.02 |
9장. 네임 서버 설치 및 운영 (3) - 마스터 네임 서버 (1) | 2024.01.02 |
9장. 네임 서버 설치 및 운영 (2) - 캐싱 전용 네임 서버 (0) | 2024.01.01 |