james.apache.org
메일 서버 구축을 테스트할 일이 생겨서 이런저런 자료를 찾던 중, Apache James를 찾게 되었다. 글 작성 당시의 최신 버전은 apache-james-3.6.0-app.zip 이다.
https://james.apache.org/server/quick-start.html
james.apache.org
다운로드 받아서 압축을 푼다
(경로는 /usr/local/server/james)
$ wget https://mirror.navercorp.com/apache/james/server/3.6.0/james-server-app-3.6.0-app.zip
$ unzip james-server-app-3.6.0-app.zip
그리고 각각의 설정 파일을 수정해준다.
1) domainlist.xml
- defualtDomain을 사용할 도메인으로 바꿔준다.
<domainlist class="org.apache.james.domainlist.jpa.JPADomainList">
<autodetect>false</autodetect>
<autodetectIP>false</autodetectIP>
<defaultDomain>사용할 도메인</defaultDomain>
</domainlist>
2) smtpserver.xml
- authRequired: 메일을 보내기 위해서는 인증을 해야 한다. (오픈 릴레이를 막기 위해서 필요하다.)
- verifyIdentity: 발신인을 임의 수정 못하게 하기 위한 설정
<authRequired>true</authRequired>
<verifyIdentity>true</verifyIdentity>
3) mailetcontainer.xml (중요)
- 외부로 메일을 발송하기 위해서는 아래 구문을 찾아서 주석처리해줘야 한다.
- 이것이 활성화된 상태에서는 메일을 보내더라도 relaying denied 가 발생하게 된다.
<!--
<mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor">
<processor>relay-denied</processor>
<notice>550 - Requested action not taken: relaying denied</notice>
</mailet>
-->
이어서 james 서버를 기동하고, 도메인과 사용자계정을 생성해준다.
도메인, 계정 등록은 1번씩만 해두면 된다.
$ sh james start
$ sh james-cli.sh adddomain 사용할도메인
$ sh james.cli.sh adduser 사용자@사용할도메인 패스워드
이제 Route53 에서 호스트 세팅을 하자

여기서 중요한 것은 MX 유형의 레코드를 잡아야 한다.
가령 mydomain.com 이란 호스트를 이용할거면 아래와 같이 MX 레코드와 A 레코드를 설정해주어야 한다.
mydomain.com MX 10 mail.mydomain.com
mail.mydomain.com A (서버의 고정 IP, AWS의 경우 Elastic IP)
레코드 셋이 잘 세팅 되었는지 확인은 아래에서 하면 된다.
mxtoolbox.com

이메일서버를 테스트 하면 아래와 같다

AWS EC2에서 25번 포트로 SMTP를 이용하여 메일을 발송하려면 RDNS 제한을 풀어달라고 요청을 보내야 한다.
https://console.aws.amazon.com/support/contacts?#/rdns-limits
console.aws.amazon.com

아래와 같이 telnet에서 커맨드로 테스트 할 수 있다.
220 ip-172-*** JAMES SMTP Server Server (JAMES SMTP Server ) ready
HELO mydomain.com
250 ip-172-*** Hello mydomain.com [61.***.***.***])
AUTH LOGIN
334 VXNl****
YWRt****
334 UGFz****
dGVz****
235 Authentication Successful
MAIL FROM: <admin@mydomain.com>
250 2.1.0 Sender <admin@mydomain.com> OK
RCPT TO: <****@naver.com>
250 2.1.5 Recipient <****@naver.com> OK
DATA
354 Ok Send data ending with <CRLF>.<CRLF>
SUBJECT: TEST MAIL
FROM: <admin@mydomain.com>
TO: <****@naver.com>
mail test
.
250 2.6.0 Message received
발송하면 실제로 외부 메일 (네이버)로 발송이 되게 된다.

썬더버드를 이용한 메일 테스트도 가능하다.
https://www.thunderbird.net/ko/
www.thunderbird.net

당연한 이야기지만, SMTP와 IMAP, POP3 등의 포트는 AWS 보안 설정에서 허용해줘야 정상적으로 메일을 송/수신 할 수 있다.
댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.