2013年3月28日木曜日

Postfix で SPF 認証に対応する方法

サイオステクノロジー 鎌田です。今回は Postfix で SPF 認証に対応する方法について紹介したいと思います。

SPF でググると、一番トップに来るのは Sun Protection Factor (紫外線防御指数) の話が出てきますが、今回の話はもちろん Sender Policy Framework のことです。

SPF を一言で表すとなりすましを防止する技術の一つですが、詳細な説明は以下の URL が詳しいです。

なりすましメール撲滅に向けたSPF(Sender Policy Framework)導入の手引き
http://www.ipa.go.jp/security/topics/20120523_spf.html

では、続いて Postfix に SPF 認証を設定する方法を紹介します。

送信側の設定

送信側の設定としては、ネームサーバに SPF 認証に必要な TXT レコードを追加するだけですので、Postfix はあまり関係がありません。設定方法は以下の URL を参考にすると良いかと思います。

SPFレコードの定義
http://www.atmarkit.co.jp/fsecurity/special/82senderid/sender103.html

受信側の設定

受信側での設定方法として、Perl で動く postfix-policyd-spf-perl を使う方法と、Python で動く pypolicyd-spf を使う方法の二種類あります。

postfix-policyd-spf-perl を使う方法

RHEL では提供されておらず、EPEL で提供されているパッケージを使用するため、まずは EPEL のリポジトリをインストールします。以下の URL から epel-release パッケージをインストールします。

EPEL
http://fedoraproject.org/wiki/EPEL

次に、postfix-policyd-spf-perl の動作に必要なパッケージをインストールします。

# yum install perl-NetAddr-IP perl-Mail-SPF perl-Sys-Hostname-Long

次に、postfix-policyd-spf-perl をインストールします。

postfix-policyd-spf-perl
https://launchpad.net/postfix-policyd-spf-perl/

上記 URL から postfix-policyd-spf-perl-2.010.tar.gz をダウンロードし、以下の手順でインストールします。今回は /usr/local/lib 配下に置きました。

# tar -xzf postfix-policyd-spf-perl-2.010.tar.gz
# cd postfix-policyd-spf-perl-2.010
# cp postfix-policyd-spf-perl /usr/local/lib/policyd-spf-perl

次に、Postfix 側の設定として以下の設定を追記します。

  • /etc/postfix/master.cf
    policy     unix  -       n       n       -       0       spawn
      user=nobody argv=/usr/local/lib/policyd-spf-perl
  • /etc/postfix/main.cf
    policy_time_limit = 3600
    # check_policy_service unix:private/policy を追記
    smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        check_policy_service unix:private/policy

以上で設定が完了です。Postfix を再起動すると、受信するメールに対して SPF 認証が実施されます。

# service postfix restart

pypolicyd-spf を使う方法

pypolicyd-spf を動作させるのに必要な pydns と pyspf をインストールします。

pydns
http://sourceforge.net/projects/pydns/
pyspf
http://sourceforge.net/projects/pymilter/

上記それぞれの URL から pydns-2.3.6.tar.gz と pyspf-2.0.7.tar.gz をダウンロードし、以下の手順でインストールします。

# tar -xzf pydns-2.3.6.tar.gz
# cd pydns-2.3.6
# python setup.py install
# cd
# tar -xzf pyspf-2.0.7.tar.gz
# cd pyspf-2.0.7
# python setup.py install

次に、pypolicyd-spf をインストールします。

pypolicyd-spf
https://launchpad.net/pypolicyd-spf

上記の URL から pypolicyd-spf-1.1.tar.gz をダウンロードし、以下の手順でインストールします。

# tar -xzf pypolicyd-spf-1.1.tar.gz
# cd pypolicyd-spf-1.1
# python setup.py install
# cp policyd-spf.conf /etc/postfix/

pypolicyd-spf の設定は policyd-spf.conf を通して設定しますが、今回はデフォルトの設定とします。

次に、Postfix 側の設定として以下の設定を追記します。

  • /etc/postfix/master.cf
    policyd-spf unix -       n       n       -       0       spawn
      user=nobody argv=/usr/bin/policyd-spf /etc/postfix/policyd-spf.conf
  • /etc/postfix/main.cf
    policyd-spf_time_limit = 3600
    # check_policy_service unix:private/policyd-spf を追記
    smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        check_policy_service unix:private/policyd-spf

以上で設定が完了です。Postfix を再起動すると、受信するメールに対して SPF 認証が実施されます。

# service postfix restart

0 件のコメント:

コメントを投稿