Apache James 메일 서버는 Java로 만든 메일 서버로

다양한 오픈 소스 메일 서버 중에서 최고의 메일 서버인지는 확인되지 않지만, 안정적인 기능과 Apache의 지원을 받는 메일 서버이다.

다만 문서나 자료가 많지 않아서, 알게 되는 것들을 기록차원에서 다음과 같이 나누어 정리한다.

 

  1. Apache James 메일 서버 - 설치
  2. Apache James 메일 서버 - 설정
  3. Apache James 메일 서버 - 메일 클라이언트
  4. Apache James 메일 서버 - Text와 JPA(MariaDB등)
  5. Apache James 메일 서버 - 스팸 필터 (SpamAssassin)

 

Apache James 메일 서버(이하 James)를 사용해 보기 전에

SMTP(Simple Mail Transfer Protocol), IMAP(Internet Message Access Protocol) 등의 개념에 대해서는 검색해 보거나 다음 자료들을 읽어보는 것이 좋다.


        https://wodonggun.github.io/wodonggun.github.io/study/SMTP,-POP3,-IMAP-%EC%9D%B4%EB%9E%80.html
        https://m.post.naver.com/viewer/postView.nhn?volumeNo=26957131&memberNo=2521903

James의 공식 사이트는 다음과 같이 그럴 듯 해 보이는데, 메뉴를 클릭하면 심플한 구조에 간단한 설명들만 있다.

상세한 자료는 커뮤니티 사이트의 내용을 참조해야 한다.


James 설치 방법은 다음 URL에 정리되어 있지만, 상세하게 설명되어 있지 않다.

(아는 사람에게는 간단 명료한 설치 문서가 될 것 같다.)

            https://james.apache.org/server/quick-start.html
            https://james.apache.org/server/install.html

 

여기에서는 이 내용을 토대로 윈도우(10)에서 설치하는 방법을 중심으로 정리한다.

리눅스에 설치하는 방법은 위 URL 내용대로 하면 되지만, 윈도우는 조금 더 설치가 어렵기(?) 때문이다.

Java 설치 방법은 여기에서 정리하지 않는다.

JDK 1.8 이상을 설치해야 하고, JAVA_HOME과 bin 폴더에 대한 Path는 지정되어 있어야 한다.

 

먼저, 다운로드 사이트에서 apache-james-3.5.0-app.zip 파일을 다운받는다.

오픈 소스이기 때문에 소스를 받아서 (할 수 있다면) 수정해서 사용할 수도 있다.

(도전 중인데, 설치가 쉽지 않다. 실력향상을 위해 도전해 보는 것도 좋을 것 같다.)

여기에서는 Binary 파일인 apache-james-3.5.0-app.zip을 받아서 실행한다.

적당한 폴더에 압축을 풀면, 다음과 같은 폴더 구조를 볼 수 있다.

bin 폴더에는 James를 실행하는 파일이 있고,

conf 폴더에는 James 설정 파일들이 있다.

lib 폴더는 James 실행에 필요한 Java 라이브러리들이 있고,

log 폴더는 실행 결과에 대한 다양한 정보를 제공하는 로그 파일들이 있다.

var 폴더에는 activemq, 메일 오류 파일 등이 저장되어 있다.

 

conf 폴더에는 20 여개의 설정 파일들이 있다.

James는 다양한 기능을 제공하는데, 이 설정 파일들을 이용하여 조절할 수 있다.

설정에 대한 간략한 웹 페이지가 있지만 설명이 많지 않고, 각 설정 파일 안에 간단한 설명이 주석으로 포함되어 있다.

설정과 관련된 주요한 몇 가지 내용은 별도로 정리한다.

여기에서는 James를 실행하기 위한 설명 몇 가지만 지정한다.

 

domainlist.xml 파일에서 사용할 도메인(forest71.com)을 지정한다.

이 도메인은 실제 등록된 도메인을 지정해도 되고, 테스트를 위해서 여기서는 forest71.com을 사용한다.

사용할 도메인을 지정하고 James를 실행하면 되지만,

mailetcontainer.xml에서 우편 관리자 계정에 대한 도메인도 위와 같이 동일하게 지정한다.

우편 관리자 계정은 반송 메일 등에 사용된다.

James는 Java로 제작되었기 때문에 다운로드 받은 zip 파일 하나로 윈도우와 리눅스에서 실행할 수 있다.

다만, James가 여러 가지 이유로 갑자기 종료 되었거나 멈춰진 상태로 있을 경우, 자동으로 감지하여 재시작하기 위해 Wrapper를 사용하여 제작되었다.

(기업에서 메일 서버는 중지되면 안 된다.)

이 Wrapper가 윈도우에서는 윈도우 서비스로 등록해서 사용하고, 리눅스에서는 쉘(Shell)로 백그라운드에서 실행한다.

 

윈도우 시작 메뉴를 눌러 cmd 를 입력해서 콘솔(cmd) 창을 관리자 권한으로 실행한다.

리눅스도 root 권한으로 실행해야 한다.

(메일 서버는 25와 143포트(port)를 사용하는데 1024보다 작은 포트는 관리자 권한으로만 실행 할 수 있다.)

 

콘솔 창에서 James 압축을 해제한 폴더 중 bin 폴더로 이동하여 james.bat install 를 실행한다.

이것은 James를 윈도우 서비스로 등록하는 명령어로, 다음과 같이 서비스가 등록된다.

james.bat remove로 제거 할 수 있다.

윈도우 서비스 창에서 실행 버튼을 눌러 실행해도 되고, 콘솔 창에서 james.bat start로 실행해도 된다.

start외에 stop이나 restart 로 James를 중지하거나 재시작할 수 있다.

리눅스에서는 james.bat 대신에 ./james.sh를 실행하면 되고, 위와 같이 서비스에 등록하는 과정없이 실행하면 된다.

윈도우는 관리자 권한으로 콘솔(cmd) 창을 실행했지만,

리눅스는 root 계정으로 로그인해서 실행하거나 다음과 같이 sudo를 이용해서 실행해야 한다.

           sudo ./james.sh start

James를 실행하는 윈도우와 리눅스의 차이는 이 정도가 있다.

 

log폴더에 다양한 로그 파일들이 생성되는데, wrapper.log 파일에 각 로그의 내용이 포함되어 생성된다.

wrapper.log파일을 적절한 편집기로 열어서 다음과 같이 잘 시작되었는지 확인한다.

리눅스는 less log/wrapper.log 나 tail -f log/wrapper.log로 확인한다.

 

주의: wrapper.log에 위와 같은 실행 결과가 아닌, 다음과 같은 오류를 볼 수 있다.

     Unable to start JVM: No such file or directory (2)
     JVM exited while loading the application.

이것은 JAVA_HOME 이나 PATH 설정이 제대로 지정되지 않아서 생기는 오류로 JAVA_HOME 이나 PATH 설정을 확인한다.
콘솔 창에서 java를 실행하면 사용법이 출력되어야 제대로 설치된 것이다.

계속 이렇게 오류가 발생할 경우 conf폴더의 wrapper.conf 파일에서 다음과 같이 java가 설치된 경로(bin폴더 포함)를 지정하면 된다.

# Java Application
wrapper.java.command=(자바경로지정)java
wrapper.working.dir=.

 

또는 콘솔 창에서 다음 명령어로 SMTP (25), POP3 (110), IMAP (143) 포트가 보이면 잘 실행된 것이다.

    윈도우 : netstat -anq | findstr LISTEN
    리눅스 : netstat -anp | grep LISTEN

James가 제대로 실행되었으면,

다음 명령어로 앞서 지정한 도메인을 제임스에 등록하고, ListDomains으로 확인한다 (다음 주의사항 확인).

    윈도우: james-cli.bat adddomain forest71.com
    리눅스: ./james-cli.sh AddDomain forest71.com

주의
James 설치 문서에서는 위와 같이 실행하라고 하는데,
domainlist.xml 파일에서 사용할 도메인(forest71.com)을 지정했기 때문에 추가하지 않아도 된다.

다음 명령어로(adduser) 메일 사용자(계정@도메인)을 생성하고 ListUsers로 확인한다.

    james-cli AddUser gujc1@forest71.com gujc1234

이상으로 James 설치 방법을 윈도우 중심으로 정리하였다.

윈도우나 리눅스나 기본적인 설치 / 사용 방법은 동일하다.

윈도우는 윈도우 서비스에 등록해서(james install) 사용하는 차이만 있다.

(굳이 추가하면 bat를 사용하느냐? sh을 사용하느냐의 차이도 있다.)

 

주의: 리눅스(Linux)에는 기본적으로 Postfix나 Sendmail이 설치된 경우가 있다.

설치전에 netstat 로 25번 포트를 사용하는 프로그램이 있는지 확인할 수 있다.

설치된 경우에는 James를 실행할때, wrapper.log에 포트 중복 오류가 발생한다.

 

James 설치 방법을 한마디로 정리하면, James 메일 도메인과 메일 사용자를 등록해서 실행하는 것이다.

기본적인 설정만으로도 내부 메일은 문제없이 사용할 수 있다.

 

이제 메일을 보내고 받으면 되는데, 메일을 송수신하는 방법과 좀더 상세한 설정은 다른 페이지에 정리하였다.


 

+ Recent posts