이메일 보안을 개선하고 안정적인 대량 이메일 전송을 보장하려면 기존 Mail API에서 SendGrid, Mailgun, Mailjet과 같은 SMTP (Simple Mail Transfer Protocol)를 사용하는 표준 서드 파티 이메일 제공업체 서비스로 이전하세요.
이 가이드에서는 Mail API에서 SMTP 기반 이메일 서비스로 아웃바운드 이메일 서비스를 이전하는 프로세스를 설명합니다. 이 안내를 적용하여 SMTP 기반 서드 파티 이메일 제공업체로 이전하거나 다른 지원되는 런타임을 사용할 수 있습니다. 이 가이드에서는 서드 파티 대안을 사용하는 인바운드 메시지를 이전하는 단계를 제공하지 않습니다.
SMTP 표준은 기존 App Engine Mail API에 비해 다음과 같은 이점을 제공합니다.
SMTP 기반 서비스는 이메일이 스팸으로 표시될 가능성을 줄여 이메일 전송을 개선합니다.
SMTP 기반 서비스를 사용하면 이메일 열기, 클릭, 바운스에 관한 자세한 분석 보고서에 액세스할 수 있습니다. 이 보고서는 사용자가 이메일과 상호작용하는 방식에 관한 유용한 정보를 제공합니다.
발신자 평판과 이메일 인증을 완전히 제어할 수 있습니다.
A/B 테스트, 세분화, 템플릿과 같은 고급 기능을 사용할 수 있으며 기존 Mail API에 비해 일일 전송 한도가 증가했습니다.
마이그레이션 프로세스 개요
마이그레이션 프로세스에는 다음 단계가 포함됩니다.
- SMTP 기반 이메일 서비스를 설정하여 SMTP 사용자 인증 정보를 가져옵니다.
- 발신자 신원을 확인하여 도메인 또는 이메일 주소로 인증합니다.
- SMTP 사용자 인증 정보와 전송 메서드를 사용하여 소스 파일을 구성한 후 애플리케이션을 배포합니다.
- 애플리케이션을 테스트하여 이메일 기능을 확인합니다.
SMTP 기반 이메일 서비스 설정
SMTP를 사용하는 표준 서드 파티 이메일 제공업체(예: SendGrid, Mailgun, Mailjet)로 계정을 설정하고 선택한 제공업체에서 다음 정보를 가져옵니다.
SMTP 호스트: 메일 전송에 사용되는 SMTP 서버 주소입니다. 예를 들면
smtp.sendgrid.net또는example.mailjet.com입니다.포트: 연결의 포트 번호입니다. 예를 들어 TLS 암호화의 경우
587입니다.사용자 이름: 계정의 SMTP 로그인 사용자 이름입니다.
비밀번호 또는 API 키: 계정의 비밀번호 또는 SMTP 연결의 비밀번호 역할을 하는 API 키입니다. SendGrid와 같은 일부 제공업체의 경우 사용자 이름은
apikey와 같은 고정 값이며 API 키는 비밀번호로 사용됩니다.
발신자 신원 확인
스팸을 방지하기 위해 모든 이메일 서비스에서는 이메일을 보내는 이메일 주소 또는 도메인의 소유자임을 인증하도록 요구합니다. 이 단계에서는 도메인 호스트의 DNS 관리 페이지에 CNAME 레코드와 같은 특정 DNS 세부정보를 추가해야 하는 경우가 많습니다.
제공업체의 안내에 따라 애플리케이션 구성을 진행하기 전에 발신자 ID를 인증하세요.
도메인 호스트에 DNS 레코드를 추가하려면 다음 단계를 따르세요.
- DNS 제공업체 서비스에 로그인합니다.
- 도메인의 DNS 관리 페이지로 이동합니다.
이메일 서비스 제공업체에서 제공한 대로 정확하게 CNAME 레코드를 추가합니다. 각 레코드에 대해 다음을 실행합니다.
- 이름 또는 호스트 필드에 호스트 세부정보를 입력합니다.
- 포인트 또는 값 필드에 값을 입력합니다.
DNS 변경사항이 활성화되는 데 몇 시간 정도 걸릴 수 있습니다. 인증에 실패하면 잠시 기다린 후 다시 시도하세요.
소스 파일 구성
SMTP 기능을 포함하려면 다음 단계를 따르세요.
다음 명령어를 실행하여 App Engine SDK를 최신 버전으로 업데이트합니다.
# Ensure your virtual environment is active pip install --upgrade appengine-python-standard # Save the new version to your requirements file pip freeze > requirements.txtapp.yaml파일에 다음 코드를 추가하여 SMTP 서비스로 전환합니다.runtime: RUNTIME # a supported python version env_variables: # Enable the SMTP service. APPENGINE_USE_SMTP_MAIL_SERVICE: "true" # --- SMTP Server Configuration --- # The server address from your mail provider APPENGINE_SMTP_HOST: "SMTP_HOST" # The recommended port for TLS connections APPENGINE_SMTP_PORT: "587" # The username for your SMTP login APPENGINE_SMTP_USER: "SMTP_USER" # The API key or password APPENGINE_SMTP_PASSWORD: "SMTP_PASSWORD" # Use TLS for a secure connection APPENGINE_SMTP_USE_TLS: "true" # --- For sending emails to Admins --- # A comma-separated list of admin email addresses. # This is required if you use the send_mail_to_admins() function. APPENGINE_ADMIN_EMAIL_RECIPIENTS: "admin@example.com,another-admin@example.com"다음을 바꿉니다.
- RUNTIME: 지원되는 Python 런타임 버전입니다.
- SMTP_HOST: SMTP 호스트 주소입니다. 예를 들면
smtp.sendgrid.net또는example.mailjet.com입니다. - SMTP_USER: 계정의 SMTP 로그인 사용자 이름입니다. 예를 들면
apiKey입니다. - SMTP_PASSWORD: 서드 파티 이메일 제공업체에서 획득한 비밀번호 또는 API 키 보안을 강화하려면
app.yaml파일에 API 키를 배치하는 대신 Secret Manager를 사용하여 API 키를 저장하는 것이 좋습니다. send_mail_to_admins()함수를 사용하지 않는 경우APPENGINE_ADMIN_EMAIL_RECIPIENTS설정을 생략하세요.
다음 명령어를 실행하여 애플리케이션을 배포합니다.
gcloud app deploy
애플리케이션 테스트
오류 없이 앱을 배포할 수 있으면 마이그레이션이 성공한 것입니다. 메일 서비스가 작동하는지 확인하려면 다음 단계를 따르세요.
- 이메일을 보내는 애플리케이션 부분을 트리거합니다.
- 로그 탐색기를 확인하여 API 호출 또는 SMTP 연결 시도와 관련된 오류가 없는지 확인합니다.
- 서드 파티 이메일 제공업체의 계정 (예: Mailgun, Mailjet, SendGrid)을 사용하고 있다면 해당 서비스의 활동 피드, 로그 또는 전송 대시보드를 확인하세요. 테스트 이메일이 피드에 표시되고 전송 상태가
Processed,Delivered등으로 표시됩니다.