본문 바로가기
Linux

Mail Server 만들기

by Nirah 2022. 11. 16.

 

<< Mail Server >>

 

  • SMTP 방식

Protocol : TCP 25

Sendmail

 

  • POP 방식 

Protocol : TCP 110

Client가 메일을 읽으면 해당 메일이 Client 측으로 다운로드 됨.

전용 단말이 없으면 추후에 메일 통합 작업이 필요하다.

dovcot

 

  • IMAP 방식

Protocol : TCP 143

Client가 메일을 읽어도 서버에 남게 된다.

대신 사서함의 용량 관리를 해야한다.

현재는 개인 계정마다 약 5G 정도 할당해 준다.

 

 

 

 

 

<<  Mail 전송 순서 >>


 1. MUA : Mail User Agent (사용자 메일 프로그램)
 2. MDA : Mail Delivery Agent (메일 전달 프로그램)
 3. MTA : Mail Transfer Agent ( 메일 전송 프로그램)
 

MUA -> MDA -> MTA -> MDA -> MUA

 

 

 

 

mail server를 구성한다는 것은 웹 페이지를 선행으로 요구하니 WEB를 만드는 것 까지 해놓는다.

실습에 보내는 방식은 Sendmail을 쓸 것이고, 받는 방식은 dovecot을 이용할 것이다.

dovecot은 웹 메일을 지원하지 않는다.

웹메일은 가격이 비싸서 썬더버드라는 웹 클라이언트 프로그램을 써서

내부 네트워크 안의 메일을 주고 받는 것으로 한다.

 

# yum install -y sendmail-cf dovecot

 

 

 

 

 

<< sendmail 설정 >>

 

#  /etc/mail/sendmail.mc 

 

 

21 dnl 주석을 지워주고 레벨을 14로 바꾼다.

나중에 문제가 될 경우 확인하기 편하기 위해 로그 뜨는 것의 레벨을 높여놓는 것이다.

f

52,53 주석인 dnl을 지워 준다.

 

118. address 부분을 지우거나 0.0.0.0 설정한다.

모든 IP로 처리하기 위해서다.

간혹 0.0.0.0으로 설정할 경우 잘 인식이 안돼서 재부팅이 되는 이슈가 있을 수 있다고 한다.

 

#  m4  /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

/etc/mail/sendmail.cf 를 열기 전에 길이가 너무 길어 첨부작업해주는 것이다.

반드시 m4라는 툴로 만들어야 한다. 안그러면 오류난다.

인증서에 관련된 내용들을 전송하는 행위다.

 

# vi /etc/mail/sendmail.cf

39줄의 공백은 오류를 일으킨다는 이슈가 있으니 dd 를 눌러서 지워준다.

91줄 local host 부분에 우리가 사용할 도메인을 넣어주는 곳 위치이다.

 

 

# vi /etc/mail/local-host-names

alias 기능이랑 같다.

기왕이면 메일에서 사용할 호스트 네임도 하나 등록해 준다.

shrshr.shop

# vi /etc/mail/access

 

아무나 접근할 수 있게 허용하면 스팸메일이 오거나 좋지 않다.

특정 국가에선 국가단위로 막는 경우도 있다.

풀어달라고 사유를 갖고 요청하면 3주 이상 걸린다고 한다.

 

여기에 IP를 적는다 (혹시 몰라서 아래 두개를 열어줘봤다)

 

# makemap hash /etc/mail/access < /etc/mail/access

입력을 해준다. 이거 하기 전까지 입력 했던건 사람이 알아볼 수 있는 파일인 것이고,

이제 기계어로 변환하는 작업을 해주는 것이다.

< /etc/mail/access을 원본파일로 만든다는 뜻

 

# useradd a

useradd b

 

# vi /etc/group

아래와 같이 mail 그룹에 추가시켜줄 필요가 있다.

# systemctl start sendmail

(보내는 메일 서버 설정 끝!)

 

 

 

 

 

 

<< dovecot 설정 >>

 

 # vi /etc/dovecot/dovecot.conf

 

24,30 주석 제거

29줄에 보면 콘프.d 에서 마스터 콘프를 설정할 수 있다고 돼있다.

 

# vi /etc/dovecot/conf.d/10-auth.conf

 

주석 제거 후 NO

 

# vi /etc/dovecot/conf.d/10-mail.conf

 

25줄 주석 제거. 메일 저장 위치를 표시하는 곳 설정.

나중에 cat으로 이 위치를 열어보면 주고 받은 메일들이 다 보인다.

 

 

# vi /etc/dovecot/conf.d/10-master.conf

 

아이맵 port = 143, 팝3 port =110 주석 제거#

특정 포트를 막는 것도 가능한 곳이다.

 

# vi /etc/dovecot/conf.d/10-ssl.conf

 

firewall-cmd --permanent --add-port=25/tcp

firewall-cmd --permanent --add-port=110/tcp

firewall-cmd --permanent --add-port=143/tcp

firewall-cmd --reload

 

# service dovecot start

로 도브콧 데몬을 시작한다.

 

# systemctl restart dovecot

 

netstat -nat로 25번 포트를 보면 아래와 같이 모든 IP로 개방돼있어야 한다.

만약 127.0.0.1이나 다른 주소만으로 돼있다면 재부팅시 해결 된다.

 

재부팅을 하게 되면 다시 시작해줘야 할 데몬은 chkconfig --level 35 '데몬명' on 명령어로 부팅할때 오토스타트 한다.

 

 

참고로 var/mail 은

아래와 같이 사용자 계정 생성 시 메일 사서함이 자동 생성되게 되는 위치로 심볼릭 링크가 걸려 있다.

 

PC 밖으로 나가서 옆이랑 통신하려면 VMware 포트포워딩 작업 필요하다.

25,110,143

 

 

 

 

 

<< Thunderbird 메일 프로그램 >>

 

메일 서버가 잘 작동하는 지 알아보기 위해 아래 메일 플렛폼 프로그램을 다운 받는다

https://www.thunderbird.net/ko/

 

Thunderbird — 이메일을 더 쉽게 사용하세요.

Thunderbird는 메일을 더 쉽게 사용할 수 있는 무료 프로그램입니다. 더 많은 기능을 만나보세요!

www.thunderbird.net

 

 

호스트 네임에 하드코딩으로는 그냥 IP주소를 넣으면 되지만 지양한다. (url을 넣는다)

만약 잘 안되면 메일 서버 IP를 넣어주면 작동한다.

포트는 프로토콜에 맞게 넣고,

인증절차는 자동으로 설정한다.

 

 

 

 

 

 

 

<< 트러블 슈팅 >>

 

제일 말도 많고 탈도 많았던 메일 서버 구성이다.

썬더버드 메일을 loops back 문제로 못 발송한다고 에러메세지가 오면 둘중 하나만 하면 된다.

받는 메일 서버는 보통 문제될 게 잘 없는데 보내는게 문제가 잘 일어난다.

 

 

1. /etc/hostname 파일을 보면 호스트의 이름을 우리가 멋대로 centOS로 바꿨다.

vi /etc/mail/sendmail.cf

sendmail 설정 보면 호스트의 호칭이 디폴트 localhost라고 되어있어 인식을 못하고 있다.

 

hostnamectl set-hostname localhost

systemctl restart sendmail

이 명령어를 써도 된다. 

 

2. vi /etc/hosts 에 127.0.0.1  mx1.shrshr.shop 을 등록한다

127.0.0.1은 loops back 주소다.

/etc/hosts 파일의 한 아이피의 명칭은 다 그 아이피를 지칭하는것.

명령어를 쓸 때 그렇게 텍스트로 치면 대입된다.

 

3. 호스트 피시의 다른 서비스들 중에 25,110,143번 포트를 쓰고 있는 다른 것이 없는지 확인한다.

 

4. restart sendmail이 오래 걸리는 문제는 로컬호스트 네임이 달라서다.

 /etc/hostname 를 수정해서 shrshr.shop으로 수정하자

 

5. 시스인터널의 TCP 뷰어로 포트 죽이기

tail -F /var/log/maillog

 

6. 방해가 되는 포스트 픽스 제거

 

아래와 같이 Postfix가 미리 점유중이라서 문제가 생겼던 것이었다.

yum remove postfix

>> 필자의 해결법 당첨!!

 

 

 

 

 

<< 옆 PC랑 통신하는 법 >>

 

메일을 받는 실제 호스트 피시는 25,110,143 포트 방화벽 다 열고

vmware 윈도우 머신도 똑같이 방화벽 다 열어주고

보내는 사람은 상대방의 실제 호스트 피시의 IP를 자기 DNS 에 등록해 주어야 찾아간다.

rfc 존 파일 설정은 정방향만 주DNS, 보조DNS 다 옆PC 등록해 주고, 존 파일도 만들어 줘야 한다.

 

 

 

 

 

<< 초기화 >>

 

yum remove sendmail-cf dovecot

rm -rf /etc/mail /etc/dovecot

vi /etc/group

 

 

 

 

 

 

===============번외편=========================

 

 

 

<< 리눅스에서 실제 주소로 메일 쓰는 법 naver>>

 

# yum install telnet

 

# telnet localhost 25

 

mail from:ceo@shrshr.shop

rcpt to:hariniok@naver.com

data

subject: 행복하세요

.

 

(.으로 보내기)

 

 

'Linux' 카테고리의 다른 글

yum 중간에 트렌젝션 문제 생긴것 해결  (0) 2022.11.17
NFS  (0) 2022.11.17
history에 시간정보 표시하는 명령어  (0) 2022.11.16
Proxy server 만들기  (0) 2022.11.15
WEB  (0) 2022.11.14