본문 바로가기
📋3-1/📌리눅스서버실습

[리눅스서버실습] - MAIL 서버

by 빛나고요 2021. 6. 7.
BIG

Study. MAIL 서버

 

메일 서버의 개념

📌 이메일 송수신에 사용되는 프로토콜 3가지

(1) SMTP(Simple Mail Transfer Protocol : 간이 전자 우편 전송 프로토콜)

- 클라이언트가 보낸 메일을 서버로 전송할 때나, 메일 서버끼리 메일을 주고받을 때 사용

- 메시지가 생성되면 호출된 SMTP가 메시지를 받고 TCP(포트번호 25)를 이용하여 다른 호스트의 SMTP에게 전달

- 메일을 보내는 이가 메일 수신자와 통신하는 연결 지향 텍스트 기반 프로토콜

 

(2) POP3(Post Office Protocol 버전 3)

- 메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 사용

- 원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는 데 사용

- Gmail, Outlook 등의 웹 메일에서 지원

- 원격 서버에 접속하여 이메일을 가져오는 동시에 서버에 있는 이메일이 삭제되는 것이 특징

- 따라서 추가적인 설정을 하지 않는 이상 다른 PC나 모바일 등의 기기로 동일한 이메일 확인 불가능하고, 로컬 PC에서 메일을 삭제한 경우 서버에서 해당 메일 확인 불가능

 

(3) IMAP(Internet Mail Access Protocol)

- POP3와 마찬가지로 이메일을 수신할 때 사용하는 또 다른 프로토콜

- 이메일 서버와 동기화되는 방식이기 때문에 클라이언트 장치(PC, 모바일, 태블릿)에서 미리 설정한 '받은 편지함', '보낸 편지함' 등을 확인할 수 있음

- 서버에 직접 접속하여 직접 메일을 확인하는 방식이기 때문에 메일 열람 후에도 서버에 이메일이 그대로 남아있어서 반복적으로 메일 열람 가능

- 메일을 확인할 때마다 클라이언트와 서버가 통신해야 하기 때문에 메일 서버의 통신 트래픽을 높이며, 오프라인 상태에서는 메일 확인이 불가능하며, 개인 메일함의 용량이 서버 용량이기 때문에 용량 관리가 필요함

 

👉 SMTP: 사용자가 작성한 이메일을 메일 서버로 보내거나(PC -> 메일 서버), 메일 서버 A로 보낸 이메일을 인터넷을 통해 메일 서버 B로 보낼 때(메일 서버 A -> 인터넷 -> 메일 서버 B) 

👉 POP3: 용량이 큰 메일을 자주 주고받거나 오프라인 상태에서 메일 확인이 가능해야 한다면 

👉 IMAP: 불필요한 메일 다운 없이 빠르게 필요한 메일만 다운하고, 다양한 단말기에서 메일 확인이 가능해야 한다면 

 

이메일 서버의 작동 개념

💡 최종적으로 메일서버는 PC끼리 이메일 프로그램을 이용하여 주고 받은 이메일을 SMTP, POP3, IMAP 프로토콜을 사용하여 보내고 받을 수 있도록 도와주고 잠깐 저장해둘 수 있는 서버 공간


Sendmail 서버의 구현

📢Server(네임 서버/메일 서버), Server(B), Client, WinClient

 

📌 /etc/hostname 파일 ➤ 컴퓨터 호스트 이름 설정 파일

  🔷 hostname을 수정할 때는 hostname파일을 gedit으로 수정해도 되지만 hostname 명령어를 이용하여 즉시 변경해주는 방법도 있음(hostname 호스트 이름)

 

📌 /etc/hosts 파일 ➤ 도메인의 IP를 찾을 때 컴퓨터가 맨 처음 조사하는 파일(DNS 파일)

  🔷 hostname파일에서 호스트 이름을 바꾸면 hosts 파일에서도 호스트 이름을 변경하여 localhost로 연결되도록 해야 함

 

📌 /etc/mail/local-host-names 파일 ➤ 메일을 수신할 호스트명 즉. 메일로 사용할 도메일을 입력하는 파일

 


📌 apt-get -y install sendmail ➤ Sendmail 설치

  🔷 Sendmail ➤ 인터넷에서 메일을 전송하기 위해 사용되는 프로그램으로 이메일을 보내기 위해 사용하는 메일 서비스(네이버 메일, Gmail 등)

 


📌 apt-get-y install bind9 bind9utils ➤ 네임 서버 패키지 설치

  🔷 bind9(berkeley internet name domain) ➤ 내부 네임 서버를 설정하여 서버가 개인 host 이름과 개인 IP 주소를 확인하는 데 사용, 내부 host 이름과 개인 IP 주소를 중앙에서 관리할 수 있으며, 사용자 환경이 몇 개의 host로 확장될 때 필요함

 

📌 /etc/bind/named.conf.options 파일 ➤ named.conf의 환경설정을 할 수 있는 파일

  🔷 recursion yes; ➤ 기본값은 yes이며 재귀 query를 활성화. 네임 서버를 계속 질의할 건지 yes, no 하는 항목

  🔷 allow-query { any; }; ➤ 네임 서버는 하나의 네임서버만 있는 것이 아니고 하나의 DNS 서버에는 여러 개의 네임 서버를 가져올 수 있는데 이때, 네임 서버가 여러 개 추가되는 것을 허용하겠는가

 

📌 /etc/bind/named.conf 파일 ➤ 네임 서버를 위한 기본 구성 파일

 

📌 zone "OOO.OOO" IN {

   type master;

   file "/etc/bind/OOO.OOO.db"; 

   ➤ 개별 도메인에 대한 설정을 OOO.OOO이라는 도메인에 대해 설정하겠다는 의미로 OOO.OOO.db 파일을 zone 파일로 하여 네임 서비스를 하겠다는 설정

 

📌 OOO.OOO.db 파일(zone 파일)

1) $TTL ➤ Time To Live의 약자, 패킷이 라이터에서 폐기되기 전에 네트워크 내에 존재하도록 설정한 시간으로 설정값은 초단위로 함(86400초 = 24시간 = 하루)

2) 3H ➤ 3시간

3) @ ➤ ORIGIN을 의미하는 특수문자로 public domain을 말함. named.conf 파일에 정의된 도메인 명을 의미(도메인 명으로 적어도 무방함)

4) SOA ➤ Start Of Authority(권한의 시작)의 약자, 도메인네임서버에 대한 모든 정보를 가지고 있음

5) 2 1D 1H 1W 1H

   2 ➤ (serial) zone파일의 버전 정보를 의미하며, zone파일을 수정하거나 생성한 날을 숫자로 설정

  1D ➤ (refresh) 상위네임서버에 갱신된 정보를 확인하기 위해 주기적으로 체크하는 시간을 초로 설정(D=Day)

  1H ➤ (retry) 상위네임서버에 문제가 생겼을 때 재접속 간격(H=Hour)

  1W ➤ (expire) 상위네임서버에 접속하지 못할 경우 이전의 정보를 파기하는 간격, 상위네임서버의 정(W=Week)

6) IN  ➤ IN  다음으로 나오는 설정을 사용

- 형식 ➤  [도메인] 탭 [IN] 탭 [A, NS, MX등] 공백or탭 [우선순위 숫자] 탭 [도메인 or IP]

- 첫번째 항목에 @나 아무것도 입력하지 않으면 네임서버 환경설정 파일에서 설정한 도메인으로 인지

7) NS 레코드 ➤ 해당 도메인 호스트의 네임서버 호스트를 지정하는 레코드

8) MX 레코드 ➤ Mail Exchanger의 약자, 해당 도메인에 대한 메일서버를 지정하는 레코드

9) A 레코드 해당 도메인의 실제 IP주소를 설정

10) 그 외 레코드 유형

레코드 유형 역할
PTM IP 주소를 호스트 이름으로 매핑할 때 사용
PTR IP 주소에 대한 호스트명
CNAME 호스트 이름의 alias(엘리어스: 별칭)로 부여된 Canonical NAME
HINFO 호스트 정보를 표시하는 레코드
MINFO 메일박스와 메일 리스트 정보
UINFO 사용자 정보
TXT 호스트의 CPU정보와 운영체제 정보
ANY 호스트에 관련된 모든 레코드들의 정보

 

📌 systemctl restart/enable/status bind9

1) systemctl restart bind9 ➤ 서비스 재시작

2) systemctl enable bind9 ➤ 부팅 시 서비스 자동 시작

3) systemctl status bind9 ➤ 서비스 상태 확인

 

📌 ufw disable  방화벽 중지

 

📌 nslookup  네임서버에 질의하여 도메인의 정보를 조회


📌 system-connections/유선 연결1 파일  네트워크 기본 정보가 설정되어 있는 파일(X윈도 모드)

 

📌 /etc/resolv.conf 파일  네임서버의 정보 및 호스트 이름이 들어있는 파일


📌 netsh interface ip set dns Ethernet0 static OOO.OOO.OOO.OOO  netsh를 사용한 고정 IP 지정으로 DNS 변경


두 개의 메일서버 구현

[1] dovecot 패키지 설치 및 설정

 

📌 apt-get-y install dovecot-pop3d  dovecot 관련 패키지 설치

 

📌 /etc/mail/sendmail.cf 파일  sendmail 설정 파일

1) Cw도메인이름 도메인 이름을 가진 메일 서버로 사용

2) Fw  도메인마다 별도의 파일 지정

 

📌 /etc/mail/access 파일 메일서버로 접근하는 호스트나 도메인을 제거

- 형식:   abc.com           RELAY

1) RELAY 자리에 들어갈 수 있는 4가지

  (1) RELAY  접근 허용, 신뢰할 수 있는 도메인이나 호스트 또는 네트워크에는 메일을 릴레이할 수 있도록 허용

  (2) REJECT  메일 거절, 거부 메세지

  (3) DISCARD 메일 거절, 메세지 없음

  (4) OK DNS가 조회되지 않더라도 메일 허가, 보통 거부된 도메인의 예외 처리 시 사용

 

📌 makemap hash /etc/mail/access < /etc/mail/access  빠른 액세스를 위해 /etc/mail/access.db 파일로 생성하고 설정 적용

 

📌 /etc/dovecot/conf.d/10-mail.conf 파일

1) mail_access_groups = mail ➤ 메일 서비스가 사용하는 그룹 권한으로 사용

2) lock_method = fcntl  fcntl: 리눅스 파일 제어 함수, /var/mail/사용자 파일 보호

 

📌 adduser 메일 계정 사용자 생성

 

댓글