5月 302017
 
シェアする

どうも、大変ご無沙汰しております。
社会の役に立つエンジニアこと、TrippyBoyの愉快な日々の管理人です。

今日は、久しぶりにMailmanを使ったメーリングリストシステムをサクッと香ばしく仕上げようと思った際に直面しました問題のご紹介と、問題を解決した方法をここに共有させて頂きます。

いつもながら、CentOSのことと言ったらこちらのサイト

https://centossrv.com/postfix-mailman.shtml を参考に、Mailmanの導入を行っておりました。

手順を参考に順調に進めまして、最新のMailman(本日時点で2.1.23)を用いて以下の手順に差し掛かったときに、エラーに遭遇しました。

[root@hoge mailman-2.1.23]# su mailman -s "/bin/bash" -c "./configure --with-cgi-gid=apache"
checking for --with-python... no
checking for python... /usr/bin/python
checking Python interpreter... /usr/bin/python
checking Python version... 2.6.6
checking dnspython... configure: error:

***** dnspython not found. It is required for the new
***** dmarc_moderation_action featurer. Get it from
***** <http://www.dnspython.org/> or
***** <https://pypi.python.org/pypi/dnspython/>
[root@hoge mailman-2.1.23]#

 

checking dnspython… configure: error:

そもそもpythonとかあんまり触れたことがないので、最初はうまくいっているのか言っていないのかもわからなかったわけですが、ちょっとみてみると、「configure: error:」ってなっているので、何かしら問題が起きてるんだなって思いました。

そこで、少し目を凝らしてみてみると・・・

dnspython not found

て、なってました。

サクッとGoogle検索してみて、英語のページが幾つかヒットしたのですが、CentOS向けの解決歩法がなく、ふとした方法で解決したのでここに共有しておきます。

無論、pythonのソースファイルを持ってきて、コンパイルしちゃおうって動ける方には不要な情報かもしれませんがね(笑)

 

yum で とりあえず、pythonをsearchしてdnsでgrepしてみました。

 

[root@hoge mailman-2.1.23]# yum search  python | grep dns
cjdns-python.noarch : Python tools for cjdns
ldns-python.i686 : Python extensions for ldns
ldns-python.x86_64 : Python extensions for ldns
python-dns.noarch : DNS toolkit for Python
python-pydns.noarch : Python module for DNS (Domain Name Service)
cjdns-graph.noarch : Python tools for cjdns
python-pyldns.x86_64 : Header files, libraries and development documentation for
                     : ldns.
[root@hoge mailman-2.1.23]#

 

ここで、ざっとみてどれにしようかなと思ったのですが、

Google検索で「dnspython」と検索すると、一番上にヒットするページの概説部分に、

dnspython is a DNS toolkit for Python

とあったので、上記yum searchの結果のうち、

python-dns.noarch : DNS toolkit for Python

をインストールすることにしました。

このパッケージはepelリポジトリから入手可能ですので、epelリポジトリを追加されていない方は別途追加した上で、インストールしてみて下さい。

[root@hoge mailman-2.1.23]# yum info python-dns.noarch
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi-safe: mirrors.mediatemple.net
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.tsukuba.wide.ad.jp
インストール済みパッケージ
名前                : python-dns
アーキテクチャ      : noarch
バージョン          : 1.11.1
リリース            : 2.el6
容量                : 1.0 M
リポジトリー        : installed
提供元リポジトリー  : epel
要約                : DNS toolkit for Python
URL                 : http://www.dnspython.org/
ライセンス          : MIT
説明                : dnspython is a DNS toolkit for Python. It supports almost all record
                    : types. It can be used for queries, zone transfers, and dynamic
                    : updates. It supports TSIG authenticated messages and EDNS0.
                    :
                    : dnspython provides both high and low level access to DNS. The high
                    : level classes perform queries for data of a given name, type, and
                    : class, and return an answer set. The low level classes allow direct
                    : manipulation of DNS zones, messages, names, and records.

インストール後は問題なくconfigureできましたとさ。

[root@hoge mailman-2.1.23]# yum -y install python-dns.noarch
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * remi-safe: mirrors.mediatemple.net
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package python-dns.noarch 0:1.11.1-2.el6 will be インストール
--> 依存性の処理をしています: python-crypto のパッケージ: python-dns-1.11.1-2.el6.noarch
--> トランザクションの確認を実行しています。
---> Package python-crypto.x86_64 0:2.0.1-22.el6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================================================================================================
 パッケージ                                     アーキテクチャ                          バージョン                                      リポジトリー                           容量
====================================================================================================================================================================================
インストールしています:
 python-dns                                     noarch                                  1.11.1-2.el6                                    epel                                  238 k
依存性関連でのインストールをします。:
 python-crypto                                  x86_64                                  2.0.1-22.el6                                    base                                  159 k

トランザクションの要約
====================================================================================================================================================================================
インストール         2 パッケージ

総ダウンロード容量: 397 k
インストール済み容量: 1.5 M
パッケージをダウンロードしています:
(1/2): python-crypto-2.0.1-22.el6.x86_64.rpm                                                                                                                 | 159 kB     00:00
(2/2): python-dns-1.11.1-2.el6.noarch.rpm                                                                                                                    | 238 kB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                441 kB/s | 397 kB     00:00
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールしています  : python-crypto-2.0.1-22.el6.x86_64                                                                                                                   1/2
  インストールしています  : python-dns-1.11.1-2.el6.noarch                                                                                                                      2/2
  Verifying               : python-dns-1.11.1-2.el6.noarch                                                                                                                      1/2
  Verifying               : python-crypto-2.0.1-22.el6.x86_64                                                                                                                   2/2

インストール:
  python-dns.noarch 0:1.11.1-2.el6

依存性関連をインストールしました:
  python-crypto.x86_64 0:2.0.1-22.el6

完了しました!
[root@hoge mailman-2.1.23]#

 

yumインストールが終わったあとにもう一度configure実施

[root@hoge mailman-2.1.23]# su mailman -s "/bin/bash" -c "./configure --with-cgi-gid=apache"
checking for --with-python... no
checking for python... /usr/bin/python
checking Python interpreter... /usr/bin/python>
checking Python version... 2.6.6
checking dnspython... ok
checking Python's email package... ok
checking Japanese codecs... ok
checking Korean codecs... ok
checking that Python has a working distutils... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking whether make sets $(MAKE)... yes
checking for true... /bin/true
checking for --without-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether #! works in shell scripts... yes
checking for --with-var-prefix... no
checking for --with-permcheck... yes
checking for --with-username... mailman
checking for user name "mailman"... okay
checking for --with-groupname... mailman
checking for group name "mailman"... okay
checking permissions on /usr/local/mailman... okay
checking for mail wrapper group; i.e. --with-mail-gid... mailman
checking for CGI wrapper group; i.e. --with-cgi-gid... apache
checking for CGI extensions... no
checking for --with-mailhost... no
checking for --with-urlhost... no
checking for default mail host name... hogehoge
checking for default URL host component... hogehoge
checking for strerror... yes
checking for setregid... yes
checking for syslog... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for uid_t in sys/types.h... yes
checking type of array argument to getgroups... gid_t
checking for vsnprintf... yes
configure: creating ./config.status
config.status: creating misc/paths.py
config.status: creating Mailman/Defaults.py
config.status: creating Mailman/mm_cfg.py.dist
config.status: creating src/Makefile
config.status: creating misc/Makefile
config.status: creating bin/Makefile
config.status: creating Mailman/Makefile
config.status: creating Mailman/Cgi/Makefile
config.status: creating Mailman/Logging/Makefile
config.status: creating Mailman/Archiver/Makefile
config.status: creating Mailman/Commands/Makefile
config.status: creating Mailman/Handlers/Makefile
config.status: creating Mailman/Bouncers/Makefile
config.status: creating Mailman/Queue/Makefile
config.status: creating Mailman/MTA/Makefile
config.status: creating Mailman/Gui/Makefile
config.status: creating templates/Makefile
config.status: creating cron/Makefile
config.status: creating scripts/Makefile
config.status: creating messages/Makefile
config.status: creating cron/crontab.in
config.status: creating misc/mailman
config.status: creating Makefile
config.status: creating tests/Makefile
config.status: creating tests/bounces/Makefile
config.status: creating tests/msgs/Makefile
config.status: creating build/bin/add_members
config.status: creating build/bin/arch
config.status: creating build/bin/change_pw
config.status: creating build/bin/check_db
config.status: creating build/bin/check_perms
config.status: creating build/bin/cleanarch
config.status: creating build/bin/clone_member
config.status: creating build/bin/config_list
config.status: creating build/bin/convert.py
config.status: creating build/bin/discard
config.status: creating build/bin/dumpdb
config.status: creating build/bin/export.py
config.status: creating build/bin/find_member
config.status: creating build/bin/fix_url.py
config.status: creating build/bin/genaliases
config.status: creating build/bin/inject
config.status: creating build/bin/list_admins
config.status: creating build/bin/list_lists
config.status: creating build/bin/list_members
config.status: creating build/bin/list_owners
config.status: creating build/bin/mailmanctl
config.status: creating build/bin/mmsitepass
config.status: creating build/bin/msgfmt.py
config.status: creating build/bin/newlist
config.status: creating build/bin/pygettext.py
config.status: creating build/bin/qrunner
config.status: creating build/bin/remove_members
config.status: creating build/bin/reset_pw.py
config.status: creating build/bin/rmlist
config.status: creating build/bin/show_qfiles
config.status: creating build/bin/sync_members
config.status: creating build/bin/transcheck
config.status: creating build/bin/unshunt
config.status: creating build/bin/update
config.status: creating build/bin/version
config.status: creating build/bin/withlist
config.status: creating build/bin/b4b5-archfix
config.status: creating build/bin/rb-archfix
config.status: creating build/contrib/check_perms_grsecurity.py
config.status: creating build/contrib/qmail-to-mailman.py
config.status: creating build/contrib/courier-to-mailman.py
config.status: creating build/contrib/rotatelogs.py
config.status: creating build/cron/bumpdigests
config.status: creating build/cron/checkdbs
config.status: creating build/cron/cull_bad_shunt
config.status: creating build/cron/disabled
config.status: creating build/cron/gate_news
config.status: creating build/cron/mailpasswds
config.status: creating build/cron/nightly_gzip
config.status: creating build/cron/senddigests
config.status: executing default commands
configuration completed at Tue May 30 22:08:40 JST 2017
[root@hoge mailman-2.1.23]#

 

まとめ

dnspython not found が出たら
epelリポジトリからpython-dns.noarchをインストールする

 

めでたしめでたし。

 

このエントリーをはてなブックマークに追加

コメント大歓迎!質問も受け付けておりますヽ(*´∀`)ノ