本記事はGMOインターネットグループで複数ある開発者ブログのなかから人気の記事をピックアップして再掲載しています。機械学習や深層学習のビジネス応用を研究、社会実装をしているグループ研究開発本部 AI研究開発室のデータサイエンティストが寄稿した人気記事です。
目次
結論
- DMARC認証を設定する必要がある
- メールヘッダーでワンクリックでメルマガ配信解除できるように対応する必要がある
はじめに
こんにちは。次世代システム研究室のT.Tです。
今年の2月1日からメール送信者のガイドラインに記載されているGoogleの新スパムメール対策が実施され、この対策で提示されている要件を満たさない場合、2月1日以降段階的にGmail宛のメールが宛先に届かなくなる措置が取られるようです。この要件の内容についてはGmailの新スパム規制対応全部書くの記事で詳しく解説されています。
本記事では現在開発運用に携わっているサービスで送信している、ユーザー登録時のメールやメルマガで配信しているメールがこの要件を満たしているかどうかを調査した結果と要件を満たしていない部分の対策についてご紹介します。
1.メール配信システムの構成
現在開発運用に携わっているサービスは3サービスあり、gmo.jpが2つ、それ以外のドメインが1つ(以降XXX.YYYと記載します)となっています。配信しているメールの種類はユーザー登録時に送信するトランザクションメールとサービス関連の情報を配信するメルマガです。それぞれのサービスで1日5000件以上のメールを配信しており、gmo.jpの共通のメールサーバーからメールを配信しています。
2.調査結果
メール送信者のガイドラインの1日あたり5,000件以上のメールを送信する場合の要件の各項目について調査した結果は以下の内容になりました。
ドメインにSPFおよびDKIMメール認証を設定します
digコマンドでSPFとDKIMが設定されているか確認します。以下の実行結果となり対応できています。
$ dig -t TXT service1.gmo.jp | grep spf
service1.gmo.jp. 86400 IN TXT "v=spf1 include:_spf.post.service2.gmo.jp include:mail.zendesk.com ~all"
$ dig -t TXT service2.gmo.jp | grep spf
service2.gmo.jp. 86400 IN TXT "v=spf1 include:_spf.post.service2.gmo.jp include:mail.zendesk.com ~all"
$ dig -t TXT XXX.YYY | grep spf
XXX.YYY. 3600 IN TXT "v=spf1 include:_spf.XXX.YYY -all"
$ dig -t TXT service1._domainkey.service1.gmo.jp | grep DKIM
service1._domainkey.service1.gmo.jp. 80227 IN TXT "v=DKIM1; h=sha256; k=rsa; p=..."
$ dig -t TXT service2._domainkey.point.gmo.jp | grep DKIM
service2._domainkey.service2.gmo.jp. 86400 IN TXT "v=DKIM1; h=sha256; k=rsa; p=..."
$ dig -t TXT XXX._domainkey.XXX.YYY | grep DKIM
XXX._domainkey.XXX.YYY. 3600 IN TXT "v=DKIM1; h=sha256; k=rsa; p=..."
送信元のドメインまたはIPに、有効な正引きおよび逆引きDNSレコードがあることを確認します
digコマンドで正引きおよび逆引きDNSレコードが設定されているか確認します。以下の実行結果となり対応できています。
$ dig +short -x xxx.yyy.zzz.www
service2.static.post.service2.gmo.jp.
$ dig +short service2.static.post.service2.gmo.jp.
xxx.yyy.zzz.www
メールの送信にTLS接続を使用します
サービスからGmail宛に送信したメールのメッセージのソースでTLS接続になっているか確認します。以下の結果となり対応できています。
Received: from service2-smtp02.service2.gmo.jp (service2.static.post.service2.gmo.jp. [xxx.yyy.zzz.www])
by mx.google.com with ESMTPS id s13-20020a65690d000000b005cdfe91fb80si2555793pgq.416.2024.01.09.17.55.45
for <[email protected]>
(version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
Postmaster Toolsで報告される迷惑メール率を0.10%未満に維持し、迷惑メール率が決して0.30% 以上にならないようにします
Postmaster Toolsにログインして、各ドメインから送信しているメールの状況を確認します。確認するためにDNSレコード認証が必要になるので、TXTレコードに認証用の情報を追加して認証を通します。2024年1月11日時点の120日間平均は以下の結果でした。以下の結果となり基準を超えているので対応が必要そうです。
service1.gmo.jp: 0.28%
service2.gmo.jp: 0.10%
XXX.YYY: 0.30%
Internet Message Format標準(RFC 5322)に準拠する形式でメールを作成します
以下の点から対応できていると判断しました。
- Postmaster Toolsで120日間の配信エラーが0%になっている
- メール配信しているJavaとPHPのアプリケーションで標準的なメール送信ライブラリを使ってメールを送信している
GmailのFrom: ヘッダーのなりすましはしないでください
サービスからGmail宛に送信したメールのヘッダーのFromの内容を確認します。以下の結果となり対応できています。
From: ... [email protected]
From: ... [email protected]
From: ... [email protected]
メーリングリストや受信ゲートウェイを使用するなどして、メールを定期的に転送する場合は、送信メールにARCヘッダーを追加します
サービスからGmail宛に送信したメールのヘッダーの内容を確認します。以下の結果となり対応できています。
ARC-Seal: i=1; a=rsa-sha256; t=1704851746; cv=none; ...
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; ...
ARC-Authentication-Results: i=1; mx.google.com; ...
送信ドメインにDMARCメール認証を設定します
digコマンドでDMARCが設定されているか確認します。gmo.jpでは対応できていますが、XXX.YYYでは対応できていないことが確認できました。
$ dig -t TXT _dmarc.gmo.jp | grep DMARC
_dmarc.gmo.jp. 3540 IN TXT "v=DMARC1 ; p=none ; sp=none ; rua=mailto:[email protected]"
$ dig -t TXT _dmarc.XXX.YYY | grep DMARC
ダイレクトメールの場合、送信者の From: ヘッダー内のドメインは、SPFドメインまたはDKIMドメインと一致している必要があります
先述したSPFとDKIMの設定のドメインとサービスからGmail宛に送信したメールのヘッダーのFromのドメインが一致していることを確認します。ドメインが一致しているので対応できています。
マーケティング目的のメールと配信登録されたメールは、ワンクリックでの登録解除に対応し、メッセージ本文に登録解除のリンクをわかりやすく表示する必要があります
「ワンクリックでのメール配信登録解除」に対応しているかを確認するために、サービスからGmail宛に送信したメールの内容を確認します。対応できている場合、以下の画像のようなリンクが表示されるはずですが、送信したメールにはこのリンクが表示されておらず対応できていませんでした。
「メッセージ本文に登録解除のリンクをわかりやすく表示する」には以前からメール本文のフッターに配信停止のリンクを設置しているので対応できています。
3.対応方針
迷惑メール率を0.10%未満に維持、DMARCメール認証とワンクリックでのメール配信登録解除に対応できていないことが確認できたので、この点について対応方針を検討しました。
迷惑メール率を0.10%未満に維持
現在はワンクリックでのメール配信登録解除に対応していないので、迷惑メールとして報告されている可能性があります。ワンクリックでのメール配信登録解除に対応することで改善が期待できます。また、Postmaster Toolsでメールの配信状況の統計データが取得できるので、配信したメールの内容と照合してメールの内容を見直すことで改善に繋げることもできそうです。
DMARCメール認証
_dmarc.XXX.YYYのTXTレコードに以下の内容を追加すれば大丈夫そうです。
v=DMARC1 ; p=none ; sp=none ; rua=mailto:[email protected]
ワンクリックでのメール配信登録解除
メール送信者のガイドラインに記載されている内容に従って対応します。
ワンクリックでの登録解除を設定するには、送信メールに次の両方のヘッダーを含めます。
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <https://solarmora.com/unsubscribe/example>
メールヘッダーに配信停止用のヘッダーを追加します。List-UnsubscribeのURLには配信を停止するユーザー情報と配信停止対象にするメール種別の情報を暗号化する等して含めておきます。
受信者がワンクリックで登録解除すると、次の POST リクエストが届きます。
“POST /unsubscribe/example HTTP/1.1
Host: solarmora.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
List-Unsubscribe=One-Click”
各サービスでList-Unsubscribeに設定したURLでPOSTの処理を受け付けられるように機能を追加します。ワンクリックでの登録解除に対応しているメールを配信しているサイトを参考にしたところ、ログインは不要で、配信停止の確認ダイアログの確認ボタンを押下しただけでメール配信停止の設定がサービス側に反映されるようにするのが良さそうです。
4.まとめ
現在開発運用に携わっているサービスで配信しているメールが、Gmailの新しいメール送信者のガイドラインに準拠できているかを確認しました。準拠できていな箇所が確認できたので、1月中に対応を進めて2月1日以降の新しいガイドラインの適用に向けて準備を進めたいと思います。また、新しいガイドラインの適用後もPostmaster Toolsでメール配信状況を確認し継続して対策したいと思います。
次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(433)
-
イベント(159)
-
カルチャー(36)
-
デザイン(17)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- Desiner
- DevSecOpsThon
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- アドベントカレンダー
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- 京大ミートアップ
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP