Amazon SES 이슈 정리

김의석 ·2024년 9월 2일

Hello! Poko Ver.2

목록 보기
13/28

참고

https://blog.naver.com/dsz08082/223102679738

1. SMTP 인증 오류

  • 문제: 이메일 전송 중 socket.gaierror: [Errno -2] Name or service not known 오류가 발생.
  • 원인: SMTP 서버 호스트 이름이 올바르게 DNS로 해석되지 않았거나 네트워크 설정 문제.
  • 해결 방법:
    • .env 파일이나 Django 설정 파일에서 EMAIL_HOST 설정이 올바른지 확인.
    • 서버에서 nslookup 명령어를 사용하여 SMTP 서버 호스트 이름이 IP 주소로 해석되는지 확인.
    • 네트워크 방화벽 설정을 점검하고, 필요한 경우 수정하여 SMTP 서버와의 통신이 가능하도록 설정.

2. AWS SES 권한 문제

  • 문제: InvalidClientTokenId 또는 IncompleteSignature 오류 발생.
  • 원인: IAM 계정의 액세스 키가 잘못되었거나 서명(Signature Version 4) 생성 중 문제가 발생.
  • 해결 방법:
    • IAM 계정에서 새 액세스 키를 발급받고 .env 파일에 업데이트.
    • 액세스 키에 특수 문자가 포함되어 있다면 새 액세스 키를 생성하여 문제를 해결.

3. Boto3를 통한 이메일 발송 오류

  • 문제: Boto3를 사용하여 이메일을 전송할 때 SignatureDoesNotMatch 오류 발생.
  • 원인: AWS 서명 생성 시 발생하는 문제로, AWS 액세스 키나 비밀 키가 잘못되었을 수 있음.
  • 해결 방법:
    • 새 액세스 키와 비밀 키를 발급받아 사용.
    • Boto3 클라이언트 설정 시, 올바른 지역 이름(region_name)과 인증 정보를 사용했는지 확인.

4. 샌드박스 모드 문제

  • 문제: Amazon SES 계정이 샌드박스 모드에 있어 모든 이메일이 수신되지 않거나 제한됨.
  • 해결 방법:
    • Amazon SES 콘솔에서 샌드박스 모드를 해제 요청.
    • 필요한 경우, 수신자 이메일을 미리 승인된 주소로 추가.

5. 환경 변수 문제

  • 문제: Django 설정에서 AWS SES 관련 환경 변수를 제대로 읽지 못함.
  • 해결 방법:
    • django-environ을 사용하여 .env 파일을 올바르게 로드하고 있는지 확인.
    • 환경 변수가 Django 설정 파일에서 올바르게 전달되는지 로그를 통해 확인.

6. SMTP와 Boto3 간의 차이

  • 문제: Django의 django.core.mail.backends.smtp.EmailBackend와 Boto3를 통한 이메일 발송 간의 차이로 인해 혼란이 발생.
  • 해결 방법:
    • django-ses를 사용하거나 Boto3를 직접 사용하여 이메일을 전송하도록 설정.
    • Boto3는 AWS SDK이므로, AWS 클라이언트를 직접 구성해 사용할 수 있음. django-ses는 Django에서 Amazon SES와의 통합을 쉽게 하는 백엔드입니다.

7. Nginx와 Django 연동 문제

  • 문제: 정적 파일이 제대로 로드되지 않거나 Nginx와 Django 간의 프록시 문제가 발생.
  • 해결 방법:
    • python manage.py collectstatic 명령어를 사용하여 정적 파일을 한 곳에 모은 후, Nginx가 이 정적 파일을 제공하도록 설정.

8. 다양한 기타 오류 및 해결

  • 이슈: 다양한 오류 메시지 발생 (예: IncompleteSignature, InvalidClientTokenId, SignatureDoesNotMatch 등).
  • 해결 방법:
    • AWS CLI를 통해 직접 테스트하고 설정을 검증.
    • Django 설정에서 환경 변수를 바르게 로드하고 있는지 확인.
    • Boto3 라이브러리에서 AWS 자격 증명을 바르게 전달하는지 확인.
profile
널리 이롭게

0개의 댓글