どうも、大変ご無沙汰しております。
社会の役に立つエンジニアこと、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をインストールする
めでたしめでたし。
コメント