投げ銭

★当サイトへの投げ銭(PayPal)★

LINK


(無償)
logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)
The Document Foundation Wiki

人気の投稿(1ヶ月間)

Ad

Ad

投げ銭

★当サイトへの投げ銭(PayPal)★
ラベル popfile の投稿を表示しています。 すべての投稿を表示
ラベル popfile の投稿を表示しています。 すべての投稿を表示

2018年11月22日木曜日

【Linux CentOS 7】Dockerコンテナにメール分類ソフトPOPFile(日本語分かち書きでmecabを利用)を導入した【Docker-ce 18.06.1.ce】

以下では、特権Dockerコンテナを用いてインストール作業を行っている。

しかし、通常のCentOS 7でも同じ手順でインストールの作業はできると思う。
一部、Dockerコンテナにまつわる作業が混ざっています。

(警告)
ここで作成しているDockerコンテナは、信頼のおけるローカルネットワークのみで動作するホストで運用するものとして構築している。
ホスト上のいずれかのネットワークインターフェイスがインターネットに直接接している場合、このコンテナの運用はセキュリティの観点から非常に危険なので動作させてはいけない。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)



■必要なファイルのダウンロード

http://taku910.github.io/mecab/#download から次の3つのファイルを、Dockerホストにダウンロードしておいた。

1、MeCab 本体(mecab-0.996.tar.gz)
2、MeCab 用の辞書IPA 辞書(mecab-ipadic-2.7.0-20070801.tar.gz)
3、perl バインディング(mecab-perl-0.996.tar.gz)



■設定するコンテナの起動

以下で使用するDockerコンテナは、
【Linux CentOS 7】(ベースコンテナの作成)SSH接続可能なDockerコンテナでの日本用ロケールの有効化と検証(man,dateの日本語表示)」で作成したイメージから生成したものである。

これは日本のロケールを利用できるようにしたものである。
またSSH接続も利用できるように構成している。

このイメージからコンテナを起動した。
(SSH接続のためホスト側222番ポートをコンテナの22番へ通している。)
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
# docker run --privileged -d -p 222:22 --name centos7-popfile image-centos7-ja /sbin/init



■perlとperlモジュールのインストール

次のページを参考に行った。
ただし、perlモジュールのインストール手順が少し異なった。
【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)


○perlのインストール

[root@2d82556b4724 ~]# yum install perl
Total download size: 11 M
Installed size: 36 M
Installed:
  perl.x86_64 4:5.16.3-292.el7
Dependency Installed:
  perl-Carp.noarch 0:1.26-244.el7
  perl-Encode.x86_64 0:2.51-7.el7
  perl-Exporter.noarch 0:5.68-3.el7
  perl-File-Path.noarch 0:2.09-2.el7
  perl-File-Temp.noarch 0:0.23.01-3.el7
  perl-Filter.x86_64 0:1.49-3.el7
  perl-Getopt-Long.noarch 0:2.40-3.el7
  perl-HTTP-Tiny.noarch 0:0.033-3.el7
  perl-PathTools.x86_64 0:3.40-5.el7
  perl-Pod-Escapes.noarch 1:1.04-292.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7
  perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7
  perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-4.el7
  perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7
  perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7
  perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-292.el7
  perl-macros.x86_64 4:5.16.3-292.el7
  perl-parent.noarch 1:0.225-244.el7                 
  perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7
  perl-threads-shared.x86_64 0:1.43-6.el7
Complete!

○popfileが必要とするperlモジュールのインストール

次の三つについては、既にインストールされていたことがわかった。

[root@2d82556b4724 ~]# perl -M-MIME::Base64 -e 'print $MIME::Base64::VERSION'
3.13
[root@2d82556b4724 ~]# perl -M-MIME::QuotedPrint -e 'print $MIME::QuotedPrinERSION'
3.13
[root@2d82556b4724 ~]# perl -M-Encode -e 'print $Encode::VERSION'
2.51

したがって、popfileを利用するためにインストールすべきモジュールは次の通りである。

(1) DBI
(2) DBD::SQLite
(3) HTML::Tagset
(4) Date::Parse (all platforms except Windows)
(5) HTML::Template
(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
(7) Net::SSLeay (if you want to use SSL)
(8) IO::Socket::SSL (if you want to use SSL)
(9) SOAP::Lite (if you want to use XMLRPC)
(10)  Digest::base
(11)  Digest::MD5

○一つ一つyumを使ってインストールを行った。

(1) DBI
[root@2d82556b4724 ~]# yum install perl-DBI
Total download size: 1.3 M
Installed size: 3.2 M
Installed:
  perl-DBI.x86_64 0:1.627-4.el7
Dependency Installed:
  perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  perl-Data-Dumper.x86_64 0:2.145-3.el7
  perl-IO-Compress.noarch 0:2.061-2.el7
  perl-Net-Daemon.noarch 0:0.48-5.el7
  perl-PlRPC.noarch 0:0.2020-14.el7                                         
Complete!

(2) DBD::SQLite
[root@2d82556b4724 ~]# yum install perl-DBD-SQLite
Total download size: 1.3 M
Installed size: 5.4 M
Installed:
  perl-DBD-SQLite.x86_64 0:1.39-3.el7                                       
Complete!

(3) HTML::Tagset

[root@2d82556b4724 ~]# yum install perl-HTML-Tagset
Total download size: 18 k
Installed size: 19 k
Installed:
  perl-HTML-Tagset.noarch 0:3.20-15.el7

Complete!

(4) Date::Parse (all platforms except Windows)

[root@2d82556b4724 ~]# yum install perl-DateTime-Format-DateParse
Total download size: 2.5 M
Installed size: 14 M
Installed:
  perl-DateTime-Format-DateParse.noarch 0:0.05-5.el7                         
Dependency Installed:
  perl-Class-Load.noarch 0:0.20-3.el7
  perl-Class-Singleton.noarch 0:1.4-14.el7
  perl-Data-OptList.noarch 0:0.107-9.el7
  perl-DateTime.x86_64 2:1.04-6.el7
  perl-DateTime-Locale.noarch 0:0.45-6.el7
  perl-DateTime-TimeZone.noarch 0:1.70-1.el7
  perl-List-MoreUtils.x86_64 0:0.33-9.el7
  perl-Module-Implementation.noarch 0:0.06-6.el7
  perl-Module-Runtime.noarch 0:0.013-4.el7
  perl-Package-DeprecationManager.noarch 0:0.13-7.el7
  perl-Package-Stash.noarch 0:0.34-2.el7
  perl-Package-Stash-XS.x86_64 0:0.26-3.el7
  perl-Params-Util.x86_64 0:1.07-6.el7
  perl-Params-Validate.x86_64 0:1.08-4.el7
  perl-Sub-Install.noarch 0:0.926-6.el7
  perl-TimeDate.noarch 1:2.30-2.el7
  perl-Try-Tiny.noarch 0:0.12-2.el7

Complete!

(5) HTML::Template

epelリポジトリが必要なので導入しておく。

[root@2d82556b4724 ~]# yum install epel-release
Installed:
  epel-release.noarch 0:7-11                                                 
Complete!
[root@2d82556b4724 ~]# yum install perl-HTML-Template
================================================================================
 Package                   Arch          Version              Repository   Size
================================================================================
Installing:
 perl-HTML-Template        noarch        2.95-1.el7           epel         76 k
Installing for dependencies:
 perl-Digest               noarch        1.17-245.el7         base         23 k
 perl-Digest-MD5           x86_64        2.52-3.el7           base         30 k
Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)
Total download size: 129 k
Installed size: 274 k
Complete!

(6) IO::Socket::Socks (if you want to use a SOCKS proxy)
Socksを用いない場合は不要なのでパスした。

(7) Net::SSLeay (if you want to use SSL)

[root@2d82556b4724 ~]# yum install perl-Net-SSLeay
Total download size: 285 k
Installed size: 991 k
Installed:
  perl-Net-SSLeay.x86_64 0:1.55-6.el7

Complete!

(8) IO::Socket::SSL (if you want to use SSL)

[root@2d82556b4724 ~]# yum install perl-IO-Socket-SSL
Total download size: 1.1 M
Installed size: 2.3 M
Installed:
  perl-IO-Socket-SSL.noarch 0:1.94-7.el7                                     
Dependency Installed:
  make.x86_64 1:3.82-23.el7             openssl.x86_64 1:1.0.2k-12.el7     
  perl-IO-Socket-IP.noarch 0:0.21-5.el7 perl-Mozilla-CA.noarch 0:20130114-5.el7
  perl-Net-LibIDN.x86_64 0:0.12-15.el7
Complete!

(9) SOAP::Lite (if you want to use XMLRPC)

これもepelリポジトリが必要である。

[root@2d82556b4724 ~]# yum install perl-SOAP-Lite
================================================================================
 Package                     Arch       Version                  Repository
                                                                           Size
================================================================================
Installing:
 perl-SOAP-Lite              noarch     1.10-1.el7               epel     293 k
Installing for dependencies:
 mailcap                     noarch     2.1.41-2.el7             base      31 k
 perl-Business-ISBN          noarch     2.06-2.el7               base      25 k
 perl-Business-ISBN-Data     noarch     20120719.001-2.el7       base      24 k
 perl-Class-Inspector        noarch     1.28-2.el7               base      31 k
 perl-Convert-BinHex         noarch     1.119-20.el7             epel      44 k
 perl-Email-Date-Format      noarch     1.002-15.el7             epel      17 k
 perl-Encode-Locale          noarch     1.03-5.el7               base      16 k
 perl-File-Listing           noarch     6.04-7.el7               base      13 k
 perl-HTML-Parser            x86_64     3.71-4.el7               base     115 k
 perl-HTTP-Cookies           noarch     6.01-5.el7               base      26 k
 perl-HTTP-Daemon            noarch     6.01-7.el7               base      21 k
 perl-HTTP-Date              noarch     6.02-8.el7               base      14 k
 perl-HTTP-Message           noarch     6.06-6.el7               base      82 k
 perl-HTTP-Negotiate         noarch     6.01-5.el7               base      17 k
 perl-IO-HTML                noarch     1.00-2.el7               base      23 k
 perl-IO-SessionData         noarch     1.03-1.el7               epel     8.5 k
 perl-LWP-MediaTypes         noarch     6.02-2.el7               base      24 k
 perl-MIME-Lite              noarch     3.030-1.el7              epel      96 k
 perl-MIME-Types             noarch     1.38-2.el7               epel      38 k
 perl-MIME-tools             noarch     5.505-1.el7              epel     256 k
 perl-MailTools              noarch     2.12-2.el7               base     108 k
 perl-Net-HTTP               noarch     6.06-2.el7               base      29 k
 perl-Net-SMTP-SSL           noarch     1.01-13.el7              base     9.1 k
 perl-URI                    noarch     1.60-9.el7               base     106 k
 perl-WWW-RobotRules         noarch     6.02-5.el7               base      18 k
 perl-XML-Parser             x86_64     2.41-10.el7              base     223 k
 perl-libwww-perl            noarch     6.05-2.el7               base     205 k
Transaction Summary
================================================================================
Install  1 Package (+27 Dependent packages)
Total download size: 1.9 M
Installed size: 4.2 M
Is this ok [y/d/N]:y
Complete!

(10)  Digest::base
[root@2d82556b4724 ~]# yum install perl-Digest
インストール済みとなった。
Package perl-Digest-1.17-245.el7.noarch already installed and latest version
Nothing to do

(11)  Digest::MD5
[root@2d82556b4724 ~]# yum install perl-Digest-MD5
Package perl-Digest-MD5-2.52-3.el7.x86_64 already installed and latest version
Nothing to do


■その他必要なツールをインストールした

[root@2d82556b4724 ~]# yum install gcc gcc-c++
Total download size: 40 M
Installed size: 84 M
Dependency Installed:
  cpp.x86_64 0:4.8.5-28.el7_5.1
  glibc-devel.x86_64 0:2.17-222.el7
  glibc-headers.x86_64 0:2.17-222.el7
  kernel-headers.x86_64 0:3.10.0-862.14.4.el7
  libgomp.x86_64 0:4.8.5-28.el7_5.1
  libmpc.x86_64 0:1.0.1-3.el7
  libstdc++-devel.x86_64 0:4.8.5-28.el7_5.1
  mpfr.x86_64 0:3.1.1-4.el7

Complete!

[root@2d82556b4724 ~]# yum install wget
Installed:
  wget.x86_64 0:1.14-15.el7_4.1
Complete!


■mecabのインストール

○mecabに関する3つのファイルのコピー

冒頭に挙げたページからmecabに関する3つのファイルをダウンロードしDockerホスト側に、保存しておいた。
それをコンテナにコピーした。

docker cp ではワイルドカードは使えなかった。
2d82556b4724は、コンテナIDである。
/root/software/popfile/mecab/ は予めコンテナに作成した。

ホストからコンテナへのコピー作業
# docker cp /mecab-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-ipadic-2.7.0-20070801.tar.gz 2d82556b4724:/root/software/popfile/mecab/
# docker cp /mecab-perl-0.996.tar.gz 2d82556b4724:/root/software/popfile/mecab/

コピーされたファイルの確認
[root@2d82556b4724 mecab]# ls
mecab-0.996.tar.gz  mecab-ipadic-2.7.0-20070801.tar.gz


○mecab本体のインストール

[root@2d82556b4724 mecab-0.996]# tar -zxvf mecab-0.996.tar.gz
[root@2d82556b4724 mecab-0.996]# cd mecab-0.996
[root@2d82556b4724 mecab-0.996]# ./configure
[root@2d82556b4724 mecab-0.996]# make
[root@2d82556b4724 mecab-0.996]# make install


○mecab辞書のインストール

[root@2d82556b4724 mecab-0.996]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-ipadic-2.7.0-20070801.tar.gz
[root@2d82556b4724 mecab]# cd mecab-ipadic-2.7.0-20070801
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]#  ./configure --with-charset=utf8
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make
done!
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicrc = /usr/local/lib/mecab/dic/ipadic\"
To enable dictionary, rewrite /usr/local/etc/mecabrc as "dicrc = /usr/local/lib/mecab/dic/ipadic"
[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# make install


○mecabの動作テスト

[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# mecab

日本語の文を適当に入力してエンターを押すと自動的に次のように解析された。
テスト中です
テスト  名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
中      名詞,接尾,副詞可能,*,*,*,中,チュウ,チュー
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
EOS
^C
CTRL+cで抜ける。


○mecab-perl-bindのインストール

[root@2d82556b4724 mecab-ipadic-2.7.0-20070801]# cd ..
[root@2d82556b4724 mecab]# tar -zxvf mecab-perl-0.996.tar.gz
[root@2d82556b4724 mecab]# cd mecab-perl-0.996
[root@2d82556b4724 mecab-perl-0.996]# yum install perl-ExtUtils-MakeMaker
[root@2d82556b4724 mecab-perl-0.996]# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for MeCab
[root@2d82556b4724 mecab-perl-0.996]# make
[root@2d82556b4724 mecab-perl-0.996]# make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.so
Installing /usr/local/lib64/perl5/auto/MeCab/MeCab.bs
Installing /usr/local/lib64/perl5/MeCab.pm
Appending installation info to /usr/lib64/perl5/perllocal.pod


■popfile本体の導入

○準備

[root@2d82556b4724 mecab-perl-0.996]# cd ..
[root@2d82556b4724 mecab]# cd ..
[root@2d82556b4724 popfile]# mkdir popfile-1.1.3
[root@2d82556b4724 popfile]# cd popfile-1.1.3

[root@2d82556b4724 popfile-1.1.3]# yum install unzip
Total download size: 170 k
Installed size: 365 k
Installed:
  unzip.x86_64 0:6.0-19.el7                                                   
Complete!

○popfileをダウンロードし展開した。

[root@2d82556b4724 popfile-1.1.3]# wget http://getpopfile.org/downloads/popfile-1.1.3.zip
popfile-1.1.3.zip’ saved [523431/523431]
[root@2d82556b4724 popfile-1.1.3]# unzip popfile-1.1.3.zip
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier  bayes.pl     license   popfile-1.1.3.zip  v1.1.3.change
POPFile     black.gif    otto.gif  popfile.pck        v1.1.3.change.nihongo
Proxy       favicon.ico  otto.png  popfile.pl
Services    insert.pl    pipe.pl   skins
UI          languages    pix.gif   stopwords


○popfileの設定

popfileを一度起動して設定ファイルを生成させた。

[root@2d82556b4724 popfile-1.1.3]# perl ./popfile.pl
POPFile Engine loading
    Loading...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
POPFile Engine v1.1.3 starting
    Initializing...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
    Starting...   
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 running

^C ←ctrl+cを入力して一旦終了させた。


POPFile Engine v1.1.3 stopping
    Stopping...
         {classifier: bayes wordmangle}
         {core: config history logger mq}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 terminated

設定ファイルの確認
[root@2d82556b4724 popfile-1.1.3]# ls
Classifier  favicon.ico  pipe.pl            popfile1542758400.log
POPFile     insert.pl    pix.gif            skins
Proxy       languages    popfile-1.1.3.zip  stopwords
Services    license      popfile.cfg        v1.1.3.change
UI          messages     popfile.db         v1.1.3.change.nihongo
bayes.pl    otto.gif     popfile.pck
black.gif   otto.png     popfile.pl


必要最低限の設定を行った。
[root@2d82556b4724 popfile-1.1.3]# vi popfile.cfg
bayes_nihongo_parser MeCab ←大文字小文字に注意。さもなければ動作せず文字化けする。
html_language Nihongo ←日本語メールの処理、GUIの日本語化
html_local 0 ←127.0.0.1以外のインターフェイスへのアクセスでもGUIにアクセス許可(ただし、予めIPフィルタの設定を必ず適切に行っておくこと)
html_port 8081 ←GUIアクセスのためのTCPポートの設定

以上で、popfileの設定は完了した。



■popfileの起動(コンテナのイメージ化を伴う)

popfileを起動してhttp接続するためには、コンテナに8081ポートを通す必要がある。
そのため、一旦コンテナを終了し、ポートの設定を加えて起動する。

○コンテナの終了
[root@2d82556b4724 popfile-1.1.3]# poweroff


以下は、Dockerホストでの作業である。


○コンテナをコミットして、イメージ化を行った。

2d82556b4724はコンテナIDである。
[root@localhost ~]# docker commit 2d82556b4724 image-centos7-popfile-20181122


○イメージを使用して、コンテナを生成し動作させた。
8081ポートを開いた。
(インターネットに直に接している場合、Dockerのデフォルトではiptablesを書き換えて外部からのアクセスを許してしまうことになってしまうため厳禁である。)
[root@localhost ~]# docker run --privileged -d -p 222:22 -p 8081:8081 --name centos7-popfile-test image-centos7-popfile-20181122  /sbin/init
991e42c74bc86b9244ffda479c5e2786808525408bcb5cb0fad8c6d63c606a3a

○コンテナにSSH接続を行った。

$ ssh -p 222 [email protected]
[email protected]'s password: 

以下はコンテナでの作業である。


○popfileの起動

ディレクトリへ移動した。
[root@991e42c74bc8 ~]# cd software/popfile/popfile-1.1.3/
[root@991e42c74bc8 popfile-1.1.3]# ls
Classifier  Services  black.gif    languages  otto.gif  pix.gif            popfile.db   popfile1542758400.log  v1.1.3.change
POPFile     UI        favicon.ico  license    otto.png  popfile-1.1.3.zip  popfile.pck  skins                  v1.1.3.change.nihongo
Proxy       bayes.pl  insert.pl    messages   pipe.pl   popfile.cfg        popfile.pl   stopwords

バックグラウンドで動作させた。
[root@991e42c74bc8 popfile-1.1.3]# perl ./popfile.pl &
[1] 161
[root@991e42c74bc8 popfile-1.1.3]#
POPFile Engine loading
    Loading...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
POPFile Engine v1.1.3 starting
    Initializing...
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html xmlrpc}
         {proxy: nntp pop3 smtp}
         {services: imap}
    Starting...   
         {core: config history logger mq}
         {classifier: bayes wordmangle}
         {interface: html}
         {proxy: pop3}
         {services:}
POPFile Engine v1.1.3 running

[root@991e42c74bc8 popfile-1.1.3]#


ブラウザから、http://192.168.10.3:8081 に接続すると、popfileのコントロール画面が開いた。


以上



<参考>
・【Linux CentOS 6.5 64bit minimal】 POPFileインストール手順 (依存PerlモジュールをYUMで導入し、POPFileの起動と初期設定を完了させる)
< http://akira-arets.blogspot.com/2014/04/centos65minimal-popfile-mecab-installing.html > 2018年11月22日

・オフライン環境でCentOS7のパッケージをインストールする
< https://qiita.com/goforbroke/items/aafb1cb0549ee90c2d70 > 2018年11月22日

・Dockerでホストとコンテナ間でのファイルコピー
< https://qiita.com/gologo13/items/7e4e404af80377b48fd5 > 2018年11月22日

2011年6月30日木曜日

【Linux CentOS 5.6】迷惑メール分類プロキシサーバPOPFileと、MeCabの連携システム構築作業メモ




スパムメール分類プロキシサーバーPOPFile 1.1.1と、連携プログラムMeCab 0.98を、CentOS5.6(64bit)にインストールしたときのメモ。

(注) 以下、POPメールサーバとメールクライアントとの間に入るPOPプロキシとしてPOPFileを使う方法を想定しています。

<目 次>
・ POPFileとは
・ MeCabとは
・ インストールするものについて
・ インストール手順
・ (手順1) 必要な準備
・ (手順2) 一般的なperlモジュール<分類1>のインストール
・ (手順3) 分かち書きプログラムMeCab本体と、その辞書mecab-ipadicのインストール
・ (手順4) perl-MeCabバインディングモジュールのインストール
・ (手順5) POPFile本体のインストール
・ (手順6) POPFile本体の基本的な設定
・ POPFileを起動する
・ メールクライアントの設定
・ POPFileを終了する
・ その他の設定
・ ◎POPFileのシステム起動時の自動起動の方法について
・ ◎POPFileのキープアライブ(障害の自動検出と自動回復)の方法について (POPFileのハングアップ対策)
・ ◎動作させているpopfileの設定内容や受信メールログを、新規マシンのpopfileへ移行する方法



□POPFileとは□
POPFileは、メールの本文を解析し含まれる単語に基づき、学習結果に応じて分類するプロキシ型のソフトウェアである。
POPメールサーバーへのプロキシとして動作させられるので一般的なメールクライアントソフトと組み合わせることができる。

POPFileを経由するメールは学習結果に基づいて適切に分類され、通常はタイトルにそのバケツ名(=分類名)が付加される。
処理済みメールを受信したメールクライアントではタイトルに対するフィルタ機能を使って、この付加された分類名に基づき最終的な処理方法を決定できる
どのような処理ができるかはメールクライアントによって異なる。
たとえば、フォルダに隔離したり、転送したり、削除したり、できるだろう。


POPメールサーバ(元のメール) → POPFile(分類し、バケツ名をタイトルに付加) → メールクライアント(バケツ名に応じた最終的な処理)

POPFileのGUIを使って、バケツ(=分類名)の作成やこれに入るべきメールの傾向を学習させることで分類能力を高められる。
具体的にユーザーが行うことは次の2点である。

・内容に基づくメール分類用のバケツを2つ以上作成する。(当然、スパムメール用としてもバケツは作れる)
・メールがPOPFileを通過後に、各バケツに入るべきメールを指定しその本文に含まれる単語の傾向を学習させる。

十分に学習できれば誤判定や保留もなく分類されるようになる。それまではユーザーが学習させて育てる。
ところで、POPFileはメールの内容を学習することによってスパムメールも分類できるようになるものであり、スパムメールだけを分類するものではない。

分類後にタイトルにはそのバケツ名を付加せず元のままにすることもできる。
受信したメールの本文以外の情報(アドレス、タイトルなど)の一致不一致で分類することも可能。(マグネット機能)
1台のPOPFileをイントラネット上で動作させておくことで、複数のメールクライアントコンピューターから利用できた。(要設定 GUIの設定タブ→POP3 同時接続の許可:はい)



□MeCabとは□
文を解析し単語に分け品詞を判定するソフトウェア。オープンソースの形態素解析エンジンである。
言語、辞書、コーパスに依存しない汎用的に利用できる設計が基本方針になっている。

POPFileでは日本語で書かれたメールを扱うとき、このMeCabが持つような分かち書き機能を利用することで分類精度を高められる。





■インストールするものについて■

 POPFileを動作させるには、本体の他にいくつかのperlモジュールが必要である。
大きく分けると次の二つである。

<分類1>perl関係の一般的なモジュール

現在のところ、以下のモジュールが必要になるかもしれません」 に挙げられているperlモジュールリストをベースとした。
ここから、Linux以外の環境で使われるものを除外し、これ以外に必要なものを加えた。
これらをLinuxシステムにインストールする。
・YAML
・SOAP::Lite
・Net::SSLeay
・IO::Socket::SSL
・IO::Socket::Socks
・Encode
・HTML::Template
・Date::Parse
・MIME::QuotedPrint
・MIME::Base64
・HTML::Tagset
・Digest::MD5
・Digest::base
・DBI
・DBD::SQLite (ただし、sqlite3)

<分類2>日本語分かち書きプログラム関係

今回は、MeCabを使う。
必要なのは次の三つである。
・mecab-0.98.tar.gz (MeCab本体)
・mecab-ipadic-2.7.0-20070801.tar.gz (本体が使用するIPA辞書)
・mecab-perl-0.98.tar.gz (MeCab-perlバインディングというMeCabを扱うperlモジュール)



■インストール手順■

これからをPOPFileをインストールするCentOS5のシステムは64bit版のもので、
標準のインストーラーを使って構成されたもの。gnomeなどのGUI環境はインストールしていない。

下はこのシステムのunameの結果。カーネルは、現在yumで導入できる最新版が入っている。
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux

インストール手順は、大きく分けて6つある。



(手順1) 必要な準備

1◇ アップデート、コンパイラ、リポジトリ、CPANのための通信プログラムの導入



先ず、システム全体のアップデートを行う。
次にCコンパイラのインストール作業を行う。
さらにepelリポジトリを導入する。後の手順で必要になるパッケージがここに存在しているためである。
最後のncftpのインストールも、epelリポジトリから行われる。ncftpは、cpanのセットアップ時に必要になる。
# yum update
# yum install gcc gcc-c++
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# yum install ncftp

2◇ CPANへのアクセスの準備
#perl -MCPAN -e shell
これは、CPAN(perlのモジュールを公開しているネットワーク)へのアクセスするときに使うコマンド。
初回のみセットアップ作業がある。質問に答えていく形式になっている。詳細はこちら
質問のほとんどは、エンターキーを押すだけ。最後の地域に関する質問には、順に次を選択した。
(2) Asia
(7) Japan
(5) ftp://ftp.riken.jp/lang/CPAN/

CPANへのアクセス準備が完了すれば、次のようにコマンド待ちになる。
exitを実行して、終了する。
cpan>
cpan> exit


(手順2) 一般的なperlモジュール<分類1>のインストール

1◇ CPANからモジュールをインストールする

再び、次のコマンドを実行する。

#perl -MCPAN -e shell
そして、cpan> というプロンプトに、下記のように「installコマンドと引数」を一つずつ入力しエンターキーを押す。
処理に時間がかかるものがある。途中で質問されることがあるがエンターキーを押すだけで問題なかった。
無事にインストールが成功すれば、いずれも最後に、make install -- OK が表示される。
cpan> install YAML
/usr/bin/make install -- OK (比較的時間がかかった)

cpan> install IO::Socket::Socks
/usr/bin/make install -- OK (比較的時間がかかった)

cpan> install Encode
/usr/bin/make install -- OK (比較的時間がかかった)

cpan> install HTML::Template
/usr/bin/make install -- OK

cpan> install Date::Parse
/usr/bin/make install -- OK

cpan> install MIME::QuotedPrint
/usr/bin/make install -- OK

cpan> install MIME::Base64
(すでに導入されていた。MIME::Base64 is up to date.)

cpan> install HTML::Tagset
/usr/bin/make install -- OK

cpan> install Digest::MD5
/usr/bin/make install -- OK

cpan> install Digest::base
/usr/bin/make install -- OK

cpan> install DBI
/usr/bin/make install -- OK (比較的時間がかかった)

cpan> install DBD::SQLite
/usr/bin/make install -- OK (導入されたのは、ver1.33 sqlite3だった。)

cpan> exit
 (CPANから出る)

2◇ CPANで簡単には導入できないモジュールをyumでインストールする

次の3つのモジュールは、エラーが出てCPANから簡単には導入できなかった。

・SOAP::Lite
・Net::SSLeay
・IO::Socket::SSL

そこで、これらについてはyumを使ってインストールした。このとき依存関係でいくつかのperlモジュールもインストールされた。
(ところでCPANでこれらのインストールに失敗したのは、依存関係にあるモジュールがなかったからなのかもしれない。)

一つ目のperl-SOAP-Liteは、epelリポジトリ(作業1で導入済み)に入っていた。
これは依存関係が多く、このうちいくつかのものはbaseやextrasリポジトリにも入っていた。
# yum install perl-SOAP-Lite

Dependencies Resolved



================================================================================

Package Arch Version Repository Size

================================================================================

Installing:

perl-SOAP-Lite noarch 0.712-5.el5 epel 348 k

Installing for dependencies:

perl-Class-Inspector noarch 1.17-1.el5 epel 25 k

perl-Compress-Zlib x86_64 1.42-1.fc6 base 52 k

perl-Convert-BinHex noarch 1.119-5.el5 epel 47 k

perl-HTML-Parser x86_64 3.55-1.fc6 base 92 k

perl-HTML-Tagset noarch 3.10-2.1.1 base 15 k

perl-IO-stringy noarch 2.110-5.el5 epel 70 k

perl-MIME-Lite noarch 3.01-5.el5 epel 73 k
perl-MIME-tools noarch 5.420-3.el5 epel 285 k
perl-MailTools noarch 1.77-1.el5.centos extras 91 k
perl-TimeDate noarch 1:1.16-5.el5 base 32 k
perl-URI noarch 1.35-3 base 116 k
perl-XML-Parser x86_64 2.34-6.1.2.2.1 base 210 k
perl-libwww-perl noarch 5.805-1.1.1 base 376 k

Transaction Summary
================================================================================
Install 14 Package(s)
Upgrade 0 Package(s)

Total download size: 1.8 M

二つ目、

# yum install perl-Net-SSLeay
三つ目、

# yum install perl-IO-Socket-SSL



(手順3) 分かち書きプログラムMeCab本体と、その辞書mecab-ipadicのインストール

1◇MeCab本体のインストール作業を行う
[root@localhost mecab]# wget http://downloads.sourceforge.net/project/mecab/mecab/0.98/mecab-0.98.tar.gz
[root@localhost mecab]# tar zxfv mecab-0.98.tar.gz
[root@localhost mecab]# cd mecab-0.98
[root@localhost mecab-0.98]# ./configure
[root@localhost mecab-0.98]# make
[root@localhost mecab-0.98]# make install
[root@localhost mecab-0.98]# cd ..
[root@localhost mecab]#

2◇MeCab用のIPA辞書
[root@localhost mecab]# wget http://downloads.sourceforge.net/project/mecab/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
[root@localhost mecab]# tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
[root@localhost mecab]# cd mecab-ipadic-2.7.0-20070801
[root@localhost mecab-ipadic-2.7.0-20070801]# ./configure --with-charset=utf8
[root@localhost mecab-ipadic-2.7.0-20070801]# make
[root@localhost mecab-ipadic-2.7.0-20070801]# make install
[root@localhost mecab-ipadic-2.7.0-20070801]# cd ..
[root@localhost mecab]#

○MeCabの動作確認を行う。
mecabコマンドを実行すると、入力待ちになるので、適当な日本語文章を入れてエンターキーを押す。
すると文法が解析され品詞に分解される。すごい!
これがスパムメールに対抗する強力な武器の一つになる。CTRL+Cで戻る。
# mecab
テストの文章を書いています

テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文章 名詞,一般,*,*,*,*,文章,ブンショウ,ブンショー
を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
書い 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,書く,カイ,カイ
て 助詞,接続助詞,*,*,*,*,て,テ,テ
い 動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます 助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
EOS

(手順4) perl-MeCabバインディングモジュールのインストール

手順の3までがきちんと完了していれば問題はない。
[root@localhost mecab]# wget http://downloads.sourceforge.net/project/mecab/mecab-perl/0.98/mecab-perl-0.98.tar.gz
[root@localhost mecab]# tar zxfv mecab-perl-0.98.tar.gz
[root@localhost mecab]# cd mecab-perl-0.98
[root@localhost mecab-perl-0.98]# perl Makefile.PL
[root@localhost mecab-perl-0.98]# make
[root@localhost mecab-perl-0.98]# make install


(手順5) POPFile本体のインストール

 POPFile本体は、コンパイルなどする必要はない。
適当なディレクトリで解凍するだけである。
[root@localhost mecab-perl-0.98]# mkdir /usr/sbin/popfile1.1.1
[root@localhost mecab-perl-0.98]# cd /usr/sbin/popfile1.1.1
[root@localhost popfile1.1.1]# wget http://getpopfile.org/downloads/popfile-1.1.1.zip
[root@localhost popfile1.1.1]# unzip popfile-1.1.1.zip


(手順6) popfile本体の基本的な設定

基本的な設定は次の三つである。
POPFileの操作はwebインターフェイスで行うので、ネットワーク越しにアクセス出来るように設定する。
・日本語を扱う設定を行う。
・分かち書きプログラムの指定

1◇先ず、次のようにコマンドを実行し、POPFileを動作させる。

「runningメッセージ」を確認すれば、CTRL+Cで終了する。
これによって、ベースのコンフィグファイルpopfile.cfgなどが作成される。
[root@localhost popfile1.1.1]# perl ./popfile.pl

POPFile Engine loading

Loading...
{core: mq logger config history}
{classifier: wordmangle bayes}
{interface: xmlrpc html}
{proxy: pop3 nntp smtp}
{services: imap}

POPFile Engine v1.1.1 starting

Initializing...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}

Starting...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}

POPFile Engine v1.1.1 running


<CTRL+Cを送る>

POPFile Engine v1.1.1 stopping

Stopping...
{classifier: bayes wordmangle}
{core: config history logger mq}
{interface: html}
{proxy: pop3}
{services:}

POPFile Engine v1.1.1 terminated

2◇作成されたpopfile.cfgをエディタで開き、次の項目を探して編集 (項目の詳細
bayes_nihongo_parser MeCab 大文字小文字に注意。さもなければ動作せず文字化けする。
html_language Nihongo ←日本語メールの処理、GUIの日本語化
html_local 0 ←127.0.0.1以外のインターフェイスへのアクセスでもGUIにアクセス許可
html_port 8081 ←GUIアクセスのためのTCPポートの設定



POPFileを起動する■

バックグラウンドで動作させるために、コマンド発行時に&を渡す。
[root@localhost popfile1.1.1]# perl ./popfile.pl &
[1] 3076
[root@localhost popfile1.1.1]#
POPFile Engine loading

Loading...
{core: mq logger config history}
{classifier: wordmangle bayes}
{interface: xmlrpc html}
{proxy: pop3 nntp smtp}
{services: imap}

POPFile Engine v1.1.1 starting

Initializing...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html xmlrpc}
{proxy: nntp pop3 smtp}
{services: imap}

Starting...
{core: config history logger mq}
{classifier: bayes wordmangle}
{interface: html}
{proxy: pop3}
{services:}

POPFile Engine v1.1.1 running
 これで、http://ipアドレス:8081 でPOPFileのGUIにアクセスできる。
(ファイアーウォールの設定には注意)
POPFileのpopプロキシ機能が動作しメールクライアントがアクセスできるようになっている。

 ◎複数のクライアントから接続する場合には、GUIの「設定」タブで、「POP3 同時接続の許可:はい」にしておく。



■メールクライアントの設定■

メールクライアントの設定変更箇所は、次の2点である。

・POPメールサーバーアドレスをPOPFileの動作しているコンピューターのアドレスに変更する。
・POPメールアカウント名を、「 POPメールサーバーアドレス:POPアカウント名 」に変更する。

このようにすることで、メールクライアントはPOPFileプロキシを経由しPOPメールサーバーからメールを受信できる。
特定のクライアントソフトウェアの設定方法や、最終的な処理を決めるフィルタの設定についてはこちらに載っていた。


 しかし、POPFileを初めて利用する場合、POPFileのGUIにてバケツの作成や分類のための単語学習などが必要になる。
すべき作業は次の2点である。

・メールの分類先であるクラス(=バケツ)を作成すること
・実際にメールを通してみて、それぞれのクラスに属するメールを判定するための単語の学習をさせること



単語の学習は、誤判定され間違ったクラスに分類されたメールや、分類先がわからず保留されたメールに対してPOPFile稼動後も継続的にさせる。

このようにして分類先の判定精度を十分に高めなければ、実用的にはならない。



POPFileを終了する■

POPFileのプロセスを停止させるためには、GUIの右上にある停止用リンクをクリックする。(お勧め)

あるいは、psコマンドでプロセス番号を調べて、killコマンドに番号を渡す。
プロセスはperlという名称になっている。(他のものを終了させないように注意)
# ps -A | grep perl
3076 ? 00:00:00 perl
# kill 3076



■その他の設定(オプション)■

◎POPFileのシステム起動時の自動起動の方法について

 /etc/rc.local に記述して、システム起動時に自動的にPOPFileが起動するように設定できる。
次の内容を、追記する。
export POPFILE_ROOT=/usr/sbin/popfile1.1.1/
export POPFILE_USER=/usr/sbin/popfile1.1.1/
perl /usr/sbin/popfile1.1.1/popfile.pl &


◎POPFileのキープアライブ(障害の自動検出と自動回復)の方法について (POPFileのハングアップ対策)

これまで何年もPOPFileを使ってきたが、たまに「落ち」てアクセスできなくなっていることがあった。
その場合は、再度POPFileを起動すれば済むが、これを自動的に回復できるように考えてみた。
POPFileがハングアップ、フリーズしても、自動的に復旧させられるようにする。

(方法)
POPFileが動作しているかどうかチェックし動作していなければ再起動するスクリプト(keep_popfile)を次のように作成。(実行属性を与えることを忘れずに。)
crontabを使って、このスクリプトを5分ごとに動作させる。
#!/bin/sh

TMPFILE=/tmp/keep_popfile.tmp.$$

if wget http://127.0.0.1:8081/security --output-document=$TMPFILE > /dev/null 2>&1

then
echo 'popfile is running.' > /dev/null
rm /tmp/keep_popfile.tmp.*

else
echo 'popfile is freezing'
date >> /usr/sbin/popfile1.1.1/freezing_at-the-time.log
export POPFILE_ROOT=/usr/sbin/popfile1.1.1/
export POPFILE_USER=/usr/sbin/popfile1.1.1/
perl /usr/sbin/popfile1.1.1/popfile.pl &

fi

<処理の流れ>
1、crontabでこのスクリプトが5分ごとに動作し、毎回http://127.0.0.1:8081/securityの読み込みを試みる。
2、もし読み込めなかったらPOPFileがダウンしていると判断する。
3、その場合、/usr/sbin/popfile1.1.1/freezing_at-the-time.logというファイルに、そのときの日時を追記する。
4、そして、POPFileを再起動する。

さらに、crontabで、5分ごとにkeep_popfileスクリプトを実行しPOPFileを監視する設定を行う。
[root@server01 popfile1.1.1]# crontab -e
*/5     *       *       *       *       /usr/sbin/popfile1.1.1/keep_popfile

さて、このようにするとハングアップしていても自動的に復旧してくれるようになり、保守が楽になった。

ちなみに、3のログ記録処理では、たとえば次のように記録されていく。
[root@server01 popfile1.1.1]# cat freezing_at-the-time.log
Sat Aug  6 08:24:01 JST 2011
Wed Aug 10 21:30:01 JST 2011
Wed Aug 17 00:12:03 JST 2011
Thu Sep 22 17:18:01 JST 2011
Thu Oct 20 21:42:01 JST 2011
Mon Oct 24 05:00:03 JST 2011
Sat Oct 29 13:54:02 JST 2011

いうまでもなく、
上記のスクリプトで指定しているURLを間違えると、POPFileが起動していないとみなされるため、
POPFileが何重にも起動されようとし動作がおかしくなるので、注意。






◎動作させているpopfileの設定内容や受信メールログを、新規マシンのpopfileへ移行する方法

(注意)
・ただし移行元と移行先のpopfileは共に、上の手順によって構築された環境で動作しているものとする。
・移行先のpopfileは停止させて作業する。


移行元マシンのpopfileのディレクトリにある次のファイルやディレクトリを、
新規マシンのpopfileのディレクトリに上書きコピーする。
popfile.cfg
popfile.db
messages (←ディレクトリ)



(参考)
・POPFile - Automatic Email Classification < http://getpopfile.org/wiki> 2011/06/30
・クロスプラットフォーム版のインストール方法 < http://getpopfile.org/docs/jp:howtos:crossplatforminstall > 2011/06/30
・MeCab: Yet Another Part-of-Speech and Morphological Analyzer < http://mecab.sourceforge.net/ > 2011/06/30

投げ銭

★当サイトへの投げ銭(PayPal)★

Ad

Ad