Amazon SES 사용하여 메일 보내기 (2) - 아마존 SES 설정
Amazon SES를 통해 메일보내기 시리즈
- Amazon SES 사용하여 메일 보내기 (1) - SES란?
- Amazon SES 사용하여 메일 보내기 (2) - 아마존 SES 설정 - 현재글
- Amazon SES 사용하여 메일 보내기 (3) - 이메일 인증 기능 with Spring & AWS SDK for Kotlin
시작하기 전..
이 글에서는 도메인을 발신자로 만들어 메일을 보내는 것까지만 실습을 진행합니다. 만약 수신 기능까지 원하신다면 (예를들어 피드백 메일 등..) 서울 리전이 아닌 다른 리전에서 서비스를 이용하셔야 합니다. 가능한 리전은 아래에 첨부하겠습니다.
확인 해보니 기존에는 미국 3곳에서만 가능했지만 현재는 서버가 많이 늘어난 것 같습니다. 추후에는 서울도 지원할지도..
또한, cname 유형의 DNS 등록 뿐 아니라 MX 유형 레코드 등록을 설정하셔야 하니 이 키워드를 기반으로 검색을 해보시면 도움이 되실듯 합니다. MX 레코드는 도메인으로 전송되는 이메일을 수신하기 위해 메일 서버를 지정하는 것입니다. 즉 우리의 도메인으로 오는 메일을 받아 ses로 보내줄 수 있도록 MX 레코드를 가비아(혹은 도메인 서버 등)에 설정하는 것이다.
아마존 SES로 이메일 보내기 시작.
아마존에서 테스트로 사용할 이메일, 도메인 등록하기
맨 처음 아마존 SES를 시작하기를 누르게 되면 다음과 같이 이메일 주소와 전송 도메인을 추가하는 화면이 뜨게 된다.
이메일 주소: 프로덕션 전에 이메일 테스트를 해볼 수 있는 본인의 이메일 주소. 추후 아마존으로부터 날라온 메일을 통해 본인 인증 절차를 거쳐야 사용할 수 있다.
전송 도메인: 우리가 메일을 보낼 때 사용할 발신 도메인을 명시한다. 이 또한, 도메인 업체에 DKIM이라는 것을 통해 이 도메인이 인증된 도메인이라는 것을 알려줄 수 있도록 CNAME을 등록해주어야 한다.
시작하면 아마존에서 테스트로 사용할 이메일에 대해 인증을 위한 메일이 날라온다. 저 링크를 클릭하면 인증이 가능하다.
이제 아마존 SES 콘솔로 가보면 사용 가능한 것을 확인할 수 있고 우리가 테스트를 위한 설정을 마저 해주어야 한다고 알림이 뜬다.
메일 주소는 위에서 확인했고,
테스트 이메일을 전송해보면 저의 경우에는 테스트가 진행되지 않았다. 도메인에 대한 설정이 없었기 때문이다.
테스트 이메일을 전송되었다고 뜨지만, 실제로 구글 메일로 메일이 오지는 않았다.
도메인에 레코드 설정하기 <- 우리 도메인을 사용할 수 있도록 만들어주는 설정
아마존 SES는 DKIM을 이용해 우리 서버의 도메인이 네이버, 구글과 같은 정상적인 인증된 도메인이라는 것을 인증시켜준다. 우리는 그것을 도메인 서버가 통신시 사용할 수 있도록 도메인 서버에게 알려주기 위해 설정을 한다고 생각하면 된다.(내가 이해한 부분.)
위에서 DNS 코드 가져오기를 누르면 아래와 같은 창이 뜬다. 본인이 도메인을 구매한 사이트에 이 정보를 입력해준다.
본인은 가비아에서 도메인을 구매했으므로 가비아의 DNS 레코드 설정하기 문서를 보고 진행하였다. 문서가 친절하지는 않아서 이해하는데 애먹었다.
가비아: 국내 1위
customer.gabia.com
먼저, 가비의 도메인 관리 툴로 이동하여 도메인을 클릭해준다.
아래 DNS 정보에서 레코드 설정 클릭.
레코드 수정 클릭하여 CNAME 유형의 레코드 등록.
도메인에 설정한 DNS 프로바이더에서 사용할 도메인에 설정값을 추가한다. 타입은 CNAME로 지정하고 값은 다음과 같다.
SES에서 확인한 값들을 넣어줄 것인데 양식은 다음과 같다.
유형 - CNAME
호스트 - 아마존 SES 도메인 DNS 레코드 화면의 이름값 중 "해쉬값._domainkey" 까지
값/위치 - 아마존 SES 도메인 DNS 레코드 화면의 값 내용을 넣어주되 마지막에 "."(온점)을 찍어주어야 한다. 본인의 경우 amazonses.com.에 . 을 넣어주었다.
설정하고 좀 기다리면 아마존 SES에서 다음과 같이 인증됨이 확인된다.
또한 DKIM 설정이 잘 되었다고 이메일이 온다.
이제 테스트를 해보자.
위와 같이 테스트를 진행하면 아래와 같이 성공한다.
이 글에서는 간단하게 설정하는 방법을 알아보았고 다음은 Spring 단에서의 코드를 작성해보고자 한다.
간단한 설정인데 DNS에 대한 CS 지식이 없다보니 생각보다 설정에 많은 시간을 사용했다.