실습과제 결과
1) 실습 과제: Server(b) 에 메일 서버를 추가로 구축하여, 이메일을 주고 받아 보자.
- 호스트 이름 / 메일 서버 주소 : mail.it.ac.kr
- 사용자 계정 : soo
2) 실습 과정 요약
- DNS Server 구축 후 확인
- hostname 변경
- soo 사용자 추가
3) 실습 과제 결과 영상
- soo@it.ac.kr이 peng@cs.ac.kr에게 "Hi My name is soo!" 내용의 메일을 보낸 뒤,
- peng@cs.ac.kr이 다시 soo@it.ac.kr로 "Hi My name is peng!" 내용의 메일을 보내는 결과 영상.
새로 배운 내용
1. 원격접속 구축하기 - openssh
1) Windows Terminal을 활용하여 SSH 접속 - linux@192.168.91.139
2) Windows Terminal을 활용하여 SSH 접속 - linux-b@192.168.91.128
2. Mail Server
1) Email 의 송수신에서 사용되는 프로토콜
- SMTP (Simple Mail Transfer Protocol)
클라이언트가 메일을 보내거나, 메일 서버끼리 메일을 주고 받을 때
- POP3 (Post Office Protocol)
메일 서버에 도착되어 있는 메일을 클라이언트로 가져올 때 (서버에서 로컬 장치로 다운로드)
- IMAP (Internet Mail Access Protocol)
POP3 와 유사함. 중앙 서버에서 동기화해주며 모든 장치에서 동일한 이메일 확인 가능
*네임 서버, SMTP 같이 메일을 주로 보내는 서버와, POP3 같이 메일을 받는 서버는 분리되어 있음.
2) Sendmail
-인터넷에서 메일을 전송하기 위해 사용되는 패키지
*주요 설정 파일*
/usr/bin/sendmail : 데몬 파일
/usr/bin/makemap : 맵 생성 실행파일
/var/spool/mqueue : 메일을 일시 저장하는 디렉터리
/var/spool/mail : 개별 메일을 보관하는 디렉터리
/etc/mail/access : relay 제한 및 설정 파일 (스팸 메일 방지 등)
RELAY : 관련 메일 수신/발신 허용
REJECT : 관련 메일 수신/발신 거부
/etc/mail/sendmail.cf : sendmail 설정 파일
3) Mail Server 구축하기
* DNS Server 구축 *
- /etc/bind/named.conf.options 를 다음과 같이 수정
- /etc/bind/named.conf.local 를 다음과 같이 수정
- /etc/bind/cs.ac.kr.db 파일을 추가하여 다음과 같이 작성
-설정이 제대로 되었는지 확인해보기
- /etc/resolv.conf에서 nameserver의 경로를 server-b의 IP주소로 변경한 후에 nslookup으로 질의하여 잘 설정되었는지 확인
* Mail Server 구축 *
- /etc/hostname에서 Server 이름을 mail.cs.ac.kr로 변경한 뒤 /etc/hosts에서 ip를 추가
- 마찬가지로 /etc/mail/local-host-names에서 mail.cs.ac.kr 호스트를 추가
- /etc/resolv.conf에서 nameserver를 server-b의 IP주소로 설정
- Server를 재부팅한 뒤 host 이름 확인하면, 아래와 같이 Server에서 'mail'로 hostname이 변경된 것을 볼 수 있다.
- /etc/mail/sendmail.cf에서 다음과 같이 수정. 269, 270행은 addr=127.0.0.1가 입력되어있어 자기 자신만 메일을 보낼 수 있지만, addr 부분을 삭제하게 되면 다른 Client의 ip주소에서도 메일을 보낼 수 있게 된다.
- /etc/mail/access에 다음과 같이 추가. 기본적으로 cs.ac.kr로 들어오는 것은 허용하고, 192.168.91.~~에 해당하는 IP 주소는 메일을 보낼 수 있도록 허용한다.
- /etc/dovecot/dovecot.conf 에서 아래와 같이 수정. /etc/dovecot/conf.d/10-mail.conf 에서도 121, 166행 주석 제거
4) Sendmail 테스트
- peng 사용자에게 "Subject: sendmail test" 내용의 메일을 전송
- /var/spool/mail/peng 경로로 가면 메일이 잘 저장되어있는 것을 볼 수 있음.
-이번에는 txt 파일로 만들어 메일 전송. mail.txt 파일을 만들어 다음과 같이 입력한다.
- sendmail -vt < ~/mail.txt 입력
- 앞에서 보낸 메일과 현재 보낸 메일이 함께 뜨는 것을 확인할 수 있다.
5) Evolution 테스트
- Client (Kubuntu)의 DNS 서버 변경
- 재부팅한 뒤 evolution 실행하여 다음과 같이 설정
-아래와 같은 메세지가 뜨면 Accept Permanently를 클릭한다.
-이제 Inbox를 눌러보면 앞에서 peng이 받았던 메일들이 모두 뜨는 것을 볼 수 있다.
- Edit>account 로 들어간 뒤 Receiving Email과 Sending Email의 Secyrity에서 Encryption method를 No ecnryption으로 바꾸면 메일 작성이 가능하다. (보안 문제로 인해 위 설정을 안하고 보내면 오류가 발생한다!!)
- Send 클릭 후 다시 Inbox로 들어가면 peng 자신에게 보낸 메일이 추가되어있는 것을 확인할 수 있다.
문제가 발생하거나 고민한 내용 & 해결 과정
▶ 고민한 내용
peng이 soo로 메일을 보내는 것은 성공했지만,
soo가 peng에게 메일을 보내는 과정 중 TLS handshake failed 오류 발생.
▶ 해결 과정
다시 확인해보니 /etc/bind/it.ac.kr.db 파일에서 IP 주소를 잘못 입력한 것을 확인할 수 있었다. 다시 과정을 되돌아가서 잘못된 설정을 수정해주었더니 해결할 수 있었다.
참고할만한 내용
https://unabated.tistory.com/entry/mail-%EC%A0%84%EC%86%A1%EC%9D%98-%EC%9B%90%EB%A6%AC
https://peemangit.tistory.com/54
회고(+, -, !)
+ : 먼저 openssh를 여러번 사용하다보니 openssh 사용에 더욱 능숙해진 것 같아 좋았다. 그리고 저번 주차에 배웠던 DNS Server에서 배웠던 캐시 DB, ZONE 파일 설정 등을 활용하여 Mail Server를 구축해볼 수 있어서 복습할 수 있는 기회가 된 것 같다.
- : 이번 주차는 다른 주차에 비해 오류가 많이 났던 것 같다. 실습 과제 중 처음 코드를 작성할 때 어느 경우에 어떤 IP 주소로 설정해야하는지 헷갈려 실수도 있었고, reboot한 뒤에 dns 서버 설정이 다시 초기화 되어있는 등 여러가지 시행착오를 겪었던 것 같다. 하지만, 다시 처음으로 돌아가 차근차근 잘못 된 부분을 해결해나가면서 오류를 해결할 수 있었다. 이 과정을 통해 ZONE 파일의 문법을 더 잘 이해할 수 있게 된 것 같다.
! : 이번주에 배운 SMTP, POP3, IMAP 프로토콜을 잘 이해하고 POP3와 IMAP의 차이를 다시 잘 복습하고 넘어가야겠다. 또한 실습을 통해서 메일 전송 과정이 어떻게 되는지 더 잘 와닿았던 수업이었던 것 같다.
'Linux > 실습 기록' 카테고리의 다른 글
[컴퓨터시스템관리] 2021.06.01 14주차 실습일지 - 방화벽 서버 구축, Docker 실습 (0) | 2021.06.02 |
---|---|
[컴퓨터시스템관리] 2021.05.25 13주차 실습일지 - Web Server (0) | 2021.05.25 |
[컴퓨터시스템관리] 2021.05.11 11주차 실습일지 - Domain Name Server (0) | 2021.05.11 |
[컴퓨터시스템관리] 2021.05.04 10주차 실습일지 - Remote Server (0) | 2021.05.04 |
[컴퓨터시스템관리] 2021.04.27 9주차 중간 과제 (0) | 2021.04.28 |