CentOS メールサーバー構築 pypolicyd-spf

(最終更新日時:2012-10-31 19:10:52)
迷惑メール対策として、SPF(Sender Policy Framework)によるドメイン認証があります。
当サイトでも、SMTPサーバー Postfix のポリシーサーバー機能でSPFドメイン認証機能を実装しています。

以前は、C言語版のpolicyd-spf-fsで構築していましたが、バージョンが古くなったことや低機能だったこともあり、Python版の pypolicyd-spf に変更しました。

事前準備

関連パッケージとして、下記を事前にインストールします。
  1. PyDNS : DNS問い合わせを行うPythonモジュール
  2. pyspf : SPFを実装したPythonモジュール

DNS問い合わせを行うPythonモジュール:PyDNSをインストールします。
# cd /usr/local/src
# wget http://pypi.python.org/packages/source/p/pydns/pydns-2.3.6.tar.gz
# tar xzvf pydns-2.3.6.tar.gz
# cd pydns-2.3.6
# python setup.py install 2>&1 | tee install.log
(※)下線部は 2012/10/31 現在のPython2系最新安定バージョンです。

SPFを実装したPythonモジュール:pyspfをインストールします。
# cd /usr/local/src
# wget http://pypi.python.org/packages/source/p/pyspf/pyspf-2.0.7.tar.gz
# tar xzvf pydns-2.3.6.tar.gz
# cd pydns-2.3.6
# python setup.py install 2>&1 | tee install.log
(※)下線部は 2012/10/31 現在のPython2系最新安定バージョンです。

ダウンロード

https://launchpad.net/pypolicyd-spf から次のファイルをダウンロードします。
Latest version is 1.1pypolicyd-spf-1.1.tar.gz
 (※)下線部は 2012/10/31 現在の最新安定バージョンです。

インストール

/usr/local/srcディレクトリでアーカイブを展開し、インストールを行います。
# cd /usr/local/src
# tar xzvf ダウンロード先/ 1.1.tar.gz
# cd pypolicyd-spf-1.1
# python setup.py install 2>&1 | tee install.log

設定

pypolicyd-spfの設定を行います。
# # 後になって設定を変更する場合のため、コメント付きの設定ファイルを利用します
# cp /usr/local/src/pypolicyd-spf-1.1/policyd-spf.conf.commented /etc/postfix/policyd-spf.conf
当サイトでは、デフォルトの設定のまま運用していますが、必要に応じ /etc/postfix/policyd-spf.conf を編集してください。

設定内容ついては、近藤城さんが postfix で postfix-policyd-spf-python を使ってSPF認証する で日本語のわかりやすい解説をされています。

Postfixに、pypolicyd-spfと連携する設定を行います。
# vi /etc/postfix/master.cf
----------(vi ここから)----------
       :     (以下を追加します)
#
# ====================================================================
# SPF Policy Daemon
# ====================================================================
policy-spf unix -       n       n       -       -       spawn
      user=nobody argv=/usr/bin/python /usr/bin/policyd-spf /etc/postfix/policyd-spf.conf
       :
----------(vi ここまで)----------

# vi /etc/postfix/main.cf
----------(vi ここから)----------
       :     (check_policy_serviceをsmtpd_recipient_restrictionsのrejectチェックの下に追加します)
policy-spf_time_limit = 3600s                                 # 3600秒後にpolicy-spfのプロセスをkillします
smtpd_recipient_restrictions =
       :
  reject_unauth_pipelining
  check_policy_service unix:private/policy-spf
       :
----------(vi ここまで)----------

# service postfix restart                                     # Postfixを再起動します
※下線部をmaster.cfで設定した名称に合わせます

フィードバック

記事の内容についてのご質問、ご指摘、その他ご意見等は、Weblog/Twitter にて受け付けております。

System House ACT Weblog 内記事 : SPF Policy Daemon pypolicyd-spf

トラックバックまたはコメントにてお寄せください。

Twitter では .@systemact 宛につぶやいてください。
また、こちら から、この記事についてつぶやくことができます。
a System House to build an Accounting system by the Computer Technology