AWS SES는 AWS에서 제공하는 이메일 서비스다. 이메일 서버를 따로 구축 할 필요가 없다. 필요한건 소유 도메인 뿐이다.
나는 2307~2308에 걸친 프로젝트를 진행하면서 전체적인 프론트엔드 및 커뮤니티 백엔드 기능을 담당했다. 회원 가입 시 사용자 비밀번호 암호화는 sha-256을 사용했으니 비밀번호는 찾기 기능이 아닌 재설정 서비스가 필요한건 필연적인 선택이였다.
그 때 솔루션을 찾던 중 우리 같은 타깃층(그렇게 크지 않은 서비스 규모)에 가장 적합한 건 이메일 서비스를 통한 인증이라고 생각하였고, 메일링 서비스는 AWS SES가 가장 적합하다고 생각하여 비밀번호 재설정 서비스엔 AWS SES를 이용했다.
가장 첫번째 해야 할 일은 AWS SES의 샌드박스 탈출이다. 샌드박스 하에선 메일 발신수에 대한 제한(사실 이건 프로젝트용으론 큰 문제가 아니다), 이메일을 보낼 수 있는 계정에 대한 제한이 있다. 우리는 후자의 이유 때문에 샌드박스를 탈출 해야 한다.
샌드박스 탈출을 위해선 AWS 고객 센터에 사유를 적어야 한다. aws에서 신경 쓰는건 aws ses 서비스를 통해서 무분별한 광고 메일을 보내는것을 경계 하므로, 우리는
1. 이 이메일은 특정 기능(회원 가입 인증 혹은 비밀번호 찾기 인증)에 사용 할 것.
2. 이메일을 어떻게 수집 할 것인지
3. 사용자의 거절 의사를 어떻게 받아들일 것인지
에 대한 부분을 논리 정연하게 적어서 고객센터에 제출 하면 된다.
참고)https://docs.aws.amazon.com/ko_kr/ses/latest/dg/request-production-access.html
aws lambda를 통해 구현한 비밀번호 재설정 서비스 코드
def send_password_email(destination, new_password):
ses = boto3.client("ses")
sender = "help@taroot.club"
subject = "귀하의 새로운 비밀번호 입니다."
body = f"새로운 비밀번호는: {new_password} 입니다. 로그인 후 비밀번호를 재설정 해주세요"
try:
response = ses.send_email(
Source=sender,
Destination={
"ToAddresses": [destination]
},
Message={
"Subject": {"Data": subject},
"Body": {"Text": {"Data": body}}
}
)
다음과 같이 개인정보 관련 메일링 서비스를 구현 할 수 있었다.