PR

FreeBSD Sendmail Setup パート6

FreeBSD
記事内に広告が含まれています。

今日はとってもうれしいことが起こりました。サッカー日本代表がやってくれました!強豪ドイツに続き、無敵艦隊スペインを撃破してグループリーグを1位通過しました。あのコスタリカとの一戦は何だったんだ? と思わせる素晴らしい試合を見せてくれました。昨夜は対スペイン戦のために朝方4時頃に起きようかと思っていたら、2時頃から2時間前カウントダウン番組が始まって、結局徹夜になってしまいました。大金星に沸いて日本が揺れたかと思ったら、自室でテレビを見ていた嫁さんが騒いでいたようでした:) とにもかくにも、おめでとうございます!

_dmarc DNS record

前回までにメール送信における sendmail の設定を見てきました。メールヘッダを外向けに統一して、暗号化を行えるようにし、SMTP AUTH をパスさせて、DKIM 署名を付け、Virus チェックを行うようにしました。これで、メールアドレスを詐称して送ろうとすると DKIM ヘッダが無いか、DKIM チェックは Fail となります。でも、それだけ?DKIM チェックが Fail になったり、DKIM チェックに通らなかったメールが普通に見えちゃダメじゃないですか?そうなんです。受け取った側に DKIM や SPF チェックが失敗したときにどうするかを DNS を介して送信元から指定する必要があるのです。これが DMARC です。ですので、送信側サーバー側で何かを行う必要はありません。外向けの DNS に DKIM 同様に TXT レコードを追加するだけです。逆に DMARC なしでは DKIM が fail になるだけなのです。DMARC の DNS 設定はこんな感じになります。

DMARC は何を見ているかというと、DKIM と SPF の検証結果を見ています。いずれも pass であればよいのですが、pass 以外の値がいずれか、あるいは両方に記録されると DMARC の DNS の指示通りに受信側は処理します。勿論 DMARC をサポートしているメールプラットフォームでの話です。DMARC をサポートしていなければ、普通にメールボックスにメールが届きます。ですので、DMARC は送信側と受信側が協力して初めて実現できるなりすまし防止の技術なのです。とはいうものの、お互いの管理者が示し合わせて何かを行うわけでもありません。DNS に情報を公開することと、公開された情報をに基づいた処理を行うことで実現するようになっています。上記の例では quarantine となっていますので、受信側はメールを受信するが、迷惑メールなどの別のフォルダに隔離されることになります。勿論 DMARC をサポートしていればです。DMARC はこれまで受信できていたメールをはじく処理を行うことになるので、この DNS レコードを設定しても、段階的に処理を厳格にしてゆくことができるようになっています。特にサーバ側ですることは何もないので DMARC のオプションに関して少しだけ書いておきたいと思います。

DMARC は RFC となっており、どなたでも参照できます。RFC 番号は RFC7489 で標準化されています。詳細はこの RFC を見てもらう事でわかると思いますが、いくつかのオプションをご紹介いたします。RFC7489 の 11.4 節の DMARC Tag Registry に有効なキーが書かれています。そして 6.3 節の General Record Format あたりに各キーが取りうる値が書かれています。もっとも重要なキーが ‘p’ です。これが ‘none’ の場合は DKIM や SPF の結果いかんにかかわらず、特に何もしないことを意味します。この状態でテストを続けて、確証が持てるようになってくると、quarantine や reject とより厳格な処理を指定してゆくことができます。’rua’ や ‘ruf’ では DMARC の状況を受信側からドメイン所有者や管理者へメールでレポートしてもらう事ができます。そして ‘v’ で DMARC のバージョンを指定できます。このデフォルトはありませんが必要なオプションなので、現状必ず DMARC1 ですが、将来的に規格に変更があるなどすると、DMARC2 や DMARC3 などが出てくるかもしれません。

spf DNS record

次に SPF の DNS はこんな感じになっています。

SPF も RFC になっており、RFC7208 としてどなたでも見ることができます。上記の例ですと、非常に簡単で、’v’ は SPF のバージョンで、これも現状 ‘spf1’ しかありません。将来新規格が出ると ‘spf2′ などが出てくるかもしれません。’a’ はこのマシン名の IP アドレスであれば OK という意味です。マシン名ではなく IP アドレスで指定したい場合は ‘ip4’ あるいは ‘ip6′ を使用します。特にネットワークアドレスレンジで指定したい場合はこちら一択です。’mx’ はこのドメインの DNS MX レコードに登録されている IP アドレスであれば OK ということになります。最後の ‘all’ はそれ以外という意味になります。ですので、’all’ は必ず右端に現れます。’all’ の前の ‘~’ は Soft Fail という意味です。ですので、xxx.bbb.ne.jp のアドレスか、mx に登録されているアドレスであれば SPF チェックはパスするという意味になります。大きな組織でたくさんのメールサーバがあるような場合はこの DNS レコードが include 文でネストしている場合もあります。今回お試しで立ち上げているメールサーバは必ず ISP のメールサーバを経由してメールを送出しますので、SPF レコードに IP アドレスが含まれている必要はありません。

もし DMARC をまだ導入していないのであれば、まずすべきは DMARC の DNS を設定してみることだと思います。当然 ‘p’ や ‘sp’ は ‘none’ で ‘rua’ や ‘ruf’ に自分のメールアドレスを書いておけばよいと思います。これで、世間でどれだけ自ドメインを騙ったメールが流通しているかがレポートされます。自分のサイトから偽メールが送出されるわけではないので、気付かないだけかもしれません。でも、これを設定する事で、全ての DMARC をサポートしているサイトから偽メールのレポートが上がってきます。もしかすると、愕然とするかもしれません 🙂 アドレスを騙ってメールを送ろうとするものは、まず間違いなくこの DMARC の DNS 情報があるかどうかを見るはずです。実際には何の設定もされていなくても、DMARC の設定があることだけで、騙るアドレスの候補から外してくれるかもしれません。

DMARC の導入状況は徐々に増えてきたとは言うものの、まだまだこれからというのが実情のようです。”DMARC 状況” などのキーワードを過去一か月でググってみると沢山記事が出てきます。感覚では国内の大きな企業で50%程度、中小も含めると20%程度くらいの普及率ではないかと思われます。書いてあることを読めば何も難しいことはないので、もっと普及させて不要なトラフィックを撲滅して速いインターネットを取り戻そうじゃありませんか。

以下広告


コメント