メール設計ガイドライン | フューチャー株式会社

フューチャー株式会社

本ガイドラインは、世の中のシステム開発プロジェクトのために無償で提供する。
ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社(以下、フューチャー)は一切の責務を負わないものとする。
また、掲載している情報は予告なく変更する場合があるため、あらかじめご了承いただきたい。

免責事項: 有志で作成したドキュメントである

  • フューチャーには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された開発プロセスや高度な開発支援環境が存在する。本ガイドラインはフューチャーの全ての部署/プロジェクトで適用されているわけではなく、有志が観点を持ち寄って新たに整理したものである
  • 相容れない部分があればその領域を書き換えて利用することを想定している
    • プロジェクト固有の背景や要件への配慮は、ガイドライン利用者が最終的に判断すること
  • 本ガイドラインに必ず従うことは求めておらず、設計案の提示と、それらの評価観点を利用者に提供することを主目的としている

はじめに

電子メールは、SMTP(Simple Mail Transfer Protocol)プロトコルが1980年代初頭に標準化されて以来、半世紀近くにわたり利用されている。多くのサービスで 「認証」 「販売促進」 「トランザクションの証明」 などにメールが用いられており、ユーザー体験にも直結する。

しかし、その長い歴史ゆえに、古典的な技術知識だけでは対応しきれない到達性の低下や遅延などの課題を引き起こしやすい。これはクラウドプロバイダーが提供するEメール送信サービスを用いても起こりえるため、モダンな環境下でも無視はできない。

そのため、SMTPプロトコルの理解に加えて、クラウドベースのメール配信サービスの特性を理解し、要件に応じて設計する能力が求められる。特に大規模なシステムでは信頼性・費用・保守運用制などの非機能要件も求められる。本ガイドラインは、メール送信で考慮すべき設計事項と推奨案をまとめる。

適用範囲

  • コンシューマ(一般ユーザー)向けのメール送信を対象とする
    • ただし、同一用途で使われるLINEについては本ドキュメントでは触れない
  • 電気通信事業法でいう「電気通信事業」に該当しない通信である、取引関係に伴う事務連絡や企業からユーザーへの広告宣伝を目的する
  • システムからの自動送信メールを対象とする。手動送信でのメルマガ送信や営業メールは対象外とする
  • 企業のシステム管理者向けのメール送信(例えば、障害通知など)については、参考にできる部分も多いと思われるが、強く意識していない
  • ServiceNowやZendeskといったメールを含む問い合わせ管理のSaaSサービスの運用設計やサービス選定なども対象外とする
  • 主要なクラウドサービス(AWS SES, Microsoft Azure Communication Services, Google Cloud, SendGridなど)を用いるとし、スクラッチやOSSなどでのSMTPサーバの構築や運用については、触れないとする

用語

  • トランザクションメール: ログイン通知や注文完了通知といったユーザーのアクションや、サービスの重要な変更をきっかけに送信される企業にとって重要な通知。ユーザーとの信頼関係を構築し、アカウントのセキュリティを保つ上で重要である
  • マーケティングメール: メールマガジンなどの広告・宣伝に用いるメール。販売促進や顧客との関係構築に重要なツールであるが、一歩間違えると迷惑メールとして認識され、逆にブランドイメージを下げてしまう
  • キャリアメール: 国内携帯通信キャリア(docomo, au, Softbank, 楽天)を指す
  • ESP: メール配信サービス(Email Service Provider)のこと。SendGridやAmazon SESなどが存在する

ドメイン認証

メールアドレスは、@前後でローカルパートとドメインに分けられ、例えばlocal-part@example.com のようなメールアドレスの場合、 local-partがローカルパートで、example.comがドメインである。システムから配信されるメールの場合、多くの受信者はローカルパートではなく、ドメイン部分を確認する事でメールの送信元と、その妥当性を確認する。

しかし、メールの仕様として送信者はドメイン部分を含め、受信者に通知するメールアドレスを任意に設定できるため、管理していないドメインからのメールであるかのように振る舞うこと、すなわちドメインのなりすましが可能である。ドメインのなりすましは、多くの場合悪意をもって行われる(フィッシング詐欺等)ため、メールの信頼性を高めるために、ドメイン認証(SPF、DKIM、DMARC)が求められる。

SPF(Sender Policy Framework)

SPF(エスピーエフ)は、RFC 7208により定められた仕様で、ドメイン所有者がそのドメインを用いてメールを送信できる送信者(Sender)を限定する(Policy)ための仕組み(Framework)である。

具体的には、DNSに送信者として許可するホストのIPアドレスをSPFレコードとして記録しておく。受信者はメールに記載されているドメインを用いてDNSにSPFレコードを問い合わせ、送信元IPアドレスと照合することで、受信したメールがSPFに準拠したものであるかを判定できる。

SPFの導入にあたっては、以下のようなレコードをDNSに設定するのみで、メールサーバ側で必要な設定などは特に存在しない。

SPFレコードは複数の要素(ディレクティブと修飾子)から構成され、さらにディレクティブは限定子と機構と呼ばれるものから構成される。それぞれ、メールサーバの構成に応じて適切な値を設定する必要がある。

種別 名前 意味
限定子 + (pass) 機構と一致する送信元は認証に成功する。限定子を明記しない場合、デフォルト値として設定される。
– (fail) 機構と一致する送信元は認証に失敗する。
~ (softfail) 機構と一致する送信元は認証に失敗するが、受信拒否を強く要求はしない。
? (neutral) 機構と一致する送信元の認証結果を明示しない。
機構 all 常に一致する。
include 後続するドメインのSPFレコードを用いて認証する。
a 送信元IPアドレスが、後続するドメインのAレコード、あるいはAAAAレコードに含まれる場合、一致する。
mx 送信元IPアドレスが、後続するドメインのMXレコードが指すホストのAレコード、あるいはAAAAレコードに含まれる場合、一致する。
ptr (利用非推奨) 送信元IPアドレスから逆引きしたホストの、Aレコード、あるいはAAAAレコードが送信元IPアドレスを含む場合、一致する。
ip4/ip6 送信元IPアドレスが、指定されたIPアドレス(CIDR表記による範囲指定可能)に含まれる場合、一致する。
exists 後続するドメインに対する正引きが成功した場合、一致する。
修飾子 redirect 後続するドメインのSPFレコードを用いて認証する。指定されたドメインのSPFレコードでの認証結果が失敗であった場合、include機構は後続する機構の評価を継続するが、redirect修飾子は以降の記述を評価しない。
exp 認証が失敗した場合に、後続するドメインのTXTレコードを認証失敗の理由として扱う。

設定値の推奨は以下の通り。

  • ESPから設定値が提供された場合、その値を設定する
    • サービス提供者がそのサービスでメール送信に利用するIPアドレスを正確に把握・管理しており、その情報を集約したSPFレコードを提供しているため

DKIM(DomainKeys Identified Mail)

DKIM(ディーキム)は、RFC 6376により定められた仕様で、ドメインに紐づけられた鍵(DomainKeys)を用いて、メール(Mail)の内容と送信者が正当であると証明する(Identified)。公開鍵暗号を用いた認証仕様で、まずDNSに公開鍵を登録しておく。その上で送信者はメール送信時にメールの内容から電子署名を作成し、メールヘッダに含める。受信者はDNSから公開鍵を取得し、電子署名を検証することで、内容と送信者の正当性を確認できる(検証に失敗した場合、なりすまし、あるいは受信経路での内容の改ざんが考えられる)。

DKIMを導入する場合、まずキーペアを作成し、以下のようなレコードを設定することでDNSに登録する。その上で、メール送信時に電子署名を作成、ヘッダに含めるよう、メールサーバ上で設定する。

サブドメインのselectorは、複数のキーペアを署名に用いる場合の識別子、セレクタとして記載する。値自体は任意であるが、1組のキーペアしか用いない場合も省略できないため、必ず指定する。

DKIMレコードは複数のタグと値の組み合わせで構成される。

タグ 意味 必須/任意
v DKIMバージョン(2025年7月現在”DKIM1”のみ有効) 任意(推奨) 省略時はDKIM1となる。
h 利用できるハッシュ方式(2025年7月現在sha1sha256のみ有効) 任意(推奨) 省略時はすべてのハッシュ方式を許容するが、sha1が非推奨であるため、sha256の明示的な指定が推奨される。
k 署名に用いられる鍵の型式(2025年7月現在rsaのみ有効) 任意(推奨)省略時はrsaとなる。
n 管理者用のメモ領域 任意
p 公開鍵(Base64でのエンコードが必要) 必須
s DKIMレコードに登録されている公開鍵を利用できるサービス(2025年7月現在email*のみ有効) 任意 省略時は*となる。
t DKIM認証時の挙動を指定するフラグ(2025年7月現在ysのみ有効)
y: テストモードであり、署名の検証に失敗した場合も、未署名のメールと同等の扱いを要求する。
s: 送信元メールアドレスのドメインと、署名を行ったドメインが一致しない(サブドメインが用いられている)場合に認証を失敗させる。
なお、ysはコロン”:”で区切ることで両方の指定が可能。
任意 省略時はフラグ未指定となる。

※RFC 4871時点ではgタグも定義されていたが、現在は非推奨となっている。

設定値の推奨は以下の通り。

  • ESPを利用している場合、サービスからセレクタや公開鍵などの設定値が提示された場合は、その設定を必ず行う

SPF vs DKIM

ここまでを整理すると、SPFは送信元の正当性担保、DKIMは送信元と内容の正当性担保している。そうすると、DKIMにさえ準拠していれば、SPFは不要なように思えるが、一般にSPFとDKIMは両方を設定するほうが良いとされる。それは、SPFとDKIMでは検証対象とするドメインの参照元が異なるためである。SPFはエンベロープFROMのドメインを検証する。エンベロープFROMとは、メールサーバ間のSMTP通信でMAIL FROMコマンドとして指定される送信元アドレスであり、通常は受信者に表示されず、エラーメールの返送先などに利用される。一方、DKIMはDKIM-Signatureヘッダd=タグに記載されたドメインを検証する。このドメインは、通常、受信者がメールクライアントで「差出人」として目にするヘッダFROMと一致することが期待される。このように、それぞれがメールの異なる側面を保護するため、両方を設定することが推奨される。また、後述するDMARCはSPFおよびDKIMを前提とした仕組みであるため、DMARCを最大限活用するためにはSPF/DKIMの両方に準拠する必要がある。

DMARC(Domain-based Message Authentication, Reporting, and Conformance)

DMARC(ディーマーク)は、RFC 7489により定められた仕様で、ドメイン認証(Domain-based Message Authentication)の結果を用いて、送信者への認証結果の報告(Reporting)と、受信者へのメールの取り扱いへの準拠(Conformance)を要求する。DMARCはSPFおよびDKIMを前提とした仕組みであり、「SPFおよびSPFアライメント」あるいは「DKIMおよびDKIMアライメント」のいずれかを通過しなかったメールの取り扱い(受信拒否・隔離・受信)をメール送信者が指定できる。

SPF/DKIMアライメントとは、各認証に用いたドメインが、ヘッダFROM(主に受信者に表示されるメールアドレス)のドメインと一致しているかの検証を指す。SPFやDKIMは各ドメインが送信者によって管理されていることを保証する仕組みではあるが、ヘッダFROMとは異なるドメインで認証を行っている場合、SPF/DKIMに通過していたとしても、メール送信者の正当性(ヘッダFROMのドメイン管理者であるか)は全く担保されない。そのような状況を検知するため、ヘッダFROMのドメインと認証に用いられたドメインが一致していることの検証がSPF/DKIMアライメントである。SPF/DKIMアライメントを総称してDMARCアライメントと呼ぶ。

SPF/DKIM同様、設定はDNSに以下のようなレコードを登録することで行う。

タグ 意味 必須/任意
adkim DKIMアライメントの判定モード
r: ヘッダFROMドメインがDKIM認証ドメインのサブドメインであっても許容する(relaxed mode)
s: ヘッダFROMドメインとDKIM認証ドメインが完全一致していない場合許容しない(strict mode)
任意 省略時はrとなる。
aspf SPFアライメントの判定モード
r: ヘッダFROMドメインがSPF認証ドメインのサブドメインであっても許容する(relaxed mode)
s: ヘッダFROMドメインとSPF認証ドメインが完全一致していない場合許容しない(strict mode)
任意 省略時はrとなる。
fo フォレンジックレポート(失敗レポート)作成基準オプション
0: すべての認証が失敗した場合にレポートを作成する。
1: いずれかの認証が失敗した場合にレポートを作成する。
d: DKIM認証が失敗した場合にレポートを作成する(アライメントは考慮しない)
s: SPF認証が失敗した場合にレポートを作成する(アライメントは考慮しない)
任意 省略時は0となる。
p 認証が失敗した場合に要求するメールの取り扱いポリシー
none: 何も要求しない。
quarantine: 不審なメールとして取り扱うよう要求する。具体的な処理は受信者に依存する。
reject: メールの受信を拒否する。
必須
pct DMARCポリシーが適用される割合(0-100 任意 省略時は100となる。
rf フォレンジックレポートのフォーマット (2025年7月現在afrfのみ有効) 任意 省略時はafrfとなる。
ri アグリゲートレポート(集約レポート)作成間隔の要求値。
日次以上の頻度がベストエフォートされる
任意 省略時は86400となる。
rua アグリゲートレポートの送信先。 mailto:dmarc-report@example.comのように指定する。
DMARCレコードを登録したドメイン(example.com)と異なるドメインのメールアドレス宛に送信する場合は、
送信先ドメイン(example.org)のDNSに以下の様なレコードを登録する必要がある。
example.com._report.dmarc.example.org IN TXT “v=DMARC1”
任意 省略時は未指定となる。
ruf フォレンジックレポートの送信先 記法はruaタグと共通。 任意 省略時は未指定となる。
sp サブドメインから送信された認証失敗メールの取り扱いポリシー 記法はpタグと共通。 未指定の場合、pタグの設定値が適用される。 任意 省略時は未指定となる。
v DMARCバージョン (2025年7月現在DMARC1のみ有効) 必須

SPFおよびDKIMを前提とした認証の仕組みである以上、必ずSPF/DKIMの設定が完了してからDMARCを設定する。設定伝播には時間がかかることがあるため、SPF/DKIM設定後、48時間以上経過してからDMARCを設定することが、Googleにより推奨されている。

推奨は以下の通り。

  • まず、p=noneとした上で、ruaに適切なレポート送信先を設定、日次でレポートを確認、SPF/DKIMの設定が正常に行えていることを確認する
    • rufは設定しても良いが、GmailMicrosoft 365などの主要サービスがフォレンジックレポートの送信に対応していないため、あまり参考になる情報は得られない可能性が高い
  • 次に、p=quarantine、あるいはp=rejectに設定したうえで、pct10などの小さな値を設定し、引き続きレポートを確認する。加えて受信者(システムのユーザなど)から、「メールが届かなくなった」といった問い合わせが発生するようになっていないか注視する
    • p=quarantineは、認証失敗メールを迷惑メールフォルダなどに隔離するよう受信者に要求する。正当なメールが誤って認証に失敗した場合でも、受信者が救出できる可能性がある
    • p=rejectとすると、認証に失敗したメールが配信されなくなるため、既にドメインのなりすましが行われているなど、認証失敗メールの配信を確実に防ぎたいなどの場合はrejectを設定する
  • 徐々にpctの値を大きくしていき、最終的に100(あるいは指定なし)まで引き上げる
    • pctの初期値・増加量は、設定の影響範囲と設定値変更の作業コストを鑑みて決定する

アグリゲートレポートの形式について

アグリゲートレポートは以下のような形式で配信される(Googleの例示を引用・一部改変)。

主要なタグの意味は以下の通り。

要素 説明
レポート作成者、すなわち受信サーバが作成した、レポート自体に関する情報
受信サーバが確認したDMARCポリシー。DMARCレコードの設定値に誤りがある場合、この項目が想定外の値となっている可能性があるため、正常に配信が行われない場合は要確認
各ドメイン認証の結果。送信元サーバのIPアドレスの数だけ含まれる
送信元サーバのIPアドレス
DMARCポリシーの評価結果
   ┗ 評価の結果、メールをどのように処理したか
   ┗ , DKIM, SPFのアライメントチェックの結果(各ドメイン認証そのものの結果ではない)
メールの送信者・宛先に関する情報
   ┗ ヘッダFROMドメイン
   ┗ エンベロープFROMドメイン
各ドメイン認証の結果
   ┗ , DKIM, SPFのドメイン認証の結果

アグリゲートレポートの厳密な仕様はRFC 7489のAppendix Cに定義されているが、必ずしも全ての受信サーバが準拠しているとは限らないため、適宜読み替えを行うこと(上記Googleの例においても、minOccurs="1"と定義されている項目が出現していない等、準拠していない項目が存在する)。

ドッペルゲンガードメイン

example.com に対する exampl.comexample.coなど、正規のドメインに酷似していたり、タイプミス等で誤入力しやすいドメインをドッペルゲンガードメインと呼ぶ。攻撃者が企業のドメインのドッペルゲンガードメインを意図的に取得し、フィッシングメール等に用いることがある。

攻撃者は実際にドッペルゲンガードメインの管理者であるため、ここまで記載したドメイン認証は全て通過するフィッシングメールを送信できてしまう。受信者はドメインをよく確認する以外に、ドッペルゲンガードメインそのものに対する防御策を取り得ないため、詐欺の被害に遭う可能性がある。

新規でドメインを取得し、サービスに利用する場合は、悪用される恐れがあるドッペルゲンガードメインの所有者確認と、可能であれば攻撃者に取得される前に取得することを推奨する。

独自ドメイン利用時の注意

Amazon SESなどのメール送信サービスを利用する場合、SPF/DKIMがメールサービス側で設定されることにより、利用者側は特別な設定を行わずとも、認証を通過するメールが配送されることがある。ただし、それらの認証は、メール送信サービス側のドメインに対して行われるため、独自ドメインを用いてメールを送信する場合、DMARCアライメントが失敗してしまう。この場合、Gmailなど一部のメールクライアントでは「amazonses.com 経由」のような表示がなされたり、場合によっては迷惑メールとして扱われる・受信拒否されてしまう。

推奨は以下の通り。

  • 独自ドメイン利用時は、メール送信サービスが提供するドメイン認証設定を必ず利用する。ほとんどのメール送信サービスでは、サービス側が提示するレコードをDNSに登録することで、独自ドメインを用いてドメイン認証が行える(=DMARCアライメントが成功する)仕組みが提供されている

メールヘッダとの対応

上記ドメイン認証の設定が完了している状態で配信されたメールには、以下のようなヘッダが記載されている(関係がある項目のみを抜粋)

Authentication-Resultsヘッダからドメイン認証結果を確認できる。詳細な記法は受信サーバに依存して異なるが、基本的にはdkim=passのように、認証の名称と結果が合わせて記載されている。結果がpassである場合のみ、正常に認証が成功しており、それ以外の場合は失敗しているか、そもそも認証が行われていない。上記の例では、すべてpassとなっているため、すべてのドメイン認証が成功しており、なりすましの可能性は低いと判断できる。

dmarc=pass: DMARC認証が成功したことを示す。これは、header.from のドメイン (example.com) に対し、SPFまたはDKIMの認証ドメインがアライメント(一致)チェックをパスしたことを意味する。この例では、DKIMの認証ドメイン (example.com) が header.from のドメインと一致しているため、DKIMアライメントに成功している。

SPFに関連するヘッダはReturn-PathReceived-SPFの2つであり、これら2項目を見ると、どのようにSPF認証が行われたのかを見ることができる。Return-Pathには、メールが正常に配信できなかった場合にエラーが返送される宛先である、エンベロープFROMと呼ばれるメールアドレスが記載されている。前述の通り、SPFではこのエンベロープFROMのドメインを用いて認証が行われる(なお、このヘッダは受信サーバにより自動的に記録される)。Received-SPFには、SPF認証の結果と、認証に用いたエンベロープFROMのメールアドレス、送信元のIPアドレスが記録されている。

DKIMに関連するヘッダは、DKIM-Signatureである。複数のタグにより構成されており、送信サーバが設定した値が記録されている。dタグにDKIM認証に用いるドメイン、sタグにセレクタが記録されており、hタグには署名対象のフィールドが記録されている。

ドメイン認証の失敗によるメールの未達が課題となっている場合、上記ヘッダ項目を確認し、想定とは異なる設定となっていないか確認すると良い。

Gmail送信者ガイドライン

2024年2月、Gmailがメール送信者向けのガイドラインを公開した。ガイドラインに沿わない場合、Gmailによる受信拒否や、迷惑メールフォルダへの振り分けが発生する可能性があるため、原則として全送信者が準拠するべきである。

No. 要件 全ての送信者の要件 1日あたり5,000通以上の送信が発生する場合の要件
1 SPF/DKIMによる認証を通過させる いずれかの認証の通過が必要 両方の認証の通過が必要
2 正引きおよび逆引きDNSレコードを登録する 必要 必要
3 メール送信にTLS接続を使用する 必要 必要
4 迷惑メール率を最大でも0.30%未満、可能な限り0.10%未満に維持する 必要 必要
5 Internet Message Format 標準(RFC 5322)に準拠したメール形式とする 必要 必要
6 ヘッダFromのGmailへのなりすましを行わない 必要 必要
7 (メール転送サーバやメーリングリストなど、定期的な転送がある場合)ARCヘッダ・List-idヘッダを設定する 必要 必要
8 DMARCによる認証を設定する 不要 必要
9 DMARCアライメントに合格する 不要 必要
10 マーケティング目的・配信登録されたメールについては、ワンクリックで配信停止が行える機能をメール内に搭載する 不要 必要

推奨は以下の通り。

  • 1日あたりのGmail宛のメール送信数が5,000件以上か否かにより、準拠するべき要件は異なるが、1日の送信件数に依らず、すべての要件に準拠する
    • 将来的な送信数の増加に備えるため・Gmail以外への配信率向上・迷惑メール報告率低下に繋がる要件であるため
  • No.1、2、3、5は、メール送信サービスを利用する限り、ほとんどの場合サービス側で対応がなされているため、意識する必要はない
  • No.4
    • 受信者による迷惑メール報告率が、0.10%未満である状態を維持し、一時的なスパイク時にも0.30%を超えないようにする
    • 手動での迷惑メール報告を防ぐ、直接的なアクションを送信者側で取ることは難しいため、迷惑メールと疑われるような件名・文面を避ける
    • Googleが提供するモニタリングツールであるPostmaster Toolsを活用し、迷惑メール率を継続的に監視しながらメールの内容を調整する。Gmailによる自動的な迷惑メール判定も迷惑メール率に影響するため、前述したドメイン認証の実施、後述するレピュテーションの維持を実施する
  • No.6
    • Gmailガイドラインでは、特にGmail(gmail.com)へのなりすましを避ける(GmailのDMARCポリシーがquarantineであるため、DMARCアライメントに失敗した場合、正常に配信されない可能性が高い)よう記述されているが、Gmailに限らず、あらゆるドメインへのなりすましを行わないこと
  • No.7
    • メールそのものの送信者ではなく、メール転送サーバやメーリングリストを管理している場合、送信者のドメインに対するドメイン認証の結果は転送時に失われてしまう。転送後も、送信者のドメイン認証結果を確認できるようにするため、各ドメイン認証の結果から作成した値をARCヘッダに設定する
    • メーリングリストを管理している場合は、メーリングリストを経由した配信であることが明らかになるよう、List-idヘッダを設定する
  • No.8,9
    • 前述のDMARC設定を行い、DMARCアライメントにも合格するよう、送信ドメインを設定する。2025年7月現在、ポリシーレベルの指定は無いため、十分な検証が行えていない場合はp=noneでも問題ないが、前述の通り、様子を見ながらquarantine/rejectに引き上げることを推奨する
  • No.10
    • マーケティングメールを不要であると判断した時点で、即座に配信停止が行える経路をメール内に用意する
    • 本文内に配信停止方法を案内する事に加え、List-Unsubscribeヘッダを付与し、ワンクリックで配信停止できる状況とすることを推奨する。2025年7月現在、本要件を満たしていない場合であっても、自動的に受信拒否や迷惑メール判定が行われるわけではないと案内されている。が、トランザクションメールであっても受信者が不要と判断したときに、配信停止が容易でなければ「迷惑メール報告」ボタンを押す可能性が高くなる。これが繰り返されれば、レピュテーションが損なわれ、全てのメール配信に影響が及ぶため

List-Unsubscribeヘッダ

(利用可否や詳細な挙動は受信者のクライアントアプリケーションに依存するが、少なくともGmailにおいては)List-Unsubscribeヘッダを適切に設定することで、メール上部にワンクリックで配信停止が行える要素が表示される。

(SP版Gmailでの表示例)

List-Unsubscribeヘッダには、配信停止リクエストをHTTPリクエストで受け取るためのURLか、メールで受け取るためのメールアドレスを記述する。クライアントアプリケーションに依存するが、リクエストボディやメール本文には、配信停止リクエストを行った受信者の情報は含まれないため、URLや宛先メールアドレスにパラメータとして受信者(あるいは配信停止の起因となったメール)の情報を含める必要がある。

また、受信者による配信停止リクエストから2日以内に、配信停止処理を完了させることが推奨されている。WEBCASなどのメール配信用サービスを利用している場合、List-Unsubscribeヘッダの付与と、配信停止の仕組みが機能として用意されているケースがある。利用するサービスが対応している場合、当該機能の利用を推奨する(参考:List-Unsubscribeヘッダ付与機能 | メール配信システムWEBCAS e-mail

レピュテーション

レピュテーションとは、メール送信者が受信側(ISP: インターネットサービスプロバイダやメールサーバ)から与えられる信頼性の評価のことであり、レピュテーションを高く維持することでユーザーにメールを確実に届けることができる。

主に以下の2種類が存在する。

  • IPレピュテーション: メール送信に使用されるIP アドレスの評価
  • ドメインレピュテーション: 送信者が利用するドメイン名の評価

レピュテーションは、受信側が迷惑メール(スパム)と正当なメールを区別するためにも用いられる。レピュテーションが低い場合、以下の影響がある。

  • 迷惑メール判定: 受信側で自動的に迷惑メールフォルダへ振り分けられる確率が高くなる
  • 到達率低下: ISPにより一部またはすべてのメールが受信拒否され、受信者にメールが一切届かなくなる

レピュテーションを高く維持するには、受信者にとって価値のあるメールを継続的に送り、信頼される送信者であり続ける必要がある。

  • 安定した送信: 適切な頻度で安定した量のメールを送信(例: 週に1〜2回の定期配信など)
  • 質の高いコンテンツ: 受信者の関心に沿ったコンテンツを提供し、高いエンゲージメント(開封やクリックなど)を維持
  • リストの健全性: バウンス率や迷惑メール報告を低く抑えるため、常に送信リストをクリーンに保つ

しかし、新しく利用を開始するIPアドレスやドメインには、これまでの送信履歴がないため、ゼロから信頼を築くための特別な対応が必要となる。その対策がウォームアップである。

レピュテーション低下により発生するリスク

レピュテーションが低いことで、社会問題となった事例もある。

また、SES(Simple Email Service)などのサービスを利用している場合は利用停止処分を受ける可能性もある。

ウォームアップ

ウォームアップとは、新しくメール送信を開始するIP アドレスやドメインのレピュテーションを段階的に構築するプロセスのことである。

  • IP ウォームアップ: 新しいIP アドレスでメール送信を始める際に、徐々に送信量を増やしてISP からの信頼を獲得する
  • ドメインウォームアップ: 新しいドメインで送信を開始する場合に、そのドメインの信頼性を高めるプロセス

ISP は特にIP アドレス単位での信頼性を重視するため、新規のメール送信環境ではIPウォームアップが重要になる。対応の有無は、専用IPについてはメール送信履歴の有無や、共有IPによって異なる。

推奨は以下の通り。

  • トランザクションメールとマーケティングメールのIPは分離し、それぞれ専用IPを利用する
    • マーケティングメールのレピューテーション低下で、トランザクションメールの到達性に影響を受けず、確実な配信が可能であるため
  • 小〜中規模配信(月間10万通未満)の場合は、共有IPを利用する
    • ウォームアップ不要で即座に配信開始可能、コスト効率が良いため
  • 大規模配信(月間10万通以上)の場合、専用IPを推奨する
    • 完全な制御が可能かつ、長期的な信頼性が高いため
    • 注意として、ウォームアップ期間(1〜2ヶ月)が必要
  • ウォームアップ実施の有無は下表に従う
種類 状況 ウォームアップの必要性 理由
専用IP 新規割り当て ✅️ 送信履歴がゼロのため、信頼性がない状態
過去に使用歴あり ⚠️場合によって実施 過去のレピュテーションに問題があるか確認が必要
共有IP ESP提供の既存IP ❌️ 既に他の送信者によって送信実績があり、ISP に信頼されているため

専用IPと共有IPの選択指針

共有IPは手軽だが、他の送信者の行動(大量のスパム送信など)によってレピュテーションが低下するリスクを伴う。大量配信や、より高い到達率が求められる場合は、自社で完全にコントロールできる専用IPの利用が望ましい。

IPプール

メール配信する上で、複数のIPアドレスを使い分ける設計も有効である。IPを分散して用いると以下の効果がある。

  • リスクの分散: 1つのIPがブロックされても、他のIPで送信を継続可能
  • ウォームアップの効率化: 複数のIPを段階的にウォームアップすることで、全体の送信量を早期に拡大
  • ISP制限の回避: 各ISPが設定する1IP当たりの送信制限を分散により回避

IPをどのように使い分けるかはいくつかの戦略がある。

  • 送信量で分散: 1つのIPに負荷を集中させず、複数のIPで送信量を分散することで、ISPからの信頼を維持
  • 用途別: トランザクションメールとマーケティングメールで異なるIPを使用し、リスクを軽減
  • ISP別: 特定のISPに特化したIPを用意し、そのISPの特性に合わせて送信する

推奨は以下の通り。

  • 以下の条件のいずれかに一致する場合、複数IPを利用する
    • 月間送信量が100万通を超える場合
    • トランザクションメールとマーケティングメールの両方を大量送信する場合
    • 複数のブランドやサービスからメール送信する場合
  • 以下の条件に一致する場合は、単一IPを用いる
    • 月間送信量が50万通未満の場合
    • 送信メールの種類が限定的な場合
    • リソースやコストを抑えたい場合

IPプール管理の注意点

複数IPを使用する場合は、各IPのレピュテーションを個別に管理し、問題のあるIPが他のIPに悪影響を与えないよう注意が必要である。

IPウォームアップ手順

  1. 事前準備

    • 送信リストの作成と精査: できる限り高エンゲージメントの受信者(開封・クリック率の高いユーザ)に限定
    • 送信スケジュールを計画する
  2. 送信スケジュールの計画と実行

    • ISP からのフィードバックを注視しつつ、徐々に送信量を増やしていくことが重要です。急激な増加はスパム行為とみなされるリスクを高める
    • ウォームアップスケジュールの例(下表)を上げる。ISPの反応(ブロックや遅延の有無)を見ながら、状況に応じて柔軟に調整する。一般的には、前日の送信量の2倍を超えない範囲で、段階的に増やしていくのが安全とされている。実際の環境や送信内容、ISPの反応によって大幅に調整が必要な場合がある。重要なのは数値を厳密に守ることではなく、ISPからのフィードバックを注視しながら柔軟に対応することである。
    ウォームアップ(日) 1日当たりの総送信数
    1 50
    2 100
    3 200
    30 1,000,000
  3. モニタリング

    • ウォームアップ期間中は、以下の指標を毎日モニタリングする。問題が検知された場合は、すぐさま送信を一時停止し、原因を調査・解決する必要がある。
      • ハードバウンス率: 1%未満、理想は0.5%未満に抑える(無効なアドレスは速やかにリストから削除)
      • 全体のバウンス率(ハード+ソフト): 5%を超えないように注意する
      • スパム(迷惑メール)報告率: 0.1%未満を維持する
      • ISPのフィードバックツール(Google:Postmaster Tools、 Microsoft (Outlook):SNDS(Smart Network Data Services))
    • 上記の数値は一般的な目安である。業界や送信内容によって適切な閾値は異なる場合がある。重要なのは、自社の過去のデータと比較して異常な変化がないかを継続的に監視することである。

ウォームアップ中の問題発生と対策

モニタリング指標が悪化した場合、すぐさま送信を一時停止し、原因の調査と解決にあたる。よくある課題に、ISPによるスロットリングがある。ISPは、未知のIPから短時間に大量のメールが送られると、一時的に受信を遅延させたり拒否したりする。これは、スロットリングと呼ばれる。ウォームアップ中にこの現象が見られた場合は、送信ペースを落とす、あるいはその日の送信を停止するなどを調整する。

また、以下のような確認を行う。

  • ブラックリストの確認: Spamhaus、Barracudaなど主要なブラックリストに自社のIPやドメインが登録されていないか確認する。登録されていた場合は、各サービスの解除申請手順に従う
  • バウンスログの分析: バウンスメールに含まれるエラーコードとメッセージを確認し、拒否理由を特定する
  • コンテンツの確認: 件名や本文にスパムと判定されやすい単語が含まれていないか

ドメインウォームアップ

基本的に、SPF/DKIM/DMARC といった送信ドメイン認証が正しく設定されていれば、ドメインのレピュテーションはIP ウォームアップを進める中で並行して構築されていく。そのため、ドメインのために特別なウォームアップを実施する必要はほとんどない。

サブドメイン戦略

レピュテーション管理として、送信するメールの種類に応じてサブドメインを使い分ける方法がある。これにより、例えばメルマガのスパム報告率が上がっても、認証や注文確認メールの到達性に影響が及ぶリスクを分離できる。

推奨は以下の通り。

  • 次のいずれかの条件に一致する場合は、サブドメイン分離する
    • 月間送信量が50万通を超える場合
    • トランザクションメールとマーケティングメールの両方を送信する場合
    • 複数のブランドやサービスを運営している場合
  • 次のいずれかの条件に一致する場合は、サブドメイン分離するか “検討” する
    • マーケティングメールの配信頻度が高い場合(週3回以上)
    • 異なる対象オーディエンスにメール送信する場合
  • サブドメイン分離は、メール配信開始時点で将来の送信量を見越して設計すること
    • 後からサブドメインを追加・分離する場合、新しいサブドメインは送信履歴がゼロの状態からとなるため、ウォームアップから必要になるため

サブドメインの構成例

トランザクションメールとマーケティングメールを使い分ける場合の例。

  • mail.example.com: トランザクションメール用
  • news.example.com: マーケティングメール用

複数サービス運営時の例。

  • mail.example.com メインサービスのトランザクションメール
  • news.example.com メインサービスのマーケティングメール
  • alert.example.com システム通知用
  • service2.example.com サブサービス用

健全な配信リストを維持するためのリストクレンジング

メールの到達力を高め、送信者としての信頼性を維持するために配信リスト全体の品質を向上するためのリストクレンジングが重要となってくる。

リストクレンジングの目的と重要性

古く整理されていないリストにメールを送り続けると、以下のようなリスクが発生する。

  • レピュテーションの悪化: 無効なアドレスへの配信を続けると、ISPから迷惑メール送信者と見なされ、評価が低下する。その結果、本来届くはずのメールまでブロックされたり、迷惑メール判定を受けたりするようになる
  • コスト浪費: 無駄な配信数分のコストが発生する
  • 正確な効果測定の阻害: 反応しないユーザが含まれることで、指標が不正確になる可能性がある

リストクレンジングは、これらのリスクを回避するための重要な対応である。

クレンジングの対象となるリスト

リストクレンジングでは、以下の宛先を整理することを推奨とする。

対象 特徴 対策例
ハードバウンス 宛先が存在しない、恒久的なエラー ✅️配信停止リストへ即時登録
ソフトバウンス 一般的なエラー(受信ボックス満杯など) ⚠️監視し、継続する場合は配信停止リストへ登録
長期間反応のないユーザ 半年以上、一度もメール内のリンクを一度もクリックしていないユーザ ⚠️対策はせず、購読者の意思に委ねる

ハード・ソフトバウンスの対応について

以下のフローや対応については、あくまでサンプルのため、業務に合わせて対応すること。

メール配信後、以下を対応する。

  • ハードバウンスの対応
    • 条件: 配信結果でハードバウンスとなったアドレス
    • 対応: 即時、全件を「配信停止リスト」に登録する
  • ソフトバウンスの対応
    • 条件: ソフトバウンスの発生が累計3回以上となったアドレス
    • 対応: 累計”3回”に達した時点で、対象アドレスを「配信停止リスト」に登録

ソフトバウンス回数の記録

ソフトバウンスの回数の記録は、自動で行ってくれるかつ条件で配信停止ステータスにするツールもあるが、備わっていないツールに関しては、スプレッドシートなどで管理するのが良い。

大手ISPごとの特徴

以下は各ISPの大まかな特徴を紹介する。なお、ISPのアルゴリズムや判定基準は頻繁に変更されるため、大まかなこういった傾向があるというような、参考情報として利用する。

ISP 特徴 対策例
Gmail ・機械学習ベースのフィルタリング
・ユーザー行動(開封、削除、スパム報告など)を重視
・送信者レピュテーションを厳格に評価
・Google Postmaster Toolsでレピュテーションを監視
・高いエンゲージメント率を維持
・送信量の急激な変化を避ける
Microsoft Outlook ・IPレピュテーションを重視
・SNDSでフィードバックを提供 ・送信者認証を厳格にチェック
・SNDSに登録しフィードバックを取得
・送信ドメイン認証を確実に設定
・段階的に送信量を増加させる
Yahoo! Mail ・送信者認証とコンテンツフィルタリングを両立
・ユーザーの苦情に敏感
・独自のフィードバックループを提供
・Yahoo!のフィードバックループに参加
・送信頻度を適切に管理
・コンテンツの品質を高く維持
キャリアメール ・厳格なフィルタリング
・送信者認証(SPF/DKIM/DMARC)を重視
・大量送信に特に敏感
・件名や本文の文字数制限が厳しい傾向
・送信ドメイン認証を確実に設定
・件名は短く、本文は簡潔に(テキストメール推奨)
・送信量を段階的に増加させる
・携帯向けESPの利用を検討

ISP対策について

各ISPの判定アルゴリズムは非公開で、頻繁に変更される。上記の特徴と対策は過去の経験や一般的な傾向に基づくものであり、必ずしも現在の状況に適用できるとは限らない。実際の対策は、各ISPのフィードバックツールやサポートからの情報を基に判断することが重要である。

サービス選定

メール送信SaaS市場は、国内外で多様なプレイヤーが存在し、それぞれ異なる強みを持っている。日本の市場では、ブラストメール(25,000社以上)、AutoBiz(20,000社以上)、配配メール(10,000社以上)、WEBCAS e-mail(シリーズ10,000社以上)などが導入実績で上位を占めている。ITトレンド年間ランキング2024では、WiLL Mail、配配メール、Account Engagementが人気TOP3に挙げられており、国内企業からの支持を集めていることが示唆される。

一方、グローバル市場では、SendGridが月間1,000億通以上、Mailgunが15万社以上、Amazon SESが年間1兆通以上 の圧倒的な配信実績を誇っている。HubSpotやMailchimpも世界中で広く利用されており、Brazeも大規模エンタープライズ向けの顧客エンゲージメントプラットフォームとして存在感を示している。

推奨は以下の通り。

  • 開発者中心でトランザクションメールが主の場合
    • システムからの自動通知メールや、ユーザー行動に即した高速・大量のトランザクションメールの確実な配信を最優先する企業には、Amazon SES、Mailgun、SendGrid
  • マーケティング活動が主で非技術者も利用する場合
    • MailchimpやHubSpot Email Marketing
  • 高度な顧客ジャーニーとマルチチャネル統合を目指す場合(AI統合等)
    • Braze、Customer.io、またはHubSpot Marketing HubのProfessional/Enterpriseプラン

メール送信サーバを自前で構築することを推奨しない

理由は以下の通り。

  • ISP との信頼関係を築く必要がある
    • Feedback Loop 登録が必要
      • 主要ISP ごとに個別申請が必要
      • 全ISP をカバーするには非現実的
      • 維持管理も必要
    • ESP と違ってISP との信頼関係がないところからのスタート
  • コストパフォーマンスが悪い
    • 高可用性要件を満たす構成を実現するには高コスト
    • 運用コストが高い(セキュリティパッチ、メール技術の追従など)
  • セキュリティリスクが高い

クラウド環境でもし自前でメール送信サーバを構築したい場合は、以下を考慮すること。

プロバイダ 制限解除 解除条件・備考 推奨
AWS ⚠️制限あり ⚠️ 解除申請が必要(利用計画などの記載が必要) Amazon SES
Google Cloud ❌不可 古いプロジェクトでは制限がかかっていない場合があるが、新規プロジェクトの場合は、解除できない SendGrid, Mailgun, Mailjet
Azure ⚠️制限あり ✅️ EA, MCA-E は、利用可能 ⚠️Enterprise Dev/Test ❌上記以外のサブスクリプションは、解除不可 Azure Communication Services, SendGrid ..etc

※オンプレ環境で内部専用のメール送信サーバとして利用するなら自前メール送信サーバを構築するのはあり

データ収集ポリシー

法令遵守

メールアドレスや電話番号は、それ自体に氏名が含まれる場合や、他の情報と容易に照合できる場合に、個人情報保護法における「個人情報」に該当する。ただし、それ単体で個人を識別できない場合は「個人関連情報」にあたり、法的な定義が異なる。しかし、システムとしては個人情報・個人関連情報に関係なく、常に個人情報として扱われることが多い。その理由は、メールアドレスそのものが個人を特定可能な値に変更されたり、ビジネス要件への対応で属性が追加されることを考えると、最初から厳格な対応を取るほうが将来的な拡張に強く、「個人情報」と「個人関連情報」という2つのデータ保護ポリシーを持ち込まずに済むため設計をシンプルにできるためである。本ガイドラインもそれに賛同し、メールアドレスや電話番号を「個人情報」として厳密に扱う方針とする。

この方針に基づくと、メールアドレスや電話番号を収集・利用する際は、個人情報保護法が定める「適切な同意取得」 「利用目的の明示」 「第三者提供の制限」 「セキュリティ対策」 が必要である。また、広告宣伝目的のメール送信・SMS送信における「特定電子メール法(迷惑メール防止法)」などへの準拠も求められる。加えて、EU(GDPR)やその他海外でも、個人情報として扱われることが一般的であり、それぞれの法規制への対応が求められる。

上記で触れたもの以外も含め、国内の主要な法規制と準拠すべきポイントをまとめる。

# 概要 時期 罰則
個人情報保護法 個人情報の取得・利用・管理全般を規制する 2022年4月施行(改正法) 最大1億円の罰金、業務改善命令など
特定電子メール法(迷惑メール防止法) マーケティングのメールやSMS送信を規制する 2002年施行(最新改正:2022年) 最大3000万円の罰金、業務停止命令など
特定商取引法 通信販売における広告宣伝SMSなどを規制する。
取引条件の明記や誇大広告の禁止などが定められている
1976年施行(最新改正:2022年) 最大3億円の罰金、業務停止命令など

各法規制の要点は以下の通り。

  • 個人情報保護法
    • 個人の権利利益の保護を目的とし、電話番号を含む個人情報の取得から廃棄まで事業者の責務を定めている
    • 「本人の同意」 「利用目的の特定」 「安全管理措置」などの遵守が求められる
  • 特定電子メール法(迷惑メール防止法)
    • 迷惑なマーケティングメールの防止を目的とする
    • 広告宣伝のSMS送信時の 「オプトイン(事前同意)原則」 「送信者情報の表示義務」 「オプトアウト(配信停止)手段の提供」 が求められる
  • 特定商取引法
    • 消費者トラブルが生じやすい特定の取引(特に「通信販売」)における消費者保護を目的とする
    • 特電法より厳格な広告ルールが定められ、「契約通知への安易な広告付随の禁止」 「詳細な取引条件の表示義務」 が求められる

推奨は以下の通り。

同意取得:

  • 必要最小限のデータのみ収集する
    • そもそも電話番号を収集せず、メール通知等で代替できないかを第一に検討する
    • また、氏名とメールアドレス(電話番号)のみで十分な場合、住所などをそもそも収集しない
  • メールアドレスや電話番号の取得時に、利用目的とプライバシーポリシーへのリンクを記載する
    • 利用目的は具体的(例:本人認証、重要通知、広告宣伝、メールマガジン配信)に記載する
  • オプトイン同意を確実に取得する
    • 目的ごとに同意を取得する。「本人認証」と「広告宣伝(メールマガジン)」の同意は、登録フォームのチェックボックスを分けて選択可能にする
    • 同意内容には、第三者提供の有無やデータ保存期間も明記する
    • 同意した日時、目的、手段(IPアドレスなど)などを証跡ログとして保存する
  • 目的外の利用は、同意を再取得する
    • 利用規約やプライバシーポリシーに反する利用を行う場合は、同意を再取得する
  • ユーザーが自身のメールアドレスや電話番号を確認・訂正・削除できるようにする
    • 配信停止、紐づけ解除など

メッセージ本文:

  • 誰からのメッセージか分かるよう、サービス名・事業者名を記載する(メールの場合は連絡先や住所など)
  • (広告の場合)
    • 「配信停止はこちら」のような、配信停止手段を記載する(GmailのオプトアウトについてはGmail送信者ガイドラインの章を参照)
    • 広告本文からランディングページにリンクし、特商法で定められた価格や返品条件といった法定表示事項を表示する
    • 「必ず儲かる」のような、消費者に誤解を与える断定的な表現や、著しく有利であると見せかける表現は使用しない

法令の適用、対応についてはリーガルチームに確認する

具体的な法令の適用と対応については、リーガルチームと相談した上で行うこと。

特定電子メール法の適用除外の条件

契約の成立確認、料金請求のお知らせ、発送通知など、取引関係に伴う事務連絡メールや、SMSの認証コード送信は「広告・宣伝」ではないため、特定電子メール法のオプトイン規制の対象外である。ただし、これらのメールに広告を追記する場合は別途の同意が必要になる場合があるため、「ついで」の宣伝には注意する。

業界ガイドラインや各国の規制

日本通信販売協会(JADMA)や日本データ通信協会の迷惑メール相談センターなどのガイドラインが存在する。これらの公開情報を参考にすると良い。また、国際展開時は、各国のスパム規制(例:米国のCAN-SPAM Act、EUの「GDPR」など)を確認すること。特にGDPRは規制が厳しく、専門的な対応が求められる。

開封トラッキング

メールの開封トラッキングは、送信したメールが受信者によって開かれたかどうかを測定する技術である。主に以下の目的で行われてきた。

  • マーケティング効果測定: メールマガジンなどの開封率を測定し、キャンペーンの効果を評価する。件名のA/Bテストなどに利用
  • 営業活動: 重要な提案書などを送付した際、相手がいつ内容を確認したかを把握する

手法としては以下のような方法が取られてきた。

  • メール本文にトラッキングピクセル(1×1ピクセルの目に見えない画像)を埋め込み、メールが開かれると画像読み込みのため、特定のURLへのリクエストが送信される。これを持って「開封」とみなす
    • 開封時間やIPアドレス(※大手メールサービスでは取得不可にするようプロキシを導入)が取得可能
    • この仕組み上、メールクライアント設定で画像を非表示設定にしている場合、トラッキング不可となる

しかし、ユーザーの許可なく行動を追跡することへの懸念から、近年プライバシー保護強化の流れがありその信頼性は揺らいでいる。通信キャリア・主要メールサービスごとの状況を下表にまとめる。

サービス事業者 特徴とトラッキングへの影響
Apple (iCloud Mail, Apple Mailアプリ) ❌ メールプライバシー保護(MPP)により、Appleのサーバーが事前に全画像をダウンロードする。そのため開封率は100%として記録されるため、トラッキングが不可能になった
Gmail / Yahoo! Mail ⚠️独自の画像プロキシサーバーを経由して画像がキャッシュするため、開封のタイミングがずれたり、複数回の開封が1回と記録されるため、不正確になった
キャリアメール ❌迷惑メール対策として、デフォルトで画像をブロックしている場合が多く、正確なトラッキングは不可能

このような状況のため、開封トラッキングを継続するかどうか議論になる場合がある。

  • 案1: 開封トラッキングを継続
    • 非Appleユーザーに限れば、大まかな傾向を把握できる
    • 全体的に正確性に欠くため、誤った意思決定に繋がる懸念
  • 案2: 開封トラッキングを廃止、別の指標に移行
    • メール本文内のリンクのクリック率(CTR)や、その後のコンバージョン率(CVR)を指標に用いる
    • 開封率を元にした件名A/Bテストなどの手法はできなくなるが、ユーザーの能動的なアクションかつ正確な数値を用いることができる

推奨は以下の通り。

  • 案2を第一に考える
    • 開封率という指標は不正確であり、それに基づくビジネス上の意思決定はリスクとなるため
    • 開封トラッキングはプライバシー保護の時代的な判断に逆らった手法であるため、コンプライアンス上のリスクとなるため

法令遵守対応

トラッキングピクセルでの開封情報や、クリック率などは個人情報保護法から、ユーザーに公表した「利用目的」の範囲内である必要がある。そのため、開封情報やクリック率を、個人の行動分析や営業活動のスコアリングなどに利用する場合は、プライバシーポリシーにその旨を記載して同意取得しておく必要がある。また、EU域内ではGDPRから、トラッキングピクセルを使用するためにはオプトイン同意が必要であるため、特に注意が必要である。

クリックトラッキングの有効性

AppleのMPPはメール内のリンクに対して、事前クリックは行わない。そのため、クリックトラッキングは現在でも有効である。メール内の各リンクを、一度自社サーバーを経由するユニークなリダイレクトURLに書き換えることで計測したり、UTMパラメータ(?utm_source=newsletter&...など)を付与することで、Google Analyticsなどのアクセス解析ツール上でトラフィックやコンバージョンを測定できる。

メールアドレスの管理

有効性

ユーザーが入力したメールアドレスの有効性の検証することで、存在しないアドレスにメールを送信してしまうことで生じるレピュテーションの低下リスクを避け、登録したはずのメールが届かないといった問い合わせを減らし、ユーザー体験を向上させることができる。

メールアドレスの妥当性チェックには、いくつかのレベルが存在する。

# 概要
形式チェック 正規表現などで、メールアドレスのフォーマットを確認すること
ドメイン存在チェック DNSレコード(MX/Aレコード)の問い合わせで、ドメインが有効かを確認する
使い捨てアドレスチェック 使い捨てメールアドレスのドメインリストと照合し、不正利用のリスクを判断する。サードパーティサービスへの依存やコストが発生する
確認メールの送信 実際に確認リンク付きのメールを送信し、ユーザーがクリックすることで到達可能性と所有権を証明する。ユーザーに追加のアクションを要求するため、登録完了率が若干下がる可能性がある

形式チェック

メールアドレスの妥当性チェックで、最初に行うべきことは、正規表現などを用いた形式チェックである。入力フォームによる登録内容をチェックしフィードバックすることは、以下のメリットもある。

  • ユーザー体験の向上
    • user@examplecom のようにピリオドが抜け、@ が無い、 user@example.com のように全角文字が混入、user @example.com のように半角スペースが混入などの明らかな入力ミスを防ぎ、登録後に「メールが届かない」という状況を軽減できる

一方で、以下のトレードオフ構造がある。

  • RFCなどに準拠した厳密な検証にすると…
    • ✅️入力ミスを軽減できるためユーザー体験を向上
    • ✅️誤った宛先にメール送信することで生じる、レピュテーション低下リスクや費用を下げることができる
    • ❌️一部キャリアでは、メールアドレスの公式な仕様(RFC 5322)に則っていないメールアドレスが有効であるため、それらのユーザー登録を阻害してしまい機会損失を生むリスク
  • 検証が緩すぎると…
    • ✅️RFC違反だが実際に利用可能なメールアドレスを受付できる
    • ❌️明らかな入力間違いにもユーザーが気付かず、登録後のメールが届かず離脱してしまう懸念。例えば、メールアドレスに 未来太郎 といった氏名を誤入力してしまうのは、メール送信前に検知可能である
    • ❌️バウンスメールが発生し、レピュテーションが低下するリスク
    • ❌️他システム側で、メール送信ができないリスク(例えば、SESでは送信可能だったが、別のESPでは送信不可という状況がありえるため、将来的な切り替え時の課題になりえる)

形式チェックにおける主要な対応案は以下の通り。

推奨は以下の通り。

  • 入力時の形式チェック自体は必須で行う
    • ただし、システム目線ではなく、ユーザー入力ミスを防ぐこと(ユーザーの利便性向上)を目的とする
  • 形式チェックは、(3)の方針を採用する
    • 「存在するかもしれない」アドレスは通過させ、最終的な存在確認は次のステップである「確認メールの送信」に委ねる
  • ユーザー体験向上の施策の導入を検討する
    • 前後の半角スペースは自動でトリムする
    • キャリアメールアドレスで登録した場合、確認メールが届かないかもしれないダイアログの表示を入れるか検討する(GmaiやYahoo!メールなどへの誘導をセットで行うと良い)
    • user@gmal.com のように一般的なドメインの打ち間違いを検知し、「もしかして: Gmail.com?」と提案するライブラリ(例: Mailcheck.js)の導入を検討する

現実的な形式チェック

(3)の方針の場合は、以下の要件を想定している。

  • 全角文字はNG
  • @ を含む
  • ドメイン部分は、example は許容せず、 example.comexample.co.jp などを許容
  • ダブルクォートも許可(先頭がドット、ドットが連続する、アットマークの前がドットなどの場合、ダブルクォートで囲む場合があるため)

正規表現の例を以下にあげる。

正規表現について解説(Gemini 2.5 Proによる説明)。

要素 意味
^ 文字列の先頭
[A-Z0-9._%+-\\"]+ @の前の部分(ローカルパート)。英大文字、英小文字、数字、および ._%+-" の記号が1文字以上続くことを許可する
@ @記号そのもの
[A-Z0-9.-]+ ドメイン名部分。英大文字、英小文字、数字、および . と – が1文字以上続くことを許可する
\. ドメイン名とトップレベルドメインを区切る . (ドット)
[A-Z]{2,} トップレベルドメイン(TLD)部分。 .com.co.jp のように、英字が2文字以上続くことを要求する
$ 文字列の末尾
/i 全体を大文字・小文字を区別しないモードで評価する

形式チェック以外の検証

フォーマットチェック以降の、ドメイン存在チェック・使い捨てアドレスチェック・確認メール送信は外部のリクエストが発生し、コストが発生するため注意が必要である。

推奨は以下の通り。

  • ドメイン存在チェックの実施は、できる限り実施する(優先度は落としても良いが、行ったほうがベター)
    • 少なくてもサーバーサイドでMX/Aレコードの存在を確認することで、ユーザーへのフィードバックを早めること(存在しないドメインです、などの表示)が可能なため
    • 自社サービス側のレピュテーション低下を抑制できるため
    • API利用料の削減が期待できるため
  • 不正利用のリスクが高いサービス(無料トライアル、キャンペーン登録など)では、「使い捨てアドレス」チェックするAPIを呼び出しを検討する
    • 対応は必須ではない。リスク評価、費用対効果を見て導入する
  • 確認メールの送信は必須で行う
    • ユーザーがメール内の確認リンクをクリックして初めて、そのメールアドレスを「有効」ステータスとして扱う
    • ユーザー登録、メールアドレス変更時など重要な操作時も行うと良い

SMTPコマンドを用いた存在確認は非推奨

Simple Mail Transfer Protocol(SMTP)では、メールアドレスを検証するVRFYコマンドが提供されている。これを用いて、相手サーバーにメールボックスの存在を直接問い合わせることも、技術的には可能である。しかし、迷惑メール対策で多くのサーバーが拒否・偽応答されている。また、試みること自体が自サーバーのIPを汚染するリスクがあるため、行うべきではない。

他にも、「メール送信せずにSMTP通信を中断する」という、メールアドレス検証の正しい方法と避けるべき方法 | SendGridブログ に記載がある方法もあるが、確実では無く、サービスへの接続がIPアドレスなどでブロックされるリスクもあるため利用すべきではない。

確認メールの認証方式

確認メール送信を用いた、メールアドレスの有効性確認には以下の2つの方法が考えられる。

項目 認証コード(OTP)方式 マジックリンク方式
説明 ランダムなコード(例:6桁の数字)をSMSで送信し、ユーザーがフォーム入力 認証用のURL(マジックリンク)をメール送信し、ユーザーがクリックして認証を完了
ユーザー体験 ❌ 受信トレイを開き、コードをコピー&ペースト、元の画面に戻って入力するため手順が多い。
ただし、iOSの場合はSMSコードを貼り付けるボタンが出てくるなど、利便性が高い場合がある
✅ リンクをタップするだけで認証が完了し、スムーズ
セキュリティ ✅️フィッシングによるコードの窃取リスクは存在する ⚠️ トークンの適切な管理(有効期限、ワンタイム利用)が必須
実装の容易さ ✅ 既存ライブラリを利用しやすい ✅ 既存ライブラリサポートも十分に増えている状況

推奨は以下の通り。

  • マジックリング方式を第一に検討する
    • メールを開ける時点で、リンクのクリックが可能であると考えられるため
    • ユーザー体験が高く、ユーザーの離脱を低くできると考えられるため

メールアドレスを用いた2要素認証(2FA)の場合

セキュリティの文脈で、メールアドレスを用いた他要素認証を行う場合は、認証コード方式を利用することになる。これは、認証を強化するという明確な目的であるため、ユーザーのその手間がかかることを許容すると考えられるためである。

エイリアス

メールエイリアス(サブアドレス)とは、1つのメールアドレスに複数のバリエーションを持たせることができる機能である。エイリアスにメールを送信すると、元になるメールアドレス(ベースアドレス)にメールが送信される。RFCの仕様上、メールアドレスの@より前のローカルパートに、+記号を含めることが許容されており、Gmailこの仕様を利用し、+以降に任意の文字列を追加することでエイリアスが利用できる。また、Gmailでは、+だけでなく、ローカルパート内のドット(.)でも無視されるため、実質エイリアスのような挙動にできる。

▼例

  • ベースアドレス
  • エイリアス
  • ドットエイリアス
    • miraitaro@example.com
    • m.i.r.a.i.t.a.r.o@example.com

その他のサービスでのエイリアスの扱いをまとめる。

# エイリアス 説明
Apple (iCloud Mail) ✅対応 +エイリアスに対応。さらに「メールを非公開」機能でblouse.camera-0m@privaterelay.appleid.com のようなランダムな使い捨てアドレスの自動生成も可能
Yahoo!メール (日本版) ✅️対応 プラスエイリアスは非対応。セーフティアドレス機能で、mirai.taro-label@yahoo.co.jp という形式で利用可能
キャリアメール ❌非対応 +記号は、アドレスの一部として有効な文字として扱われるため、+エイリアスをつけると完全に別アドレスと見なされる

一般的に、エイリアスは以下の目的で使用される。

用途 説明
複数アカウント作成 「1メールアドレスにつき1アカウント」という制約を回避し、無料トライアルなどに複数回登録するために利用
フィルタリング +以降のタグを元に、受信トレイでメールを自動的にフォルダへ振り分ける
トラッキング サービスごとに異なるエイリアスで登録し、どこから情報が漏洩したか、またはスパムが送られてくるかを追跡する調査目的
開発時のダミーデータ システム開発者が、メール送信テスト時のダミーデータとしてエイリアスを活用したい場合がある

主な論点として、以下がある。

  • エイリアスをサービスとして許容するかどうか
  • 許容した場合、エイリアス付きメールアドレスを、ベースアドレスと同一のものとして扱うか、あるいは全くの別物として扱うかどうか

エイリアスに対して、サービスが選択する案をまとめる。

# (1)エイリアスを拒否する (2)エイリアス毎のアカウント作成許容 (3)エイリアス毎のアカウント作成不可だが、ログイン許容
説明 エイリアスでのユーザー登録を不可とする ユーザーが入力したメールアドレスを、そのまま一意の識別子として扱う。別エイリアスのサインアップが可能 +記号以降の文字列を除去し、常にベースアドレスとして扱う。別エイリアスでのサインアップは不可、ログインは可能
不正利用 ✅️無料トライアルや初回限定クーポンの複数取得は不可 ❌️無料トライアルなどの乱用を許してしまう ✅️無料トライアルなどの濫用を防止
ユーザー体験 ⚠️エイリアスへのメール送信が不可となる ⚠️ユーザーがどのエイリアスで登録したか忘れた場合、パスワードリセットなどができず、アカウントにアクセス不可の懸念 ✅️エイリアスを忘れてもパスワードリセットが可能
設計コスト ✅️ブロックするだけであるため容易 ✅️特に考慮が不要なため容易 ✅️エイリアスの正規化処理が追加

推奨は以下の通り。

  • 基本方針は、(3)を選択する
    • 理由
      • 不正利用を防止でき、キャンペーン効果の適切な実施、計測ができるため
      • ユーザーがどのエイリアスを使ったか関係なくサービスを利用でき、ユーザーの混乱を防ぐことができるため
      • ヘルプデスクの、ログイン周りのヘルプ負荷を軽減できるため
      • 顧客データの分散を防ぎ、ユーザー分析の向上に寄与するため
  • 正規化は以下の1~3の順番で処理する
    1. 正規化の対象外のアドレスを特定
      • Appleの「メールを非公開」機能で生成されたアドレス、Yahoo!メールの「セーフティアドレス」、そして日本の携帯キャリアのメールアドレスは、全て正規化の対象外とし、それぞれが一意のメールアドレスであるとして扱う
    2. Gmail特有のドットエイリアス (.) の正規化
      • @gmail.com と @googlemail.com のドメインに限り、@より前の部分のドット(.)を無視する正規化を適用する。これ以外のドメイン(独自ドメインなど)には、この正規化は実施しない
    3. その他は、プラスエイリアス (+) の正規化
      • a, b を除いたドメインに対して、+記号以降を無視する正規化を適用する。一部非対応のサービスが存在するリスクよりも、Gmail等の大多数のサービスからの不正利用を防ぐメリットが上回るという、リスクベースでの判断をしたいため
  • 開発者体験として、ダミーデータ登録などで複数アドレスを登録したい場合は、設定ファイルなどにホワイトリスト方式で、エイリアスを許容する処理を加える
    1. ホワイトリストに該当するベースアドレスの場合は、正規化をスキップするなどの処理を加える

メールアドレス保存のためのテーブル設計

システム設計の前提として、認証・認可の責務をAuth0やAmazon CognitoといったIDaaSに委任し、自前のログイン機構を作り込まないことを本ガイドラインの前提とする。つまり、ユーザーに関する情報の信頼できる唯一の情報源はIDaaSとなる。自社サービスのデータベースが保持するユーザー情報は、IDaaSが持つ情報の「キャッシュ」か「アプリケーション固有の追加情報」となる。メールアドレスの変更や追加、削除といったライフサイクル管理は、すべてIDaaS側で行われる。

推奨は以下の通り。

  • 原則、メールアドレスを自システムで管理せず、必要があればIDaaSに依存した作りとする
  • メールアドレスが必要な場合は、usersテーブルにemailカラムを追加し、IDaaSからの情報をキャッシュとして保持することを許容する
  • IDaaSが提供するWebhookやイベント通知の仕組みを利用し、プロファイルの変更を自社サービスに同期させる

ERDイメージ

IDaaSファーストのアーキテクチャでは、メールアドレスやパスワードといった認証情報はIDaaS側で管理するため、自システム側のデータモデルはシンプルになる。id (主キー): Auth0やAmazon CognitoといったIDaaSから発行される不変のユーザーID(subクレームなど)を文字列として格納する想定である。

アプリケーション固有の情報: application_roleのように、自社サービス内でのみ意味を持つ役割や設定などの情報を保持する。

IDaaS同期フロー

IDaaSが提供するWebhookを利用することで、メールアドレスの変更ロジックを自前で実装する必要がなくなり、常にIDaaSを正とできる。

  1. ユーザーがIDaaSの提供するアカウント管理画面で、自身のメールアドレスを変更する
  2. IDaaSは「ユーザープロファイル更新」イベントを発行し、事前に登録されたWebhookエンドポイントに通知する
  3. 自システムが通知を受信し、必要に応じてDBを更新

もし、自システムでメールアドレス管理する場合

メールアドレスは、アカウント作成(サインアップ)時に必須項目として求めることが多いが、一般的にライフサイクルは普遍的ではない。これらを考慮したテーブル設計が必要である。

  • ユーザーがメールアドレスを変更する
  • リカバリー用の別のアドレスを追加で紐づける(ユーザー:アドレス = 1:Nになる)
  • プライマリで用いるのメールアドレスを変更する
  • 複数登録ずみであれば、プライマリ以外のメールアドレスを削除する
  • 有効性が、検証済み/検証できていないという区別がある

上記を考慮すると、ユーザーテーブルから、メールアドレスを専門に管理するuser_emailsテーブルを分離する必要がある。

フェデレーテッドログイン

フェデレーテッドログイン(ソーシャルログイン)とは、ユーザーが普段から利用している第三者サービス(Google、Apple、Xなど)のアカウント情報を信頼し、その認証結果を利用して自社サービスにログイン・登録させる仕組みである。

主な論点として、以下がある。

  • 既存アカウントとの紐付けをどうするか問題
    • user@example.com が既に会員登録済み。後から同じアドレスのGoogleアカウントで「Googleでログイン」でした場合、どう振る舞うべきか
  • メールの再利用による「なりすまし」対策
    • ユーザーAが a@example.com を使って退会後にアドレスが解放、ユーザーBが同じアドレスを取得した場合。Bが「Googleでログイン」して、メールアドレスだけで自動紐付けすると、ユーザーAの購入履歴などがBに参照できてしまい、セキュリティインシデントに繋がる
  • プロバイダー側でのアドレス変更によるログイン不可の対策
    • ユーザーがGoogle側でメールアドレスをa@gmail.comからb@gmail.comに変更した場合、Googleログインが不可になる懸念

対応方針としては以下が考えられる。

# (1)紐付けを行わず、個別のアカウントとして扱う (2)メールアドレスの一致で自動紐付け (3)本人確認を経て、ユーザーに紐付けを選択させる
概要 ログイン方法が異なれば、メールアドレスが同じでも別のアカウントとして新規作成する ソーシャルログインで取得したメールアドレスが既存の場合、そのアカウントに新しいログイン方法を追加で紐付ける 「既に登録があります。パスワードを入力してアカウントを連携しますか?」と本人確認(パスワード認証など)を経てから紐付けする
ユーザー体験 ❌意図せず複数アカウントが作成される懸念 ✅シームレスにログインできるため高い ⚠️初回連携時にパスワード入力等の追加操作が必要
データ整合性 ❌同一人物のデータが複数のアカウントに分断 ✅1ユーザー=1アカウントの原則を維持できるため ✅1ユーザー1アカウントを維持
不正利用への耐性 ❌無料トライアル等の不正利用の抜け道 ✅同一人物による複数アカウント作成を防止できるため ✅️本人確認を行うため、なりすましを防止できる
なりすまし耐性 ✅アカウントが別なため、他人の情報は見られない ❌メアド再利用によるアカウント乗っ取りリスク ✅️本人確認でなりすましを防止

推奨は以下の通り。

  • (3)を採用する
    • ユーザーの混乱を防ぎ、データ整合性を維持可能であるため。また、エイリアス 節の方針とも整合性があるため
    • なりすましリスクを低減でき、ユーザーにとっても意図しないアカウント連携を防ぐことができ親切である
    • 「Googleでログインする」の完了後、メールアドレスで識別するのでは無く、ID トークンの sub クレームから取得できるアカウントの ID をDBに登録して区別する
  • (3)を採用した場合は、以下の対応を追加する
    • ユーザーがアカウント設定画面で、特定のソーシャルログインを任意で解除できる機能も提供する(ログイン手段がゼロにならないように、他の有効な認証方法が残っている場合のみ、解除可能にする)
    • Googleでログインせずとも、アカウント設定画面から「Googleアカウント連携」ができる手段も提供する

ログインヒント

あるユーザーが、Googleアカウント連携済みで、誤って「Facebookでログイン」しようとした場合に、「前回あなたはGoogleでログインしました」と誘導(ヒント)を出すサービスがある。これはパスワードをすぐに思い出せないユーザーへの救済にも繋がるなどユーザー体験は良いが、アカウントの存在確認を第三者に提供してしまうというセキュリティ上のリスクもある。

【攻撃シナリオ】

  1. 攻撃者がログインヒントを行うサービスAのログイン画面を開く
  2. target@example.com を使って「Facebookでログイン」を試みる
  3. サービスAが「前回あなたはGoogleでログインしました」というヒントを表示
  4. 攻撃者は、(1) target@example.com がサービスAに登録されていること、そして (2) Googleアカウントと連携していること、という2つの情報を不正に入手できてしまう

もし、上記が許容できない場合は、(3)を選択するか、具体的なソーシャルログイン名を伝えず「以前ご利ようになったログイン方法でお試しください」といったボカシた表現にするかを検討する。ログインヒント+(3)の両方を提供するのは、実装コストが高くなる点とユーザーに対する認知負荷を高めてしまうため、避けた方が良い。脆弱性診断テストの実施タイミングを検討する。

Sign in with Appleの要件

iOSアプリで、GoogleやFacebookなどのサードパーティ製ログイン機能を提供する場合、AppleのApp Storeガイドラインにより、「Sign in with Apple」も併せて提供することが義務付けられているため注意すること。

メール表現

メール形式

メールの形式は、歴史的背景から主に3つの種類が存在する。

  1. プレーンテキストメール
    1. RFC 822などで定義された、文字情報のみで構成される形式で、文字の装飾や画像の挿入が不可
    2. 視覚的な訴求力は低いが、あらゆる環境で表示できる強みがある
  2. リッチテキストメール
    1. Microsoft社のOutlookなどが独自に採用していた形式
    2. 太字や色付けなどの装飾が可能ですが、特定のメールソフトでしか正しく表示されない制約がある
  3. HTMLメール
    1. HTMLとCSSを使って構成される形式
    2. セキュリティにより画像表示をOFFにしている端末や、HTMLメールをサポートしないフィーチャーフォン(ガラケー)などでは、表示崩れなどで可読性が低下するリスクがある

使い分けについては以下の案が考えられる。

# (1)プレーンテキストメールのみを送信する (2)HTMLメールのみを送信する (3)マルチパート配信
説明 全てのメールを、互換性が最も高いプレーンテキスト形式で送信する 全てのメールをHTML形式のみで送信する HTML版とプレーンテキスト版の両方をマルチパートで送信し、受信側が最適な方を選択する
確実性 ✅どの環境でも表示される ⚠️HTML非対応環境では読めないリスク ✅必ずどちらかが表示される
表現力 ❌ 文字情報のみで、訴求力が弱い ✅視覚的な訴求力があり ✅HTML版では非常に高い

推奨は以下の通り。

  • 原則、(3)を選択する
    • 大多数のユーザーにはHTMLメールの表現力を利用でき、フィーチャーフォンなどごく一部のユーザーにも最低限の伝達を保証できるため
    • マルチパート配信は、SendGridやAmazon SESといった主要なESPが標準機能としてサポートしており、HTML・プレーンテキストの2つのコンテンツを用意するだけで良いため

HTMLメール

HTMLメールは豊かな表現力を持ちエンゲージメントを高めるために有効だが、Webページとは全く異なり、特有の知識と対応が求められる。HTMLメールの代表的な課題として、メールクライアントごとにHTMLとCSSを解釈・表示する「レンダリングエンジン」がバラバラで、しかもその多くが非常に古いことがある。ブラウザの世界では、標準技術への対応が進んでいるが、メールクライアントでは「断片化」がまだまだ残っており、表示崩れや意図しない表示の原因となっている。

近年、HTMLメール開発において最も注目すべき動きは、Microsoft社によるOutlookのレンダリングエンジンの刷新である。

しかし、多くの企業や買い切り版Officeでは、依然としてMicrosoft Wordをベースとした旧来の「クラシックOutlook」が利用され続けている。そのため、2025年現在は新旧のOutlookが混在する移行期であると推測される。Email Client Market Share and Popularity – Litmus によれば、2025年7月時点で、Outlookのシェアは7%である。新旧の比率は不明であるが、相当数が存在するであろうクラシック版のサポートを切り捨てる判断は、難しいと考えられる。

主要サービスのHTML・CSSサポート概況を下表にまとめる。

# レンダリングエンジン 説明
Outlook(旧デスクトップ版) Microsoft Wordベース CSSのサポートが弱く、背景画像や角丸・Flexbox/Gridといったモダンなレイアウトの利用不可
Outlook(新デスクトップ版) Edge(WebView2)ベース モダンなHTML/CSSのサポートが向上
Gmail 独自 比較的新しいCSSにも対応しているが、

Apple Mail (iPhone/Mac) WebKit(Safariと同じ) 最も標準に準拠し、最新のHTML/CSSにも対応している
キャリアメール 独自 基本的なHTMLタグしかサポートしない場合が多い。複雑なレイアウトは表示が崩れる前提で考えるべき

推奨は以下の通り。

  • 原則、レイアウトは保守的なCSSで組み、装飾用のCSSは動かなくても視認性は保つことが可能な、2段階アプローチを採用する
  • 1段階目のCSSは、以下の実装ルールに則る

元の記事を確認する

関連記事