리눅스, 네트워크

메일서버 - 시작하기

베노 2024. 3. 24. 23:44

이전에 메일이 동작하는 거에 대해 설명을 했다.

메일서버를 구축하기전에 메일이라는 게 어떻게 작동하는지 알아야 메일서버를 구축하는데 수월하다.

 

메일을 이용하는 방법은 다양하다.

1. 기존 메일 서버를 이용하는 메일서비스

2. 도메인이 있지만, 업체를 통하여 메일서버를 구축하는 거

3. 그냥 멋짐 폭발과 함께 매력을 올려주는 직접 메일서버 구축하기

 

1번은 내 도메인을 못쓴다는 거다.

예를 들어보면 구글의 GMAIL, 네이버의 NAVER, 카카오의 KAKAO 이렇게 있다. 이런 것들은 그냥 계정만 생성하면 메일을 바로 이용할 수 있다.

 

2번은 돈이 들어간다는 거다.

물론 그만큼 편하고 순조로워서 나한테 얻는 스트레스는 없다.

 

3번은 내가 아는 지식과 장비들, 돈을 동원해서 직접 구축하는 것이다.

 

나는 3번을 통해 직접 구축할 거다. 이는 진짜 메일서버에 대한 1부터 10까지 모두 다 할 것이다.

 


사전 준비


 

메일 서버를 구축하기 전 필요한 게 있다. 도메인과 서버, 소프트웨어(프로그램)이다.

도메인은 내가 메일을 보낼 때 쓰는 ***@gmail.com과 같은 게 필요하다.

 

서버는 메일을 주고받고 하기 위해 나만의 서버가 필요하다.

이런 거는 미리 준비하면 좋다.

 

이렇게 준비가 다 끝났으면 구축을 시작하면 된다. 

 

나는 도메인이 있지만, 서버가 없다.

그럼 메일 서버 구축을 못하는 것인가? 그건 아니다. 서버는 "대여"하면 된다. 

나는 도메인은 cafe24를 통해 구입해서 도메인에 관한 설정과 필요한 것들은 cafe24를 통해 설정을 해야 한다.

서버는 가비아에서 대여를 했다. 가비아는 cafe24와 같은 호스팅 업체이지만 클라우드 서버 서비스가 있다.

 

왜 도메인을 cafe24를 통해 구입하고, 서버는 가비아를 통해 구입했는가?

처음에는 구글에서 서버를 대여해서 메일 서버 구축을 진행했다. 하지만 구글에서 메일 프로토콜 사용을 못한다는 내용이 있다. 그래서 구글을 포기하고 아마존을 통해 또 서버를 대여했다. 하지만 아마존은 메일 프로토콜을 사용하려면 사용 신청서를 작성해서 문의해야 한다는데 꽤 까다롭다. 답변이 항상 "왜??"라는 내용으로 답변을 받았다. (시비 터는 건가..)

이것도 포기하고 울면서 가비아로 이사를 갔다. 근데 여기는 기본적으로 메일 프로토콜을 선택할 수 있는 선택지가 있다.

구축해본 결과 가비아는 정상작동한다.

 

이렇게 사전준비는 다 끝났다.

 

여기서 서버는 어떤 걸 사용했고, 사양이 어떻게 되는지 따로 설명 안 한다.

왜냐면 사양이 구닥다리라서 자랑하기 부끄럽다.

 

운영체제는 우분투이다. 이것만 알려주겠다.

 

 


JAMES


이제 서버=우분투 같은 말이기 때문에 그냥 우분투라고 하겠다.

우분투에 메일을 주고받을 수 있는 프로그램을 설치해서 메일을 주고받아야 한다.

유명한 프로그램은 postfix와 dovecot이 있다. 오래전부터 존재해서 문서가 많고 내용이 알차다. 하지만 내가 원하는 건 데이터베이스와 연결해서 메일 프로그램(MUA:썬더버드, 아웃룩 같은 메일을 보내고 받을 수 있는 프로그램) 혹은 웹메일을 구성하고 싶은 거다. postfix와 dovecot은 서버에 사용자를 직접 생성해서 메일을 주고받는다고 한다.(아닐 수도)

그래서 얘는 웹메일로 하기에는 좀 부적합하는 거 같다. 물론 저런 것과 웹메일 프로그램과 연동해서 쓸 수 있지만, 그런 것들은 내 입맛대로 꾸밀 수 없다.

 

그래서 최종적으로 선택한 건 바로 JAMES라는 녀석이다.

 

이 JAMES는 아파치제단에서 만든 자바기반 메일 시스템 소프트웨어이다. 여기에 메일 송/수신 프로토콜을 지원해 주고, 데이터베이스를 지원해 준다.

 

그럼 이 녀석을 설치해 주면 된다.

 

그러면 이제 제임스를 설치해 주면 되는데 우리가 대여한 서버는 그래픽이 아닌 CLI기반이다. 즉 무조건 명령어만 통해서 작업해야 한다.

우분투에 curl, wget을 통해 설치해면 되는데 나는 curl이 더 편했다.

sudo apt-get update

update를 통해 업데이트할 거 있으면 해야 한다.

 

업데이트가 다 되었으면 curl을 설치하면 된다.

 

sudo apt-get install curl -y

apt-get은 데비안 패키지 설치 매니저이다. 프로그램(소프트웨어) 설치만 해주는 게 아니라 자동으로 설정까지 해 줘서 작업을 덜어준다. 따봉인 녀석이다.

 

curl을 설치했으면 이제 제임스를 설치하면 된다.

 

https://james.apache.org/download.cgi

 

Apache James Project – Download

Downloading Use the links below to download the product from one of our mirrors. You must verify the integrity of the downloaded files using signatures KEYS downloaded from our main distribution directory. (*) James maven repositories can be found on http

james.apache.org

이쪽으로 통해서 제임스를 다운로드하면 된다.

 

최신 안정버전인 3.7.5버전을 이용할거다.

 

3.7.5 버전을 다운로드하여야 하는데 위에서 말했다시피 서버는 CLI라서 명령어로 다운로드하여야 한다. 그럼 저 다운 링크를 따서 우분투에 설치하면 된다. 현재 24.03.24일 기준 안정적인 버전인 3.7.5 버전의 다운로드하는 링크는 아래와 같다.

https://archive.apache.org/dist/james/server/3.7.5/james-server-spring-app-3.7.5-app.zip

이 링크를 따서 우분투에 설치를 해야 한다.

 

sudo curl -O https://archive.apache.org/dist/james/server/3.7.5/james-server-spring-app-3.7.5-app.zip

다운로드하면 james-server-spring-app-3.7.5-app.zip이라는 녀석이 새로 생긴다. 이제 압축을 풀어보자.

 

sudo unzip james-server-spring-app-3.7.5-app.zip

sudo apt-get install unzip -y //unzip명령어가 없어 설치 해 달라고 경고메세지가 나오면 ㄱㄱ

그러면 james-server-spring-app-3.7.5라는 디렉터리가 생기면서 압축 풀기에 성공한다.

 

우선 이 디렉터리 이름이 기니깐 줄여주자.

sudo mv james-server-spring-app-3.7.5 mail

이러면 mail이라는 디렉터리 이름으로 바뀐다.

 

 

일단 이 디렉터리 안에 어떤 게 있는지 살펴보자.

 

mail디렉터리 안 구조

각종 파일들은 신경 안 써도 될 거 같으니 넘기고..

 

bin : James를 구동시키기 위해 쉘파일들이 있다.

conf : James를 구성하기 위해 각종 설정 파일들이 있다.

lib : James를 구동과 구성하기 위해 각종 자바 라이브러리들이 있다.

log : James 구동 후 일어나는 로그들을 다 저장시켜 주는 곳이다.

sieve : 몰라요

var : 몰라요~

 

이제 각 bin, conf, log들에 있는 파일들을 살펴보자

 

bin 디렉터리 안 구조

여기서 우리가 쓰는 중요한 파일들로 설명하자면

 

james : 제임스를 구동시키는 파일이다. 아래 명령어로 제임스를 구동시키거나 멈추게 할 수 있다.

sudo ./james start	//제임스 시작
sudo ./james restart	//제임스 재시작
sudo ./james stop	//제임스 종료

 

james-cli.sh : 제임스를 구동시킨 후 계정생성 및 제임스 메일을 관리하는 파일

sudo ./james-cli.sh listusers				//유저 목록 조회
sudo ./james-cli.sh listdomains				//도메인 목록 조회
sudo ./james-cli.sh adduser aaa@domain.com password1!	//유저추가, aaa@domain.com은 메일계정 아이디, password1!은 계정 비밀번호

 

사실 이거 외 다른 건 안 쓴다.

 

그다음은 conf디렉터리로 가 보자.

 

conf 디렉터리 안 구조

 

사진에 보이는 것처럼 여러 파일들이 다 설정 파일들이다. 여기서도 우리가 쓰는 파일들로 설명해 주겠다.

dnsservice.xml : 메일 서버가 구동하기 위한 DNS설정 파일

domainslist.xml : 메일 서버가 구동하기 위한 메일도메인 설정 파일

james-database.properties : 메일 서버와 데이터베이스 간의 연결해 주는 파일

imapserver.xml : 메일서버의 수신과 관련된 설정파일(포트 및 수신 서버의 보안인증 등)

smtpserver.xml : 메일서버의 발신과 관련된 설정파일(포트 및 발신 서버의 보안인증 등)

mailbox.xml : 메일서버에서 수/발신된 메일을 저장할 위치(서버로컬 저장, 데이터베이스 저장 등)

mailetcontainer.xml : 메일서버가 처리할 정책 및 각종 설정 파일 

wrapper.conf : 메일서버에서 발생된 로그 설정 파일

usersrepository.xml : 메일서버에 로그인될 계정에 대한 설정 파일

꽤 많지만 메일을 사용하기 위해 이 정도의 귀찮음은 어느 정도 감수해야 한다.

 

그 이외 디렉터리는 메일 설정하면서 살펴보는 게 좋을 듯하다.

 

 


끝으로


 

일단 내가 메일 서버를 구축 후 지금은 메일을 사용 중이다.

 

제일 화나는 건 이 서비스 저 서비스 이용하는 거다.

도메인 관련 관리는 카페 24, 서버 컴퓨터 관련 관리는 가비아, 메일서버 관련 관리는 아파치 제단의 제임스

총 3개를 왔다 갔다 해야 하는 거다.

 

아마 다음 포스트는 메일서버 설정위주로 하면서 할 것이다.

나의 최종적인 목표는 메일서버 구축 후 웹사이트와 연동하여 메일계정 생성, 삭제, 관리, 메일 보내고 받기 등 이런 거를 할 예정이다. 자바기반 메일 서버라서 JSP를 사용할지, 아님 이미 데이터베이스가 존재하니 JS로 연동하여할지 좀 고민을 해야 할 거 같다.

 

사실 이렇게 글을 싸질러보는 거 보면 한 달 안에 구축 가능하지만, 이게 어떤 오류를 일으킬지, 어떤 게 작동 안 될지에 따라 기간이 늘어난다.

 

내가 제일 막힌 거는 TLS보안 인증 및 서버 통신 오류였다.

TLS보안 인증은 어떤 TLS인증을 할 것인가에 따라 프로토콜이 달라지고, 서버 통신 오류는 어떤 이유로 통신에 오류가 생기는지 찾는 게 너무 답답했다.

내가 메일 구축 관련 글을 적는 이유는 그냥 내가 나중에 추가로 메일 서버를 구축할 때나, 나처럼 문제가 있는데 어디가 문제가 있는지 모르는 사람들을 위해 글을 적는 거다.

 

만약 이 글에 잘못된 정보가 있으면, 나한테 문자 남겨주면 반영해 주겠다.

'리눅스, 네트워크' 카테고리의 다른 글

메일서버 - 설정 및 구동하기  (1) 2024.04.20
정보보안 - AP  (0) 2023.08.13
메일서버 설정하기 - 동작원리 알기  (0) 2022.08.10
리눅스 - 시작하기  (0) 2021.11.16
정보보안  (0) 2021.11.03