메일을 사용할 dns가 설정되어 있어야함을 바탕으로 아래 실습 진행함
리눅스에서 사용할 메일 프로그램은 sendmail, dovecot 설치
dnf -y install sendmail
dnf -y install dovecot
샌드메일 설정
샌드메일의 주요 설정 파일
vi /etc/mail/sendmail.cf
원하는 글자로 시작하는 행 찾아가기 /찾을 문자열(Cwlocalhost) 입력
Cwlocalhost ➡ Cwslime.io
여러 도메인을 사용하는 경우 추가 입력할 수 있음
vi /etc/mail/local-host-names
slime.io
mail.slime.io
데몬 포트 옵션
SMTP 데몬 옵션으로 25번 포트를 사용할 주소를 지정하는 항목
localhost 삭제
메일 서버로 접근하는 호스트, 도메인 접근 제어
vi /etc/mail/access
slime.io RELAY ➡ 해당 도메인으로 오는 메일은 모두 통과
192.168.111 RELAY ➡ 192.168.111.xxx로 오는 도메인 모두 통과
메일 서버 접근 파일 수정 후 적용시키는 명령어
makemap hash /etc/mail/access < /etc/mail/access
mail 서버 시작
systemctl --now enable sendmail
nslookup 명령으로 메일 서버 조회는 resolv.conf 파일에서 -type=mx를 붙여 확인해야함
nslookup slime.io
nslookup -type=mx slime.io
정방향 메일 mx 레코드 삽입
vi /var/named/slime.io.zone
MX 10 mail.slime.io.
mail IN A 192.168.111.100
해당 파일이 변경되었으니 데몬 재시작
systemctl restart named
nslookup -type=mx slime.io
/etc/mail/local-host-names에서 입력한 도메인과 일치할 경우 문제없이 작동함
sendmail 관련 설정 끝
dovecot 설정
vi /etc/dovecot/dovecot.conf
24, 30, 33 행 주석 제거
보안설정 완화(?)
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required ➡ ssl = yes
vi /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u
25행 주석제거하여 사용, 해당 경로를 메일박스로 사용
mail_access_groups = mail
mail이라는 그룹이 접근할 수 있도록 허용
dovecot 관련 설정이 변경되었으니 데몬 재시작
systemctl restart dovecot
클라이언트로 evolution을 사용하여 확인
서버종류 pop, 서버는 도메인에 입력한 이름, 암호화 방식은 ssl = yes라고 했기에 tls로 설정하면 pop3 서버에 암호화가 씌워진 포트인 995 사용으로 변경됨
smtp 는 따로 설정이 안돼있어서 우리가 설정한 dns로 입력하여 세팅
메일서버에 등록할 사용자 4gluser 생성 후 로그인
useradd 4gluser
passwd 4gluser
1234
그 후에 evolution 에서 메일 보내기/받기를 눌러 정상적으로 작동되면 성공
자기 자신에게 메일 보내기
보내기/받기를 눌러 나에게 메일이 도착하면 성공
보낼때 - smtp - 리눅스 : sendmail
받을 때 - pop3, imap - 리눅스 : dovecot
실습
Server A - DNS에 도메인 별개로 1개 더 선언 및 파일 생성 후 Server B에 별도의 메일 서버를 만들어서 연동
Server B 초기화 후 메일 서버에 생성된 유저를 A의 에볼루션에 등록 후 자기 자신에게 메일 보내기 테스트
DNS - Server A
클라이언트 - Server A
메일 서버 - Server B
유저 생성 - Server B
Server A
vi /etc/named.rfc1912.zones
zone "potato.com" IN {
type master;
file "potato.com.zone";
allow-update { none; };
};cd /var/named
cp -p named.empty potato.com.zone
vi potato.com.zone
MX 10 mail.potato.com.
mail IN A 192.168.111.200systemctl restart named
vi /etc/resolv.conf
nameserver 192.168.111.100nslookup
server - .100
mail.potato.comnslookup -type=MX potato.com
Server B
hostnamectl set-hostname mail.potato.com
exec bash
vi /etc/resolv.conf
nameserver 192.168.111.100dnf -y install sendmail dovecot
vi /etc/mail/sendmail.cf
Cwlocalhost ➡ Cwpotato.com
데몬 포트 옵션에서 localhost 삭제
0 Daemonport ~vi /etc/mail/local-host-names
potato.com
mail.potato.comvi /etc/mail/access
potato.com RELAY
192.168.111 RELAYmakemap hash /etc/mail/access < /etc/mail/access
systemctl --now enable sendmail
vi /etc/dovecot/dovecot.conf
24, 30, 33행 주석 제거
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required ➡ ssl = yes
vi /etc/dovecot/conf.d/10-mail.conf
25행 주석 제거
mail_access_groups = mailsystemctl --now enable dovecot
useradd pouser
passwd pouser
1234dnf -y install bind-utils
nslookup mail.potato.com
Server A
보내기/받기 버튼을 눌러야 새로운 사용자 인식
오류가 발생하는데 이유는 A는 클라이언트, B는 서버로 방화벽이 열려있지 않아 오류가 발생함
Server B
firewall-cmd --add-service={imap,imaps,smtp,smtps,pop3,pop3s}
Server A
정상적으로 메일 통신이 되는것을 확인
양 측의 메일 전송을 위한 설정
vi /etc/mail/access
상대방 도메인 추가
makemap hash /etc/mail/access < /etc/mail/access
ping mail.potato.com
ping mail.slime.io
문제 발생 시
vi /etc/resolv.conf 확인
firewall-cmd --list-all
Server A
firewall-cmd --add-service={imap,imaps,smtp,smtps,pop3,pop3s}
systemctl restart sendmail dovecot