메일 관련 프로토콜, 메일 서버 설정 실습

sso·2025년 4월 14일
0

리눅스 서버

목록 보기
26/40

1. 메일

1-1. 메일 관련 프로토콜

1. SMTP(Simple Mail Transfer Protocol)

  • 메일 서버로 메일을 보낼 때 사용 (송신용)
  • TCP 포트 번호 25번 사용

2. POP3(Post Office Protocol Version 3)

  • 메일 서버에서 클라이언트로 가지고 올 때 사용 (수신용)
  • 110번 포트 사용
  • 메일을 확인하면 클라이언트로 가지고 온 후 서버에서 삭제하기에 다른 클라이언트에서는 확인할 수 없음

3. IMAP(Internet Mail Access Protocol)

  • 143번 포트 사용
  • 서버에서 메일을 삭제하지 않기에 다른곳에서 메일을 확인할 수 있지만 메일 서버의 통신 트래픽을 높이는 단점이 있음

1-2. 메일 관련 프로그램

1. MTA(Mail Transfer Agent)

  • 보통 메일 서버 프로그램을 지칭
  • sendmail, qmail, postfix 등

2. MUA(Mail User Agent)

  • 사용자가 메일을 읽고 보낼 때 사용하는 프로그램
  • kmail, evolution, outlook 등

1-3.

메일을 사용할 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.200

systemctl restart named

vi /etc/resolv.conf
nameserver 192.168.111.100

nslookup
server - .100
mail.potato.com

nslookup -type=MX potato.com

Server B

hostnamectl set-hostname mail.potato.com
exec bash

vi /etc/resolv.conf
nameserver 192.168.111.100

dnf -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.com

vi /etc/mail/access
potato.com RELAY
192.168.111 RELAY

makemap 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 = mail

systemctl --now enable dovecot

useradd pouser
passwd pouser
1234

dnf -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

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글