AWS SES 설정

Reading time ~1 minute

SES 사용의 이유

gmail또는 naver같은 기존에 있는 웹서비스가 아닌 개인 또는 기업용 이메일(domain이 일반 웹서비스와 다른)을 사용하게 되면 외부로 메일을 보낼때 검증이 되지 않아 일부 메일에서 스팸메일로 빠지는등의 예상치 못한 오류가 발생을 합니다.
아마존 SES는 해당 오류를 DKIM 인증을 통해 진행을 해주며 매우 저렴한 금액으로 사용할 수 있습니다. 또한 서버 구축 또는 비동기 처리를 하지 않고 AWS에 request만 보내면 처리를 할 수 있어 많이 알려지지는 않았지만 참 좋은 서비스라고 생각됩니다.

ses

Simple Email Service

SES

리전은 크게 상관은 없으나 오레곤이 한국에서 가장 가까운 곳으로 판단됩니다.

도메인 검증

  1. 좌측 대시 보드의 domains에 들어갑니다.
  2. Verify a New Domain을 클릭합니다. 도메인 검증
  3. 본인의 Domain을 넣고 Generate DKIM Settings에 체크 후 Verify This Domain을 클릭합니다. 도메인 검증2
  4. 나오는 설정 값을 각자의 호스팅 업체의 도메인 설정에 들어가 설정합니다. 도메인 검증3
  5. 일정 시간이 흐르면 자동으로 도메인 검증이 완료 됩니다.
  6. 검증이 끝나고 나면 다음과 같은 메일을 받을 수 있습니다. 도메인 검증 완료
  7. DKIM 인증 또한 자동으로 메일이 발송됩니다. DKIM 검증 완료

DKIM이란 Domain Keys Indentified Mail의 약자로써 해당 주소에서 왔다고 하는 메일이 실제로 도메인 소유자에 의해 승인이 되었는지 확인할 수 있는 Email인증 방법이며 SES에서는 SES에서 해당 인증 또한 같이 진행을 받을 수 있습니다.

이메일 검증

  1. 좌측 대시 보드의 Email Addresses에 들어갑니다.
  2. Verify a New Email Address를 클릭합니다.
  3. 가지고 있는 해당 도메인에 연결된 메일을 입력하고 Verify This Email Address를클릭합니다.
  4. 인증용 이메일이 방송 되며 Status가 Pending Verification으로 되어 있음을 확인 할 수 있으며 메일이 발송되지 않았을 경우 Resend를 눌러 재발송을 요청할 수 있습니다. 이메일 검증
  5. 해당 이메일에 들어가게 되면 아마존에서 발송한 검증용 이메일이 확인이 가능합니다.
  6. 해당 메일의 검증용 URL에 들어가게 되면 이메일 검증 후 다음과 같은 화면을 볼 수 있습니다. 이메일 검증 완료
  7. 다시 SES화면에 들어가게 되면 메일이 검증 되었음을 확인할 수 있습니다. 이메일 검증 완료2
  8. 해당 이메일 클릭후 Sending Test Email을 클릭하게 되면 다음과 같은 창이 나오며 테스트용 이메일을 발송할 수 있습니다. 이메일 보내기
  9. 메일 원문을 확인하면 발송자는 ses이며 DKIM서명 또한 적용이 되어 있음을 알 수 있습니다.

Django에서의 설정

굳이 따로 패키지를 설치하지 않아도 상관이 없으며 django의 기본 이메일을 사용하듯이 사용화면 되며 settings의 설정 작업만 조금 필요합니다.

# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'email-smtp.us-west-2.amazonaws.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = config_secret_common['aws']['ses']['key_id']
EMAIL_HOST_PASSWORD = config_secret_common['aws']['ses']['secret_key']
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'mail@vouloir.net'
SERVER_EMAIL = 'mail@vouloir.net'

Celery 데몬화

# Celery 데몬으로 관리하기### Celery 설정파일 작성하기```# vi /srv/celery/celery.confCELERYD_NODES="worker1"CELERY_BIN="/home/ubuntu/.pyenv/versions//bin...… Continue reading

EC2 배포 설정

Published on May 18, 2020