인터넷이 발달하면서 가장 많이 사용되는 서비스 중에 하나가 이메일이다. 특히 이메일은 소규모회사라도 자체적으로 이메일을 갖고 있듯이 회사에서 매우 중요한 의미를 가질 수 있다고 할 수 있다. 이러한 메일 서버를 구현해볼것이다.
SMTP (Simple Mail Transfer Protocol) : 클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때 사용
POP3 (Post Office Protocol) : 메일 서버에 도착한 메일을 클라이언트로 가져올 때 사용
IMAP ( Internet Mail Access Protocol) : 메일 서버에 도착한 메일을 클라이언트로 가져올 때 사용, POP3와 동일
이번에는 리눅스에서 제공하는 sendmail 서버를 구축할 것이다.
구성도는 다음과 같다.
필요한 가상 머신으로는 Mail-server, Name-server, Client, Client2이다. 하지만 하나의 가상머신으로 Mail-server, Name-server, Client2 역할을 수행할 수 있기 때문에 실제로는 Server와 Client 가상 머신 2대가 필요하다. 클라이언트는 언제든지 새로 추가할 수 있기 때문에 일단 2대로 메일서버를 구축할 것이다.
Server - 192.168.100.132/24
Client - 192.168.100.130/24
메일 서버 이름 : naver.com
# root 사용자로 접속
# yum -y install sendmail sendmail 패키지 설치
# vi /etc/hostname 호스트 이름 수정
mail.naver.com 호스트 이름 mail.naver.com
# vi /etc/hosts
192.168.100.132 mail.naver.com -- 해당 라인 추가
# vi /etc/mail/local-host-names
mail.naver.com -- 해당 라인 추가
# vi /etc/sysconfig/network
HOSTNAME=mail.naver.com -- 해당 라인 추가
# reboot
이제 naver.com 도메인 네임 서버를 설정해야 한다.
# yum -y install bind bind-chroot -- 네임 서버 패키지 설치
# vi /etc/named.conf 아래 사진처럼 수정한다.
# vi /etc/named.conf
# 맨 아래 추가
zone "naver.com" IN {
type master;
file "naver.com.db";
allow-update { none;};
};
# cd /var/named
# vi naver.com.db
$TTL 3H
@ SOA @ root. ( 2 1D 1H 1W 1H )
IN NS @
IN A 192.168.100.132
IN MX 10 mail.naver.com.
mail IN A 192.168.100.132
# 설정에 이상 없는지 체크한다.
# named-checkconf
# named-checkzone naver.com naver.com.db
아래 사진처럼 결과가 나오면 이상이 없는 것이다.
이제 named 서비스를 다시 시작해야한다.
# systemctl restart named
# systemctl enable named
# systemctl status named
dns 포트 및 여러 포트를 열어야하므로 그냥 편하게 방화벽을 꺼버리자.
# systemctl stop firewalld
# systemctl disable firewalld
nslookup 명령어를 입력해서 네임서버가 잘 설정되었는지 확인하자.
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1="192.168.100.132" -- DNS1이 있으면 수정 없으면 추가
# vi /etc/resolv.conf
nameserver 192.168.100.132 -- 해당 라인으로 수정
# reboot 재부팅
# vi /etc/resolv.conf
nameserver 192.168.100.132 -- 해당 라인으로 수정
# nslookup
> mail.naver.com 해당 명령어를 통해서 192.168.100.132인지 확인한다.
이제 네임서버 구성이 모두 끝났다. 이제 메일 서버를 구축해보자
# yum -y install sendmail-cf dovecot 메일서버 구현 필수 패키지
# vi /etc/mail/sendmail.cf
# 아래처럼 수정
85행 Cwnaver.com
267행 0 DaemonPortOptions=Port=smtp, Name=MTA
# vi /etc/mail/access
# 아래 내용 추가
naver.com RELAY --> naver.com relay 허용
192.168.100 RELAY --> 해당 네트워크 주소의 호스트 relay 허용
수정한 내용 적용
# makemap hash /etc/mail/access < /etc/mail/access
이제 dovecot 설정 파일을 변경해야한다.
# vi /etc/dovecot/dovecot.conf
24행 주석 제거 protocols = imap pop3 lmtp
30행 주석 제거 listen = *, ::
33행 주석 제거 base_dir = /var/run/dovecot/
# vi /etc/dovecot/conf.d/10-ssl.conf
8행 ssl = yes
# vi etc/dovecot/conf.d/10-mail.conf
25행 주석 제거 mail_location = mbox:~/mail:INBOX=/varmail/%u
121행 주석 제거 후 변경 mail_access_groups = mail
166행 주석 제거 lock_method = fcntl
이제 계정 사용자를 생성하자.
# useradd lee
# passwd lee
# 비밀번호 설정
# useradd shh
# passwd shh
# 비밀번호 설정
이제 sendmail 과 dovecot 서비스를 재시작하자
# systemctl restart sendmail
# systemctl enable sendmail
# systemctl restawrt dovecot
# systemctl enable dovecot
이제 모든 준비가 끝났다. 이제 메일 계정 생성 후 메일을 보내보자
리눅스 메일 프로그램인 evolution을 실행해야한다. 만약 설치가 되어있지 않다면 아래처럼 따라해서 설치하면 된다.
클라이언트에서는 user lee를 사용할 것이다.
이제 계정 생성이 완료되었다.
send/recieve를 누른다음 인증서 계속 허용을 누른다.
그리고 메인 인증 요청 창이 나오면
위에서 설정한 lee, lee 비밀번호를 사용해서 로그인하면 된다.
그럼 이제 메일 사용하기 위한 모든 준비는 끝났다. 먼저 자기 자신에게 메일을 보내보자.
send/receive를 누르면 보낸 메일이 도착한 것을 볼 수 있다.
그럼 이제 server에서 shh 계정을 만들어서 테스트를 해보자.
기존에 클라이언트에서 한 모든 과정을 반복한다.
evolution 설치 후 shh 계정 생성
모든 과정을 완료하였으면 lee@naver.com으로 메일을 보내보자
client 화면
이렇게 보낸 메일이 두번째에 있는 것을 볼 수 있다. 여기서 다시 답장을 보내보자
server 화면
이렇게 답장이 온것을 확인할 수 있다.
이렇게 사설 네트워크 내부에서 메일 서버를 구축해보았다. 네트워크 내부에서 구축하였지만 외부에서도 방법은 거의 동일하다. 메일 서버를 구축해보면서 네임서버, 메일서버를 좀 더 확실하게 공부해보았다.