Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

ドメインにSPF、DKIMを設定してSalesforceから送信するメールから「経由」を外す

はじめに

Salesforceからメールを送信する場合、メールアクションやリストメールによる送信を行うことはよくあると思います。
しかし、「なりすましメール」と判定されないように気をつけなければなりません。

「なりすましメール」は、攻撃者がメールの差出人(From)を知り合いや信用できる人、または実在する機関のものに変更し、受信者をだましてリンクのURLや添付ファイルにアクセスさせるものです。 ent.iij.ad.jp

通常、会社のアドレスからメールを送信する場合、会社が設置したメールサーバを通じてメールを送信しますので正しく受信されるはずです。
しかしSalesforceサーバを介して会社のアドレスを差出人としたメールを送る場合、外部からは「Salesforceのサーバから別のドメインのメールが送られている」と見えるため、「なりすましメール」と判定される場合があります。

これを避けるため、Salesforce側では「SPF(Sender Policy Framework)」「DKIM(DomainKeys Identified Mail)」の設定方法を案内しています。
SPFでは「このドメインのアドレスを差出人としたメールはSalesforceサーバを介することもある」ことを示すことで、DKIMでは送信メールの電子署名で「なりすましメール」ではないことを示します。

ここでは、Salesforceサーバを介して自分/会社が保有するドメインからメールを送る際のSPF、DKIMの設定方法、及びメールの見え方を記載します。

なお、今回はSales Cloud、Service Cloudが対象です。Marketing Cloud系製品(旧Pardot含む)等は扱いません。

実際にSPF、DKIMを設定してみる

準備

まずは独自ドメインのメールの送受信ができる環境を作る必要があります。
今回は検証ができればいいので、以下のブログを参考にZoho MailのFreeプランを選びました。 yoshidashingo.hatenablog.com

メール送受信用ドメインはサブドメインをつけて mail.markhammer.net にします。
メール送受信ができるようになった時点でのDNSサーバの状況は以下です。

  • SPF
    • mail.markhammer.net. 3600 IN TXT "v=spf1 include:zoho.jp ~all"
  • DKIM
    • なし

SPFレコード設定

ここからヘルプを参考にSalesforceサーバをSPFレコードに追加します。
追加後のSPFレコードは以下になります。

mail.markhammer.net. 3600 IN TXT "v=spf1 include:zoho.jp include:_spf.salesforce.com ~all"

SPFレコード自体はテキスト編集で変更できますが、正しく変更できているか(スペースの抜けなどがないか)はチェックできないので、以下のようなSPFチェッカーで確認することをお勧めします。 mxtoolbox.com

DKIM設定

DKIMはSalesforce側の設定とDNSサーバの設定両方必要になります。

Salesforce側の設定その1
  • 設定|DKIM鍵 より「鍵を新規作成」をクリック
  • 以下設定を行い、「保存」をクリック
    • 鍵サイズ:1024ビット/2048ビット
      • 注意書きの通り、業界固有のセキュリティ規制またはメール受信者の制限を考慮する必要があります。セキュリティ強度が高いのは2048ビットです。
    • セレクタ、代替セレクタ:DKIM鍵を識別する一意の名前。何でもいいですが、既存のDKIM鍵があるドメインの場合は被ってはいけません。またセレクタと代替セレクタの名前も被ってはいけません。
    • ドメイン:DKIM鍵を設定するドメイン。今回の場合は markhammer.net で設定します。
    • ドメイン一致:正確なドメインのみ・ドメインのサブドメインのみ・正確なドメインとサブドメイン の中から選びます。
      • 正確なドメインのみ:「ドメイン」項目で設定したドメインのみに適用。今回の場合は @markhammer.net のみに適用され、 @mail.markhammer.net には適用されません。
      • ドメインのサブドメインのみ:「ドメイン」項目で設定したドメインのサブドメインのみに適用。今回の場合は @mail.markhammer.net のようなサブドメインがついたアドレスのみに適用され、 @markhammer.net には適用されません。
      • 正確なドメインとサブドメイン:今回の場合は @markhammer.net@mail.markhammer.net 両方に適用されます。
    • なお、一度保存すると「ドメイン一致」以外の項目は編集できません。それ以外の項目を編集したい場合は新規作成することになります。念のため使わない方は削除しましょう。
  • 鍵を作成後、しばらく待つとDKIM鍵適用のためのCNAMEレコードが表示されます。なおDNSサーバ側にCNAMEレコードが追加されるまで「有効化」ボタンは押せません。

ここまで完了したSalesforce設定画面

DNSサーバ側設定

上記でSalesforce側に表示された「CNAME レコード」と「代替 CNAME レコード」を登録します。

Salesforce側の設定その2

CNAMEレコードの追加がSalesforce側から確認できるとDKIM鍵を有効化できるようになるので「有効化」ボタンを押します。

有効化後の設定画面

注意事項

DNSレコードの追加・更新はDNSキャッシュの更新が必要となる場合があるため、設定から反映を確認するまで一定の時間がかかる場合があります。
DNSキャッシュについては以下のページも参照ください。 www.nic.ad.jp

設定前後の受信メール画面

以下、全てブラウザでのgmail上の表示です。

SPF、DKIMなし

差出人をgmailアドレスにしてSalesforceからメールを送信した場合、当然SPF、DKIM設定はできません。
ここでは「同じアカウントからのメールだがgmailのものではない」と判定されたのでなりすましメールの警告メッセージが表示されます。

SPF、DKIMなしのメール受信時画面

SPFあり、DKIMなし

DNSにてSPFレコードのみ設定した場合、Salesforceサーバから送信したことを示す「経由」は表示されます。

SPFあり、DKIMなしのメール受信時画面

SPF、DKIMあり

さらにDKIMも設定完了した場合は「経由」も消え、画面上からではSalesforceサーバから送られたことが分からなくなります。*1

SPF、DKIMありのメール受信時画面

おわりに

ちなみにZoho Mail側では「SPFあり、DKIMなし」の状態でもZoho Mailの設定を緩和しなければSalesforceサーバからのメールを受信できませんでした。
Salesforceサーバを介してメールを送信する場合は、迷惑メール判定や受信拒否を受けないようSPF、DKIMの設定を行うことをお勧めします。

*1:さすがにメールヘッダを見ればSalesforceサーバから送られたことは分かります。