Amazon SESでSPFのDMARC Alignmentチェックを通過するためのEnvelope From設定方法
Envelope FromでSPFのAlignmentを確実にする
2025年1月27日執筆
2025年2月5日更新
著者: 竹洞 陽一郎
Amazon SESでは、DKIM認証についてはCNAMEの設定を行うことで、独自ドメインによる署名が可能になり、DMARCのAlignmentチェックをパスできます。
一方、SPF認証では「カスタムMAILFROM」設定を利用しても、自動的にEnvelope Fromが自社ドメインで設定されるわけではありません。
そのため、SPFのDMARC Alignmentチェックをパスするためには、送信時に認証済みの自社ドメインをEnvelope Fromに明示的に設定する必要があります。
補足: EnvelopeFrom はSMTPのMAIL FROMコマンドで指定される送信者アドレスです。
一方、Return-Pathは配送途中のMTAが付与するヘッダーで、送信時に必ずしも明示的に設定されるものではありません。
実際、多くのケースではEnvelopeFromの値がReturn-Pathにコピーされるため、同一視されがちですが、厳密には異なる概念です。
以下に、Envelope Fromを明示的に設定するためのサンプルコードを示します。
各コード例は、シチュエーションに応じてご利用ください。
AWS SDK for Python (Boto3) を使用したメール送信例
この例では、Amazon SESのsend_emailメソッドを利用し、Envelope Fromを bounce@example.com に設定しています。
import boto3
# SESクライアントの作成(リージョンは適宜変更してください)
ses_client = boto3.client('ses', region_name='us-east-1')
# メール送信リクエスト
response = ses_client.send_email(
Source='sender@example.com',
Destination={
'ToAddresses': ['recipient@example.com']
},
Message={
'Subject': {
'Data': 'Test email'
},
'Body': {
'Text': {
'Data': 'This is a test email.'
}
}
},
# Return Pathを明示的に設定
ReturnPath='bounce@example.com'
)
print(response)
Python の smtplib を使用したメール送信例(SMTP経由)
この例では、smtplibライブラリを用いてSMTPサーバ経由でメールを送信し、メールヘッダーにReturn-Pathを追加しています。
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
# SMTPサーバ設定(Amazon SESのSMTPエンドポイント)
SMTP_SERVER = "email-smtp.us-east-1.amazonaws.com"
SMTP_PORT = 587
SMTP_USER = "your-smtp-username"
SMTP_PASS = "your-smtp-password"
# メールの基本情報
from_email = "sender@example.com"
to_email = "recipient@example.com"
subject = "Test email"
body = "This is a test email."
# MIMETextオブジェクトの作成
msg = MIMEText(body)
msg['From'] = formataddr(('Sender Name', from_email))
msg['To'] = to_email
msg['Subject'] = subject
# Return-Pathヘッダーを追加(注意:SMTPのMAIL FROMとは別に、ヘッダー情報としても設定)
msg.add_header('Return-Path', 'bounce@example.com')
# SMTPサーバに接続してメール送信
with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
server.starttls() # TLS接続を開始
server.login(SMTP_USER, SMTP_PASS)
server.sendmail(from_email, to_email, msg.as_string())
これらの例を参考に、Return-Pathを正しく設定することで、SPFのDMARC Alignmentチェックをパスし、メールの信頼性を向上させることができます。