토이 프로젝트/서버갖고 놀기 for DevOps

메일 서버 구축하기 dovecot, postfix - (2) SSL 인증서 생성 & postfix 설치 및 설정

TerianP 2021. 5. 22.
728x90

이번에는 잡설 없이 빠르게 시작하겠습니다!

구축 순서

1. SSL 인증서 생성

2. postfix 설치 및 설정 : 각종 파일 설정 , SSL 인증서 설정 

3. dovecot 설치 및 설정  : 각종 파일 설정 , SSL 인증서 설정

4. 유저별 메일 박스 설정 : 유저별 메일 박스 생성 및 설정 파일 확인

5. Outlook 프로그램 연동

6. Mysql 과 메일 서버 연동 및 최종 연동 확인(22.01.26 업데이트)

 

이번 글에서 설명할 내용은 구축 순서 부분 중 1. SSL 인증서 생성 -> 2. postfix 설치 및 설정 까지 입니다.

 

1. SSL 인증서 생성

다음 명령어를 사용하여 SSL 인증서를 생성합니다.

1
openssl req -new -x509 -nodes -out postfix_default.pem -keyout postfix_default.pem -days 3650
cs

- 여기서 x509는 인증서 암호화 방식입니다.

또한 - outpostfix_default.pem 에서 굳이 저와 똑같이 안하고 pem 파일의 파일명으로 자신이 원하는 이름으로 설정하셔도 무방합니다. 마찬가지로 -keyout 뒤의 postfix_default.pem도 원하시는 것으로 해도 무방합니다(다만 앞으로는 동일한 파일 이름을 사용한다는 가정하에 진행하겠습니다)

-days [숫자] 는 인증서의 유효기간입니다. 이거는 공인 인증서 같은 느낌이라...만료되면 다시 설치하고 설정해야해서 저는 3650 즉 10년으로 잡았습니다

 

openssl 파일 생성 시 설정 내용

  • Country Name : 이것은 두 자로 된 ISO 형식의 국가 코드입니다.
  • State or Province Name : 시 이름을 입력해야 하며 약어를 사용할 수 없습니다.
  • Locality Name : 이 필드는 대부분의 경우 생략이 가능하며 업체가 위치한 곳를 나타냅니다.
  • Organization : 사업자 등록증에 있는 회사명과 일치되는 영문 회사명을 입력하시면 됩니다.
  • Organization Unit : "리눅스 관리팀", "윈도우 관리팀" 등과 같이 업체의 부서를 입력할 수 있습니다.
  • Common Name : 인증받을 도메인 주소를 입력하시면 됩니다.

저는 KR, Seoul, Seoul, HJproject( 회사명은 아니고 제 사이트명으로 대신 했습니다), HJproject/jsj , hjproject.iptime.org, jsj@hjproject.iptime.org 로 했습니다.

마지막 이메일 주소는 제가 곧 만들 메일 서버에 맞춰서 적어보았습니다. 이메일 주소의 도메인을 생각해두신게 있다면 미리 해두시면 좋습니다.

최종적으로는 postfix_default.pem 파일이 생성되어야 합니다. 파일명과 파일위치는 꼭!! 필수로!! 기억해두세요

 

2. POSTFIX 설치 및 설정

1. 다음 명령어를 사용하여 postfix 를 설치합니다. 참 다행히도 postfix는 처음 설치 된 후 쉽게 설정 할 수 있도록 gui를 지원합니다. 고로 보다 기본 설정은 보다 쉽게 가능합니다

- sudo apt-get install postfix 

 

2. 설치 후 맨 처음 나오는 화면에서는 '인터넷 사이트' 에 버튼을 둔 후 엔터를 누룹니다.

2. 다음으로 시스템 메일 이름을 설정하는 곳에는 본인이 사용할 메일 주소의 뒤쪽 즉, hostname(ex. gmail.com, naver.com) 을 적어주시면 됩니다. 다만 저는 쉽게 하기위해서 DomainName과 HostName을 통일시킬 예정이며, 제가 사용하고 있는 DDNS 를 그대로 사용하겠습니다

저는 hjproject.iptime.org를 사용했습니다.

3. 다음으로는 엔터를 연타하면서 아래와 저와 동일하게 들어가 있는 것을 확인하시면 됩니다. 어짜피 나중에 따로 파일을 수정할 예정이라 확인만 하시면서 넘어가셔도 무방합니다.

다음 사진에서 hjproject.iptme.org 가 두 번 들어가있는데 DomainName과 HostName 동일함으로 이게 맞습니다. 

 

4. 여기까지 설정이 끝나면 postfix 의 main.cf 파일을 수정해야합니다. main.cf 파일은 postfix를 설정하는데 있어서 가장 중요한 역할을 하는 기본 설정 파일입니다. 다음에 설명할 dovecot 과 다르게 postfix 는 사실상 이 파일 하나로 거의 모든 부분들을 설정한다고 생각하면 됩니다.

파일위치는 다음과 같으며 일단 파일을 백업해두고 설정을 하시기를 추천드립니다. 백업안하면....나중에 많이 후회하실 겁니다ㅠㅠ

- 파일 위치 : /etc/postfix/main.cf

- 다음 설정들을 보고 동일하게 수정합니다. 아니면 초기 파일을 백업 해둔 것을 확인하셨으면, 기존의 전체 내용을 지우고 다음 내용을 복붙 후 수정하는 것도 좋은 방법입니다.

- [개인 수정]으로 되어있는 부분은 본인의 domain과 hostname을 적으면 됩니다. 저 같은 경우 둘다 모두 hjproject.iptime.org 를 사용하였습니다

- 빨간색으로 표시된 부분들은 SSL/TLS 인증을 위한 부분으로 SSL 인증서 설정을 안할 분은 모두 삭제하셔도 상관없습니다

- smtpd_tls_cert_file , smtpd_tls_key_file 이 두가지에는 SSL/TLS 인증서의 위치를 적어줍니다. 저는 편하게 하기 위해서 위에서 만든 SSL인증서 파일을(postfix_default.pem) postfix에 ssl 이란 디렉토리를 만들고 이곳으로 옮겨 위치를 잡아주었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# 도메인 이름 (기본값 >>  postconf -d | grep mydomain )
mydomain = [개인수정]
 
# hotname (기본값 >>  postconf -d | grep mydomain )
 
myhostname = [개인수정]
 
# 배달되는 도메인 목록
 
mydestination = $mydomain, $myhostname localhost
 
# 배달되는 도메인 이름 (local)
 
myorigin = /etc/mailname
 
# smtp 접속 인사말
 
smtpd_banner = $myhostname ESMTP $mail_name
 
# 알림 설정 제거
 
biff = no
 
# 메일 크기 제한 (기본값 51200000)
 
mailbox_size_limit = 0
 
# 주소 확장 구분 기호
 
recipient_delimiter = +
 
# 사용자 홈 디렉터리 설정 for qmail-style delivery
 
home_mailbox = Maildir/
 
# 이전 버전과 호환을 위한 설정
 
compatibility_level=2
 
# 전달 별칭 데이터베이스 설정
 
alias_maps = hash:/etc/aliases
 
 
# SASL 인증 활성화
 
smtpd_sasl_auth_enable = yes
 
# 비표준 지원 여부 (RFC 4954)
 
broken_sasl_auth_clients = yes
 
# Dovecot SASL 사용
 
smtpd_sasl_type = dovecot
 
# UNIX Domain
 
smtpd_sasl_path = private/auth
 
# 인증 메커니즘
 
smtpd_sasl_security_options = noanonymous
 
smtpd_sasl_tls_security_options = noanonymous
 
smtpd_tls_auth_only = no
 
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
 
# 로그인 이름에 도메인 추가 e.g. "john" instead of "john@example.com"
 
smtpd_sasl_local_domain = $mydomain
 
# smtp client tls level
 
smtp_tls_security_level = may
 
# smtp server tls level
 
smtpd_tls_security_level = may
 
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
 
# 아래 두 가지에는 아까 SSL/TLS 인증서에서 생성한 파일의 위치를 적어줍니다.
# 저는 편하게 하기 위해서 postfix 디렉토리에 ssl이라고 하나 만들어서 그 안에 넣고 위치를 잡아주었습니다
smtpd_tls_cert_file = /etc/postfix/ssl/postfix_default.pem
smtpd_tls_key_file = /etc/postfix/ssl/postfix_default.pem
 
 
 
relayhost =
mynetworks = 127.0.0.1/32
inet_protocols = all
cs

 

5. 마지막으로 동일한 위치에 있는 master.cf 설정 파일을 열어 다음과 같이 수정합니다.

- 파일위치 : /etc/postfix/master.cf

- 아래 사진과 동일하게! 설정해주시면 됩니다

동일하게 설정해주세요ㅠ

6. 이제 설정을 적용하기 위해서 postfix 를 끄고 재시작 해줍시다

sudo /etc/init.d/dovecot stop
sudo /etc/init.d/dovecot start
또는
sudo /etc/init.d/postfix stop
sudo /etc/init.d/postfix start

 

7. 마지막으로 postfix가 설정되었는지 확인해봅시다!

여기까지하면 smtp(25) 와 smtps(465) 접속했을 때 아래 사진처럼 떠야 합니다.

- SMTP 포트 확인

1) 명령어 : telnet [자신의 메일 도메인 주소] 25

2) 명령어2 : HELO [자신의 메일 도메인 주소] -> 250 [메일 도메인 주소] 가 나와야 합니다

요렇게 나와야 합니다.

- SMTPS 포트 확인

1) 명령어 : openssl s_client -servername [메일 도메인 주소] -connect [메일 도메인 주소]:465

2) 명령어2 : HELO [자신의 메일 도메인 주소] -> 250 [메일 도메인 주소] 가 나와야 합니다

요렇게 중간에 TLS 인증서에 대한 설명이 나옵니다
역시 helo 명령어를 사용해봅니다.

여기까지 postfix 에 대한 설정과 smtps 설정을 완료했습니다. 쉽게 생각하시면 메일을 보낼 준비는 다 된 것 입니다.

다음에는 메일을 받을 준비를 해봅시다.

긴 글 읽으시느라 수고하셨습니다.

댓글