pypolicyd-spf (SPF Policy Server for Postfix) では、デフォルトで RFC 4408に準拠した Received-SPF (SPF) の形式のヘッダー情報を追記します。
このままでも特に問題ありませんが、メールソフトなどの関係で、RFC 5451に準拠した Authentication Results (AR) の形式のヘッダー情報の方が良い場合があります。Roundcube Webmail で roundcube/authres_status を有効にしたとき、SPF のステータス表示を有効にするためには、RFC 5451に準拠した Authentication Results (AR) の形式のヘッダー情報である必要があります。
ところが、/etc/python-policyd-spf/policyd-spf.conf を編集して、Header_Type = AR を設定しても、エラーが発生しメールの受信ができなくなります。
このエラーは、Header_Type = AR の設定のほか、認証識別子の設定が必要なことと、依存関係で必要となる python-authres がインストールされていないことが原因で発生します。
目次
pypolicyd-spf のインストール
CentOS7 に pypolicyd-spf をインストールする方法は、以下のコマンドを使うのが一般的だと思います。
1 2 |
sudo yum install -y epel-release sudo yum install -y –-enablerepo=epel pypolicyd-spf |
しかし、依存関係でインストールされるソフトに、python-authres が含まれていません。
python-authres は、yum コマンドでインストール可能か、探してみましょう。
1 2 3 4 5 6 7 8 9 |
yum search authres 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: centos.mirror.netelligent.ca * epel: epel.mirror.constant.com * extras: mirror.gpmidi.net * updates: centos.mirror.ca.planethoster.net 警告: 一致するものが見つかりません: authres No matches found |
見つかりませんでした。
python-authres の rpm のインストール
rpm がないか検索したところ、1件見つかりました。
python-authres-0.601-2.el7.centos.noarch.rpm
Index of /linux/el7/i386
とりあえず、これを利用するというのも一つの方法です。
1 2 |
wget https://gathman.org/linux/el7/i386/python-authres-0.601-2.el7.centos.noarch.rpm rpm -ivh python-authres-0.601-2.el7.centos.noarch.rpm |
ただし、gathman.org というサイトですが、私が知らないだけかもしれませんが、どういったサイトか不明です。
python-authres のソースを探したところ、以下のサイトで配布されていました。
authres 1.1.0 : Python Package Index – PyPI
ソースからビルドした方が、精神衛生上良いかと思いますので、こちらの方法がおすすめです。
python-authres をビルドしてインストール
ビルドに必要なソフトをインストールします。ビルドだけテスト環境で行っても大丈夫です。
1 |
sudo yum install -y rpm-build python-setuptools |
ソースをダウンロードします。
1 |
wget https://pypi.python.org/packages/08/ae/3976998b0f8838a5781234710cee17b6717bbf5cc17db6f528531b975a83/authres-1.1.0.tar.gz#md5=06e3b28296f599dbb691743c9d2a0611 |
展開してビルドし、インストールします。
1 2 3 4 |
tar zxvf authres-*.tar.gz cd authres-* python setup.py bdist_rpm sudo yum install dist/*.noarch.rpm |
これで、インストール完了です。
Header_Type = AR の設定
あとは、/etc/python-policyd-spf/policyd-spf.conf を編集して、設定を有効にします。
1 |
sudo vi /etc/python-policyd-spf/policyd-spf.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Type of header to insert to document SPF result. Can be Received-SPF (SPF) # or Authentication Results (AR). It cannot be both. # Examples: (default is Received-SPF): # Header_Type = AR # Header_Type = SPF Header_Type = AR # Every Authentication-Results header field has an authentication identifier # field ('Authserv_Id'). This is similar in syntax to a fully-qualified domain # name. See policyd-spf.conf.5 and RFC 7001 paragraph 2.4 for details. # Default is None. Authserv-Id must be provided if Header_Type 'AR' is used. # Authserv_Id = mx.example.com Authserv_Id = mta.hogehoge.net |
Authserv_Id のパラメータが、認証識別子です。
Header_Type = AR に設定する場合は、必ず Authserv_Id の設定も必要になります。
amavisd-new などを併用している場合は、認証識別子が重複するとコンフリクトしますので、注意する必要がります。
amavisd-new が使用する認証識別子が mta.hogehoge.net だとしたら、 Authserv_Id = spf.mta.hogehoge.net などと設定しておけば良いでしょう。
参考情報
postfix で postfix-policyd-spf-python ( or postfix-policyd-spf-perl ) を使ってSPF認証する(Debian/Ubuntu編)