こんにちは、アド・プラットフォーム開発部マネージャーの杉野です。
2014年に新卒でエンジニアとして入社してキャリアを積み、現在はDOOH(屋外広告)チームでシステム設計やメンバーのタスク管理等を行っています。
今回はGENIEEで運営しているサービスに関する話題として、システム上重要な位置を占める電子メールについて書かせていただきます。
Contents
1 システムからメールを送信するということの難しさ
2 SPFとDKIM
3 設定のうっかりミス防止のために
1 システムからメールを送信するということの難しさ
カジュアル・プライベートなコミュニケーションではLINEやWeChat、Messengerなどのチャットツールが主流になってきているとはいえ、業務分野のコミュニケーションではまだまだ電子メールが駆逐されるには時間がかかりそうな昨今、GENIEEのシステムでも電子メールは大変多くの領域で使用されています。具体的に挙げてみますと、マーケティング領域のプロダクトではエンドユーザーさんに送信する種々のお知らせはまだまだメールが主体となっていますし、私が現在所属しているDOOH部門では、広告枠の購入通知やコンテンツ審査の結果など重要な内容がシステムからメールで届くようになっています。
このように業務システム上とても重要なメール送信機能ですが、同時にとても厄介な側面を有しています。皆さんご存知のスパムメール問題です。大手のメールサービス(Gmail、Outlook等)やキャリアメールは、様々な基準でスパムとみなしたメールを容赦なく叩き落とす(迷惑メールボックスにすら入らない)のですが、この判定にひっかかってしまうと、送信側から見ると送信処理自体は成功しているのになぜか送信先にメールが届いていない、という状況に陥ります。
エンドユーザーさんに送られるべきマーケティングメールや、システム利用者様へシステムからの重要な通知メールが届かないとなれば、それは重大なインシデントなので絶対に避けなければなりません。これを避けるためにメール送信部分のプログラムにも確認の必要な箇所はいくつかありますが、特に見落しやすい部分として、DNSでの設定があります。
2 SPFとDKIM
メールの送信元が詐称されていないかを確認するためのDNSの仕組みとして、SPFおよびDKIMがあります。
SPFは、メールの送信元サーバのIPアドレスがどうあるべきかを規定します。例えばDOOHシステムにおけるSPFの設定は以下のようになっています(ドメイン名およびIPアドレスはダミー)。
dooh-geniee.jp. TXT v=spf1 ip4:123.45.67.89 -all
これは、「送信元ドメインがdooh-geniee.jpであるメールアドレスは、送信元のIPアドレスが123.45.67.89であれば受信し、それ以外は全て受信を拒否して欲しい」という設定です。このように設定しておくことで、送信先であるメールサービスに対し、dooh-geniee.jpは(送信元のIPアドレスが123.45.67.89であれば)送信元として信頼できるということを伝えることができます。
DKIMは、メール送信時にメールのヘッダに電子署名を施し、その署名を検証するための公開鍵をDNSのレコードに公開しておくことで、送信先であるメールサービスに対し「電子署名の検証が通ったならば、それは確かに我々が送信したものだ」ということを伝える仕組みです。性質上鍵ペアを事前に作成しておく必要があります。具体的なDNSの設定値は公開鍵をBase64化したものであるので省略しますが、こちらも正しく設定し、メール送信時に対となる署名鍵で署名を施す設定をしておけば、送信元としての信頼性が向上します。
これらの設定は、メール送信自体を外部サービス(Amazon SESやSendGrid等)に委任していても必要となります。外部サービスに委任している場合は、設定が必要なレコードの値や、DKIMのための鍵ペアなどはサービスの方で用意してくれるため、その設定を正しく管理下のDNSに登録すればOKです。
3 設定のうっかり防止のために
これらの設定について問題となってくるのは、特にシステム移行時です。メールを送信するサーバのIPアドレスが変更となった、サービスブランドの刷新のためにドメイン名を変更した等のタイミングで、DNSに登録した情報と実際の状態が乖離を起こすと、それまで送信されていたメールが届かなくなってしまうことになります。このようなことを防止するためにも、「メールが関わるシステムにおいては、ドメイン名やIPアドレスの変更が入る場合は、SPFやDKIMまわりのレコードも確認する」という管理体制を作る必要があるでしょう。
昨今はインフラまわりの設定はクラウドに投げてしまうことも多いですが、今一度、システムの円滑な稼働に必要なインフラ設定をしっかり整理しておくのも、障害を未然に防ぐ観点では大切な仕事です。
正直な話、メール(SMTP)に代わるメッセージプロトコルが早く標準化して欲しいですね。
一緒に働く仲間募集中!
【ジーニーのリクルートサイトはこちら】