📧

メールの信頼性を上げるためにやったことまとめ

に公開

前提条件

バックエンドはLaravel,フロントはVue。
アカウント登録をして使うタイプのサービスなのだが、確認メール等が迷惑メールに振り分けられてしまうことが課題だった。

件名を明確にするため、subjestを追加

具体的には、メール作成のコードに以下を追加した
->subject('件名')

件名は短く簡潔でありながら、メールの内容が一目で分かるように設計した。
スパム的な表現(例:「緊急」「今すぐ」などの過剰な強調語)は排除し、ユーザーの信頼を損なわない工夫を施している。

List-Unsubscribe ヘッダーを追加する

具体的には、メール作成のコードに以下を追加した
->getHeaders()->addTextHeader('List-Unsubscribe', '<' . $unsubscribeUrl . '>')

このヘッダーを追加することで、Gmailなどの主要なメールクライアントが「登録解除リンク」を自動で表示できるようになる。

これにより、ユーザーは簡単に配信停止が可能になる
また、スパム報告の代替手段を提示することで、迷惑メール判定を回避しやすくなる

ワンクリック解除を許可する(List-Unsubscribe-Post)

具体的には、メール作成のコードに以下を追加した
->addTextHeader('List-Unsubscribe-Post', 'List-Unsubscribe=One-Click')
このヘッダーは、対応するメールクライアントが「登録解除リンク」をクリックした際に、追加の確認ステップなしで自動的に配信停止処理を完了させることを許可するものである。

UX向上に加えて、ユーザーが煩わしさを感じることなく登録解除できるため、誤って迷惑メール報告をされる可能性を減らす効果もある。

このヘッダーは、対応するメールクライアントが「登録解除リンク」をクリックした際に、追加の確認ステップなしで自動的に配信停止処理を完了させることを許可するものである。

UX向上に加えて、ユーザーが煩わしさを感じることなく登録解除できるため、誤って迷惑メール報告をされる可能性を減らす効果もある。

replyTo を明示的に指定

具体的には、メール作成のコードに以下を追加した
->from(env('MAIL_FROM_ADDRESS', 'noreply@livehaaack.com'), env('MAIL_FROM_NAME', 'Live Haaack'))

通知メールは返信を想定していないため、replyTo を設定せずに noreply に自動返信される仕様にしていた。しかし、そのままではユーザーに誤解を与える可能性があるため、差出人アドレスを明示的に noreply と指定し、表示名にも「自動送信」であることを明記した。

これにより、ユーザーは返信不要であることを認識しやすくなり、誤送信や混乱を防ぐことができる。

Return-Path の確認

実際に送信されたメールの Return-Path ヘッダーを確認し、以下のようになっていることを確認した:
Return-Path: <bounces+49704216-ff28-aiueo=gmail.com@em5663.aiueo.com>

これは SendGrid にてドメイン認証されたサブドメインであり、SPF・DKIMと連携した信頼性の高いバウンス管理用アドレスである。追加の設定は不要であり、SendGrid 側で正しく制御されている状態である。

SendGrid における SSL 証明の確認

SendGrid の「リンクブランディング(Link Branding)」および「ドメイン認証」機能が有効化されていることを確認した。

Discussion