SPFレコードを使用してなりすましを防止し、電子メールの信頼性を向上させる方法
序章
注意深く調整されたSPFレコードは、ドメイン名が不正になりすまされる可能性を減らし、メッセージが受信者に到達する前にスパムとしてフラグが立てられるのを防ぎます。 電子メールのなりすましとは、偽造された送信者アドレスを使用して電子メールメッセージを作成することです。 多くのメールサーバーは認証を実行しないため、簡単に実行できます。 スパムおよびフィッシングメールは通常、このようななりすましを使用して、メッセージの発信元について受信者を誤解させます。 ただし、スプーフィングに対処するための多くの対策が長年にわたって開発されてきました。 SPF 、送信者ID 、 DKIM 、およびDMARCです。 Sender Policy Framework(SPF)は、電子メールのなりすましを検出することでスパムを防止するように設計された電子メール検証システムです。 今日、ほとんどすべての不正な電子メールメッセージには偽の送信者アドレスが含まれています。 アドレスが悪用されている被害者は、評判が低下したり、誤ったバウンスメッセージを整理したり、(さらに悪いことに)IPアドレスがブラックリストに登録されたりするため、結果に苦しむことがよくあります。
SPFは、送信者アドレスの偽造を防ぐための技術的な方法を指定するオープンスタンダードです。 SPFを使用すると、管理者は、ドメインネームシステム(DNS)に特定のSPFレコード(またはTXTレコード)を作成することにより、特定のドメインに代わってメールを送信できるホストを指定できます。 メールエクスチェンジャーはDNSレコードを使用して、特定のドメインからのメールが、そのドメインの管理者によって認可されたホストによって送信されていることを確認します。
利点
DNSゾーンファイルにSPFレコードを追加することは、スパマーがドメインをスプーフィングするのを防ぐための最良の方法です。 さらに、SPFレコードは、スパムとしてフラグが立てられたり、受信者のメールサーバーによって返送されたりする正当な電子メールメッセージの数を減らします。 残念ながら、すべてのメールプロバイダーがSPFレコードをチェックするわけではないため、SPFレコードは100% e有効ではありません。 ただし、多くの場合はそうです。そのため、受け取るバウンスバックの量が大幅に減少していることに気付くはずです。
SPFレコードの例
SPFレコードはドメインのDNSゾーンファイルにTXTレコードとして追加され、ドメインに対して承認されたSMTPサーバーを識別します。
TXT @ "v=spf1 a include:_spf.google.com ~all"
DigitalOcean DNS Manager を使用している場合は、必ずSPFレコードを引用符で囲んでください。 次の表に、SPFレコードの例のさまざまなコンポーネントの説明を示します。
コンポーネント | 説明 |
---|---|
TXT | DNSゾーンレコードタイプ。 SPFレコードはTXTレコードとして書き込まれます |
@ | DNSファイルでは、「@」記号は「現在のドメイン」を表すために使用されるプレースホルダーです。 |
v = spf1 | SPFバージョン1を利用して、TXTレコードをSPFレコードとして識別します |
a | ドメインのAレコードで識別されたホストに電子メールの送信を許可します |
含む: | ドメインに代わってgoogle.comからメールを送信することを承認します |
〜すべて | このリストはすべて包括的であり、他のサーバーが電子メールを送信することは許可されていないことを示します |
SPFレコードのコンポーネント
SPFレコードは、SPFバージョン番号と、それに続く(i)メカニズム、(ii)修飾子、および(場合によっては)(iii)修飾子で構成される文字列で構成されます。 SPFクライアントは、バージョン文字列で始まらないTXTレコードを無視します "v=spf1 ..."
.
SPFレコードは、0個以上のメカニズムを定義する場合があります。 メカニズムを使用して、ドメインの許可されたアウトバウンドメーラーとして指定されたホストのセットを記述することができます。 次のリストは、SPFレコードに含まれる一般的なメカニズムです。
all | ip4 | ip6 | a | mx | ptr | exists | include
メカニズムには、次の4つの修飾子のいずれかをプレフィックスとして付けることができます。
修飾子 | 説明 |
---|---|
+ | 合格=アドレスはテストに合格しました。 メッセージを受け入れます。 例: “v = spf1 + all” |
– | (ハード)失敗=アドレスはテストに失敗しました。 準拠していない電子メールをバウンスします。 例: “v = spf1-all” |
~ | ソフト失敗=アドレスはテストに失敗しましたが、結果は確定的ではありません。 非準拠のメールを受け入れてタグ付けします。 例: “v = spf1〜all” |
? | ニュートラル=アドレスはテストに合格または不合格ではありませんでした。 何でもします(おそらくメールを受け入れます)。 例: “v = spf1?all” |
修飾子が含まれていない場合、 +
修飾子が暗黙指定されます。
SPFレコードは、2つの修飾子のうちの1つを定義することもできます。 または、修飾子はまったくありません。 ただし、各修飾子は1回しか表示できません。
redirect | exp
SPFレコードは、2パスプロセスで評価されます。最初に、すべてのメカニズムと修飾子が評価されます。 次に、すべての修飾子が評価されます。
- メカニズムは左から右に評価されます。
- 修飾子は2回目のパスで評価され、レコードのどこにでも出現する可能性があります。
メカニズム
機構 | 説明 |
---|---|
すべて | すべてのローカルIPとリモートIPに一致し、SPFレコードの最後に配置されます。 例: “v = spf1 + all” |
ip4 | 単一のIPv4アドレスまたは許容可能なIPv4アドレス範囲を指定します。 プレフィックス長が含まれていない場合は、/32のマスクが想定されます。 例: “v = spf1 ip4:192.168.0.1/16 -all” |
ip6 | ip4にも同じ概念がありますが、明らかに、代わりにIPv6アドレスを使用します。 プレフィックス長が指定されていない場合は、/ 128が想定されます(個々のホストアドレスを選択します)。 例: “v = spf1 ip6:1080 :: 8:800:200C:417A / 96 -all” |
a | DNSAレコード内のすべてのIPを指定します。 例: “v = spf1 a:domain.com -all” |
mx | 各ホストのMXレコードのすべてのAレコードを指定します。 例: “v = spf1 mx mx:domain.com -all” |
ptr | 各ホストのPTRレコードのすべてのAレコードを指定します。 例: “v = spf1 ptr:domain.com -all” |
存在する | SPF定義の例外として通常選択される1つ以上のドメインを指定します。 クエリは、提供されたドメインで実行されます。 結果が見つかった場合、一致が発生します。 例:「v = spf1exists:domain.com-all」 |
含む | 許可されたドメインである他のドメインを指定します。 例: “v = spf1 include:outlook.microsoft.com -all” |
「すべての」メカニズム3>
The all
メカニズムは通常、SPFレコードの最後にあります。 接頭辞として修飾子が付きます。例:
例 | 説明 |
---|---|
“v = spf1 mx -all” | ドメインのMXホストがドメインにメールを送信できるようにし、他のすべてのホストを禁止します。 |
“v = spf1-all” | ドメインはメールをまったく送信しません。 |
“v = spf1 + all” | このSPFは、電子メールの送信を許可されているホストを制限しないため、役に立ちません。 |
修飾子
修飾子はオプションであり、修飾子はレコードごとに1回だけ表示できます。 不明な修飾子は無視されます。
「redirect」修飾子は、照会を別のドメインに送信します。
redirect=example.com
つまり、 example.com のSPFレコードは、現在のドメインのSPFレコードを置き換えます。 リダイレクト修飾子は、同じレコードを複数のドメインに適用したい場合に役立ちます。 例えば:
ny.yourdomain.comのゾーンファイルのサンプルエントリ: | TXT @ “v = spf1 redirect = _spf.yourdomain.com” |
sf.yourdomain.comのゾーンファイルのサンプルエントリ: | TXT @ “v = spf1 redirect = _spf.yourdomain.com” |
am.yourdomain.comのゾーンファイルのサンプルエントリ: | TXT @ “v = spf1 redirect = _spf.yourdomain.com” |
_spf.yourdomain.comのゾーンファイルのサンプルエントリ: | TXT @ “v = spf1 mx:yourdomain.com -all” |
わかりやすくするために、「リダイレクト」修飾子はレコードの最後の用語として表示することをお勧めします。
「exp」修飾子は、SPFレコードに説明を設定します。
exp=[macro-string]
SPFクエリでFAILの結果が生成された場合、説明がクエリされ、説明文字列が不適合ユーザーに詳細情報を提供します。 説明は通常、SPFログに記録されます。 例:exp=spf-error。 SPFパブリッシャーは、送信者に表示される説明文字列を指定できます。 このようにして、ISPは、不適合なユーザーを、詳細な手順を提供するWebページに誘導できます。
すべてを一緒に入れて
他のDNSサーバーで公開されているSPFポリシーに対して受信メールを評価するためにDNSサーバーにSPFレコードは必要ありませんが、ベストプラクティスはDNSサーバーにSPFレコードを設定することです。 SPFレコードを設定すると、他の電子メールサーバーがSPFフィルタリングを使用して(メールサーバーで機能が利用可能な場合)、ドメインに関連付けられている可能性のある偽装または偽造された電子メールアドレスからの受信電子メールから保護できます。 SPFレコードがより広く実装されると、スプーフィングされた電子メールメッセージを識別するのにSPFフィルタリングがより効果的になります。
いつものように、SPFレコードの設定についてサポートが必要な場合は、以下の質問を提起して、DigitalOceanコミュニティに支援を求めてください。