-
Apache James + AWS EC2 메일 서버 구축Server/Spring Boots 2021. 6. 30. 18:04
Apache James
About James stands for Java Apache Mail Enterprise Server! It has a modular architecture based on a rich set of modern and efficient components which provides at the end complete, stable, secure and extendable Mail Servers running on the JVM. Create your o
james.apache.org
메일 서버 구축을 테스트할 일이 생겨서 이런저런 자료를 찾던 중, Apache James를 찾게 되었다. 글 작성 당시의 최신 버전은 apache-james-3.6.0-app.zip 이다.
https://james.apache.org/server/quick-start.html
Apache James Project – Apache James Server 3 - Quick Start
Quick Start The goal of the document is to allow anyone to start with James binary Spring distribution as an operational mail server. For more complete ways of deploying James server please refer to the James installation guide Step 0: Requirements #######
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)
레코드 셋이 잘 세팅 되었는지 확인은 아래에서 하면 된다.
MX Lookup Tool - Check your DNS MX Records online - MxToolbox
mxtoolbox.com
이메일서버를 테스트 하면 아래와 같다
AWS EC2에서 25번 포트로 SMTP를 이용하여 메일을 발송하려면 RDNS 제한을 풀어달라고 요청을 보내야 한다.
https://console.aws.amazon.com/support/contacts?#/rdns-limits
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/
Thunderbird — 이메일을 더 쉽게 사용하세요.
Thunderbird는 메일을 더 쉽게 사용할 수 있는 무료 프로그램입니다. 더 많은 기능을 만나보세요!
www.thunderbird.net
당연한 이야기지만, SMTP와 IMAP, POP3 등의 포트는 AWS 보안 설정에서 허용해줘야 정상적으로 메일을 송/수신 할 수 있다.
'Server > Spring Boots' 카테고리의 다른 글
Spring Security + CustomAuthenticationFilter 만들기 (0) 2021.05.27 Spring Boot Maven Multi Module 개발환경 설정하기 (0) 2020.11.11 Spring Profile + Maven Profile + WAR파일 배포 (1) 2020.10.21 [Spring boot] Class path contains multiple SLF4J bindings 에러 (0) 2020.10.21