はじめに
このドキュメントでは、CESホステッドカスタマーのためにシスコが推奨するSPFレコードがどのように機能するかについて説明します。
要件
- DNSの動作に関する基本的な知識
SPFマクロの重要性
シスコが推奨するレコードでは、RFC7208セクション7で定義されているSPFマクロを使用します。このマクロは、CESアプライアンスがSPF検証に合格するために必要なDNSルックアップの量を減らすために使用されます。RFC7208セクション4.6.4によると、SPF検証ごとのDNSルックアップの量は10に制限されるため、このことは重要です。10を超えるDNSルックアップが必要な場合、SPF検証結果はpermerrorになります。これは問題ではない可能性がありますが、より多くのホステッドESAがプロビジョニングされている場合は、より多くのDNSルックアップが必要になります。
各ホステッドESAのIPアドレスをSPFレコードに追加できます。これにより、SPF検証中に追加のDNSルックアップは必要ありません。ただし、この欠点は、新しいESAがプロビジョニングされるか、既存のESAのIPアドレスが変更されるたびに、SPFレコードを変更する必要があることです。シスコが推奨するSPFレコードには、レコードの追加後にユーザによる管理は必要ありません。
SPFレコードの説明
SPFレコードの例を次に示します。
$ dig acme.com txt +short
"v=spf1 exists:%{i}.spf.acme.iphmx.com ~all"
注: このSPFレコードの「acme」部分は、割り当て名と見なされます。CESホステッドクラスタには一意の割り当て名があり、このSPFレコードをDNSに追加する場合は、「acme」の代わりに使用する必要があります。
このSPFレコードでは、マクロ「%{i}」が使用されます。このマクロは、SPF検証が行われるときに接続ホストのIPアドレスに置き換えられる変数として使用されます。たとえば、192.168.0.1が送信側ホストの場合、ホスト名「%{i}.spf.acme.iphmx.com」は「192.168.0.1.spf.acme.iphmx.com」に展開されます。
「exists」メカニズムはRFC7208セクション5.7で定義されており、ホスト名「%{i}.spf.acme.iphmx.com」にDNSのAレコードがある場合に照合されます。たとえば、192.168.0.1が送信側ホストであるとします。ホスト名「%{i}.spf.acme.iphmx.com」は「192.168.0.1.spf.acme.iphmx.com」に展開され、検証するホストは次のDNSルックアップを実行します。
$ dig 192.168.0.1.spf.acme.iphmx.com a +short
127.0.0.2
注:ドメインiphmx.comはシスコが管理します。このため、上記のレコードのように、そのドメインのDNSレコードを追加/削除/変更できるのはシスコだけです。つまり、新しいESAをCESクラスタにプロビジョニングする際に、これらのレコードを追加する必要はありません。これらの記録が追加され、正確であることを確認するのはシスコの責任です。
IPアドレス127.0.0.2が返されたため、existsメカニズムが一致し、SPF検証結果が合格します。
送信元ホストが10.0.0.1であるとします。ホスト名「%{i}.spf.acme.iphmx.com」は「10.0.0.1.spf.acme.iphmx.com」に展開され、検証中のホストは次のDNSルックアップを実行します。
$ dig 10.0.0.1.spf.acme.iphmx.com a +short
$
結果が返されなかったため、existsメカニズムは一致せず、SPF検証結果はsoftfailになります。
追加情報
SPFテクノロジーは、ドメインのメールを中継する権限を与えるホストの量によって複雑になる場合があります。ドメインのメールを中継する権限を持つホストがCESホスト型アプライアンスだけであれば、上記の記録は非常に有効です。それ以外の場合は、必要なすべてのホストを許可するように、提供するSPFレコードを変更する必要があります。
既存のSPFレコードがある場合、「exists:%{i}.spf.acme.iphmx.com」をそのSPFレコードに追加できます。