Gmail 送信者ガイドライン準拠奮闘記 ～ワンクリックで登録解除 ボタンがでるまで～



メール送信者のガイドライン
https://support.google.com/a/answer/81126?hl=ja

上記のガイドラインで書かれているように実装してみましたが、
まったくボタンが表示されなかったので、

いろいろ試したところ、なんとかボタンが表示されるようになったので、ご参考まで・・・


> 簡単に登録解除できるようにする
> 受信者がメールの配信登録を簡単に解除できる方法を常に用意してください。ユーザーがメールの購読を停止できるようにすれば、開封率、クリック率、送信効率を上げることができます。ワンクリックでの退会に対応すると、ユーザーはメールの受信停止を簡単に行えるようになります。1 日に 5,000 件を超えるマーケティング目的のメールや配信登録されたメールを送信する場合は、ワンクリックでの登録解除に対応する必要があります。
>
> ワンクリックでの登録解除を設定するには、送信メールに次の両方のヘッダーを含めます。

```
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <https://solarmora.com/unsubscribe/example>
受信者がワンクリックで登録解除すると、次の POST リクエストが届きます。

"POST /unsubscribe/example HTTP/1.1
Host: solarmora.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 26
List-Unsubscribe=One-Click"

詳しくは、RFC 2369 および RFC 8058 の List-Unsubscribe についての記事をご覧ください。
```

上記の通りに実装してみたけど、
メールアドレスの横に、ワンクリック購読解除ボタン（下図）が表示されない！！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3714782/a9ee9ed5-0c09-4699-1463-6e589151f329.png)

なんでだーーーー！！！


ちなみに、ワンクリック購読解除リンクとしては、
Gmail には認識はされているんですが・・・

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3714782/c263da8c-d334-48bf-a8b6-1554259a7cb5.png)

なので、メールヘッダーに追加すべき List-Unsubscribe と 
List-Unsubscribe-Post はあってるんです！！


# 試したこと（その１）
メール送信者ガイドラインに準拠したメールテスト環境を構築

- TLS 暗号化
- SPF 認証
- DMARK 認証
- DKIM 署名

→ これもいるんだけど、まだまだまだ足りない・・・


# 試したこと（その２）
ワンクリック購読解除ボタン（リンク型）のメールヘッダーを調査！！
Opendkim の場合、以下のように、DKIM-Signature を追加する！！

例：
```
SignHeaders Date,From,Reply-To,To,Message-ID,Subject,MIME-Version,Content-Type,List-Unsubscribe-Post,List-Unsubscribe,Feedback-ID
```

→ これもいるんだけど、まだまだ足りない・・・

# 試したこと（その３）
From: で指定するアドレスのドメインを、テストドメインではなく、本番ドメインで検証してみる・・

→ これもいるんだけど、まだ足りない・・・


# 試したこと（その４）
From: で指定したアドレスを実際のメルマガ配信で指定しているアドレスにしてみる・・・

→ これもいるんだけど、あとちょっと足りない・・・

※ なりすまし判定をされてしまうと、ボタンは出ない！！

# 試したこと（その５）
From で指定したアドレスと、smtp.mailfrom など、
実際に、メルマガ配信する際のメールヘッターになるようにする！！！

```
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@hoge.com header.s=default header.b=nUUQsbbb;
       spf=pass (google.com: domain of (メルマガアドレス)@hoge.com designates xxx.xxx.xxx.xxx as permitted sender) smtp.mailfrom=(メルマガアドレス)@hoge.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hoge.com
Return-Path: <(メルマガアドレス)@hoge.com>
Received: from hoge.com (ec2-xxx-xx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. [xx.xxx.xxx.xxx])
        by mx.google.com with ESMTPS id e26-20020aa7825a000000b006e08cf5f5f8si2790007pfn.3.2024.02.16.03.10.58
        for <(テスト用Gmailアカウント)>
        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
        Fri, 16 Feb 2024 03:10:58 -0800 (PST)
Received-SPF: pass (google.com: domain of (メルマガアドレス)@hoge.com designates xxx.xxx.xxx.xxx as permitted sender) client-ip=xx.xxx.xxx.xxx;
Authentication-Results: mx.google.com;
       dkim=pass header.i=@hoge.com header.s=default header.b=nUUQsbbb;
       spf=pass (google.com: domain of (メルマガアドレス)@hoge.com designates xxx.xxx.xxx.xxx as permitted sender) smtp.mailfrom=(メルマガアドレス)@hoge.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=hoge.com
```

→ 出た！！！！！！

# 検証して分かったこと！！！

:::note info
メール送信者ガイドラインに準拠したメールサーバは必須！
:::
:::note info
DKIM-Signature へのヘッダー追加 が必要
→ ガイドラインに書いてよ・・
:::
:::note info
実際にメルマガ配信の実績がある メールアドレスを From: に指定する
→ メルマガ実績のあるアドレスって？？
　→ ガイドライン的には、1日5,000通以上のこと？！
 　 → 適当に作ったテストメールアドレスをFrom: 指定してもダメ・・
:::
:::note info
なりすましメールとならないようにメールサーバの設定が必要
→ 禁止事項として、ガイドラインに書いてよ・・
:::


お疲れ様でした～！！
ふ～、今日は寝れそう・・