Oracle Linux 6.2 のDNSにMXレコードとSPF宣言を設定

Oracle Linux 6.2 にメール・サーバーを構築する最終章。ここまででメール・サーバーは構築できたので、これをDNSに登録して公開しよう。これによって@(アットマーク)以下がドメイン名だけのメールが指定のメール・サーバーに届くようになる。以下は Oracle Linux 6.2 で設定する方法だが、Red Hat Enterprise Linux (RHEL) / CentOS / Scientific Linux でも同様だろう。

zuluというメール・サーバーがドメイン名宛てのメールを処理する設定は以下のとおり。10というのは優先度を表すが、今回はメール・サーバーが1台しかないので何を設定しても関係ない。

設定を再読込みすると、TTLが切れ次第、メールは新しいメール・サーバーに届くようになる。

念のため、構築したメール・サーバーが不正中継を行わないようにに正しく設定されているかを RBL.JP: 第三者中継チェック で試してみよう。不合格になった場合はすぐにメール・サーバーを停止し、メール・サーバーの設定を見直そう。

以上でDNSへの登録は完了だが、SPF対応もそれほど難しくないので合わせて実施しておこう。メールのFrom:は送信者が好き勝手に設定できてしまうという牧歌的仕様になっており、私が例えば From: jobs@apple.com でメールを送ることは簡単にできる。しかし、SPF対応した受信メール・サーバーであれば「この From: jobs@apple.com のメールは認可された送信メール・サーバーか送られたのか?」をチェックし、認可されたメール・サーバーから送られていないメールは “なりすまし” と判断する。私が From: jobs@apple.com を勝手に使うことは簡単でも、認可されたメール・サーバーを勝手に使うことは難しいという論理だ。つまり、From:にrewse.jpが設定されたメールを送信することが可能なメール・サーバーのリストを作り、そのサーバーをSMTP認証などにしておけば、他人がrewse.jpというドメイン名でメールを勝手に送れなくなるということだ。

このリスト(SPF宣言)はDNSのTXTレコードに記述する。以下ではrewse.jpを名前解決したIPアドレスのサーバーのみ認可し、それ以外は拒否している。

+(プラス)は許可、-(マイナス)は拒否を表し、これを省略すると+になる。また、aの後を省略するとドメイン名と同じになるので、つまり上記は以下のようにも書け、小規模環境であればこの一文が標準的に使える。

複眼中心: Oracle Linux 6.2 の Postfix 2.6.6 でSMTPサーバーを構築 のようにPostfixにrelayhostを設定している場合、SPF対応した受信メール・サーバーが確認するのはこのrelayhostが認可されているかどうかなので、relayhostもSPF宣言に追加することを忘れてはならない。私は relayhost = [mail.asahi-net.or.jp] を指定しているので、asahi-net.or.jpをインクルードしている。これにより、SPF対応した受信メール・サーバーはrewse.jpのSPF宣言に加えてasahi-net.or.jpのSPF宣言も確認する。(以下の設定は実際には問題があることを後述する)

SPF宣言が正しく設定できたかどうかはdigで確認できる。asahi-net.or.jpがどう設定されているかを見てみよう。

spf-01.asahi-net.or.jpがさらにインクルードされていた。?(クエスチョン)は許可も拒否もしない中立で、どう処理するかは受信メール・サーバーに任される。つづいてspf-01.asahi-net.or.jpを見てみよう。

202.224.39.192/27と202.224.39.40が認可されているようだ。ここまでのインクルード部分を展開すると以下のようになる。

-allの前に?allが識別されてしまい、-allを設定している意味がない。また、多くの受信メール・サーバーは?+と同じという消極的判断をするので、このままではSPF宣言をしている意味がほとんどない。なので、インクルードを以下のように書くことで?allを排除する設定が正しい。

SPF宣言が正しく設定できたかどうかは Sendmail: SPFレコードチェックツール で確認できる。

コメントを残す