LINK


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

人気の投稿(1ヶ月間)

Ad

Ad

ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2024年7月28日日曜日

【Raspberry Pi 5】USBタイプWifiドングルによるWiFi接続設定をコマンドで行う手順【Raspberry Pi OS Lite bookworm】

 Raspberry Pi 5をメタルケースに入れたために、電波が遮蔽されてしまうのか内蔵されているWiFi子機によるネット接続が非常に低速だった。

 そこで、USBタイプWifiドングルを外部接続して別途WiFi接続を行おうと考えた。その結果、外部ドングルを用いたWiFi接続の速度は改善され、ブラウジングは高速になった。

 以下では、このときのドングルの接続から、WiFi設定と接続について記述している。設定はすべてコマンドを用いて行った。

 

■ WiFiドングルが認識されるか確認

  今回使用したドングルはUSB2.0接続用300Mbpsタイプのものである。


◯ WiFiドングルを差し込む前の状態

$ nmcli d

DEVICE         TYPE      STATE            CONNECTION    
wlan0          wifi      接続済み         OldConnection
lo             loopback  接続済み (外部)  lo            
p2p-dev-wlan0  wifi-p2p  切断済み         --            
eth0           ethernet  利用不可         -- 

 

◯ WiFiドングルを差し込んだ直後の状態

$ nmcli d

DEVICE         TYPE      STATE            CONNECTION    
wlan0          wifi      接続済み         OldConnection
lo             loopback  接続済み (外部)  lo            
wlan1          wifi      切断済み         --            
p2p-dev-wlan0  wifi-p2p  切断済み         --            
eth0           ethernet  利用不可         --

 

wlan1 」というデバイスが追加された。

 

■ WiFi接続の設定と接続

 ◯ 接続するSSIDを確認

$ nmcli dev wifi list

XX:XX:XX:XX:XX:XX  xxxxxxxxxx          インフラ  2     130 Mbit/s  80      ▂▄▆_  WPA2


◯ 接続を作成

$ sudo su

# nmcli con add con-name wlan1 ifname wlan1 type wifi ssid xxxxxxxxxx

接続 'wlan1' (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) が正常に追加されました。

 

 ssidには、アクセスポイントで公開している接続先を指定した。

 インターフェイス名(ifname)は、最初に「nmcli d」で確認したデバイス名「wlan1」を指定 した。

 接続名(con-name)は任意の名称でよいが、デバイス名と同じように「wlan1」を指定した。 


 ◯ セキュリティーモードを追加

# nmcli con modify wlan1 wifi-sec.key-mgmt wpa-psk

 

◯ SSIDに対応するWiFiパスワードを指定

# nmcli con modify wlan1 wifi-sec.psk WIFIpassword


◯ 接続開始

# nmcli con up wlan1

接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/4)


 エラーが出て接続がうまくいかない場合は、ラズパイを再起動するとうまくいった。


◯ 古いWiFi設定(内蔵WiFi子機を使った接続設定)を削除

  有効な設定が2つあると両方が接続状態になってしまうため、不要なWiFi接続は削除した。

# nmcli con del OldConnection

接続 'cccccccccc' (cccccccc-cccc-cccc-cccc-cccccccccccc) が正常に削除されました。


 同じ内臓WiFiデバイスにおいて複数の接続設定が存在していた場合、上記のように一つだけ接続設定を削除しても、残っている接続設定で自動的にリトライされることになる。そのため、「nmcli d」で確認してみて、「wlan0          wifi      接続中 (設定中)  AnotherOldConnection」のような表記が出ていないかを確認するとよい。もし、あればその接続設定も上記コマンドのようにして削除しておくと良い。


◯ 状態確認

$ nmcli d

DEVICE         TYPE      STATE            CONNECTION
wlan1          wifi      接続済み         wlan1
lo             loopback  接続済み (外部)  lo         
wlan0          wifi      切断済み         --         
p2p-dev-wlan0  wifi-p2p  切断済み         --         
eth0           ethernet  利用不可         --


 最初に接続で使用していた内蔵WiFi子機による接続「wlan0」が「切断済み」となり、代わりに外部USBドングルのWiFi子機による接続「wlan1」が「接続済み」になっている。


(参考)

・【Linux CentOS 7 64bit】WIFI接続の設定方法(コマンドラインで「nmcli」を使用する。)

< http://akira-arets.blogspot.com/2016/11/linux-centos7-setting-wifi-connection.html > 2024年7月28日

 

2024年6月15日土曜日

【Raspberry Pi 5】ブータブルNVMe M.2 SSD搭載時に複製元microSDから起動できない現象の仕組みと対処【Raspberry Pi OS Lite bookworm】

■ 概要

 Raspberry Pi 5は、「NVMe M.2 SSD」と「マイクロSD」とを内蔵でき、設定に応じていずれかからシステムを起動できる。

 ところが、この起動ディスクの切り替えがうまくできない問題にみまわれ、その原因がディスクの内容(識別子)にあるとわかったので、今後の運用に備えて、周辺の事情についても併せて整理しておきたいと思う。


■ 起動ディスクの切り替えができない不具合が生じた環境とディスクの状態について

◯ 公式イメージを書き込んだ「マイクロSD」でシステムをブート

 Raspberry Pi OS Lite(2024-03-15-raspios-bookworm-arm64-lite)の公式イメージを「マイクロSD」にddコマンドで書き込んだものを用意した。

 本体Raspberry Pi 5には、拡張ボード(Geekworm X1001 V1.1 PCIe NVMe M.2 SSD 2280)空の「NVMe M.2 SSD」を取り付けた。
 そこに、さきほど用意したブート可能な「マイクロSD」を挿し込み、システムを起動し、初期設定を済ませ、aptによるシステムの更新作業、ファームウェアの更新を行った。


◯ 「NVMe M.2 SSD」でシステムをブート

 アップデートしたシステムを含む「マイクロSD」(/dev/mmcblk0)の全内容を、空の「NVMe M.2 SSD」(/dev/nvme0n1)にddコマンドで次のように丸ごとコピーした。

dd if=/dev/mmcblk0 of=/dev/nvme0n1 status=progress

 「raspi-config」コマンドのTUI(テキストユーザーインターフェイス)で、「 Advanced Options →Boot Order」から「NVMe M.2 SSD」が起動ディスクとして優先的に選択される設定にした。

 その後、poweroffして「マイクロSD」を取り外してから、起動すると「NVMe M.2 SSD」を起動ディスクとしてシステムがブートした。



◯ 「マイクロSD」で起動するように設定した上でシステムをブート(問題発生)


 共にブート可能な「NVMe M.2 SSD」と「マイクロSD」とが、本体Raspberry Pi 5に接続された状態で、「raspi-config」コマンドのブート設定で「マイクロSD」が優先的に選択されるようにし、rebootした。
 このとき、常に「NVMe M.2 SSD」でブートしてしまう問題にみまわれた。



■ この不具合の原因について

 結論から言うと、これは、ディスク自体に保存されているDisk identifierの値が、これらの「NVMe M.2 SSD」と「マイクロSD」とで同じだからだとわかった。Disk identifierの値が同じである場合、システムが2つのディスクを区別できない状態になり、常に「NVMe M.2 SSD」でブートしてしまうことになったと考えられる。
 実際、「NVMe M.2 SSD」と「マイクロSD」とでDisk identifierの値が異なる場合には、設定の通りに起動ディスクが選択され、意図したディスクから起動するようになった。

 ディスク自体に保存されているDisk identifierの値が同じになってしまったのは、「NVMe M.2 SSD」の内容が、「マイクロSD」の内容からddコマンドで複製したからである。ディスクの中身がddコマンドで丸ごとコピーされたので、ディスク自体に保存されているDisk identifierの値が同じになってしまう。


■ 疑問点と検証

 しかし、次の場合は、うまく「マイクロSD」からシステムが起動した。

 今、本体Raspberry Pi 5には先程と同じ「NVMe M.2 SSD」だけが接続されたままであり、「raspi-config」コマンドのブート設定で「マイクロSD」が優先的に選択されるよう設定した上でシャットダウンしている。

 同じ「マイクロSD」にRaspberry Pi OS Liteのオリジナルイメージデータをもう一度ddコマンドでもう一度書き込んで初期化したものをその本体Raspberry Pi 5に挿し込み起動した。

 すると、「NVMe M.2 SSD」でなく、設定した通りに「マイクロSD」からシステムが起動して、初期設定のためのTUIダイアログに行き着いた。疑問点はここである。

 「マイクロSD」の内容(Disk identifierの値)は、同一のRaspberry Pi OS Liteのオリジナルイメージからddで書き込んでいるので、一回目の書き込みと、二回目の書き込みとで同一であるはずである。そして、一回目の書き込みで作成した「マイクロSD」からddで丸ごとコピーしたので、「NVMe M.2 SSD」の内容(Disk identifierの値)は、二回目の書き込み「マイクロSD」の内容(Disk identifierの値)と同じはずである。
 つまり、全て生まれはRaspberry Pi OS Liteのオリジナルイメージだから、書き込んだディスクのDisk identifierの値が同じになるはずである。しかし、オリジナルイメージでもう一度初期化(二回目の書き込み)を行った「マイクロSD」は「NVMe M.2 SSD」としっかり区別され、設定した通りに「マイクロSD」からシステムが起動したという点である。

 そこで、次の手順で、Raspberry Pi OS Liteのオリジナルイメージで初期化した「マイクロSD」について、本体Raspberry Pi 5に挿し込み起動する前後で、ディスクの識別子(Disk identifier)の変化が生じているのか検証した。



■ 検証のための操作

□ 次の操作は、別のLinuxマシンでの操作である。

◯ ddコマンドでRaspberry Pi OS Liteのイメージデータを「マイクロSDカード(A)」に書き込み

# dd if='2024-03-15-raspios-bookworm-arm64-lite.img' of=/dev/sdb bs=20M status=progress


◯ ddコマンドで「SDカード(A)」を別の「マイクロSDカード(B)」に書き込み

# dd if=/dev/sdb of=/dev/sdg bs=10M status=progress


◯ 書き込み後、fdiskで「マイクロSDカード(A)」の情報を参照

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfb33757d

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1          8192 1056767 1048576  512M  c W95 FAT32 (LBA)
/dev/sdb2       1056768 5406719 4349952  2.1G 83 Linux



◯ 同様に、fdiskで「マイクロSDカード(B)」の情報を参照

# fdisk /dev/sdg

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdg: 234.1 GiB, 251406581760 bytes, 491028480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfb33757d

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdg1          8192 1056767 1048576  512M  c W95 FAT32 (LBA)
/dev/sdg2       1056768 5406719 4349952  2.1G 83 Linux


(注意)
gdiskには非対応だった。当OSディスクイメージはGPTでなくMBRを使用しているようである。そのため次の警告が表示されて、gdiskで表示できる「Disk identifier (GUID)」や「Partition unique GUID」がgdiskの起動の度に毎回変化するという挙動となり混乱を招く。

***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory. THIS OPERATION IS POTENTIALLY DESTRUCTIVE! Exit by
typing 'q' if you don't want to convert your MBR partitions
to GPT format!
***************************************************************


 以上の結果から、ddコマンドでディスクイメージをコピーしても、「Disk identifier: 0xfb33757d」は変化しないことがわかった。



◯ 各「マイクロSDカード」のファイルシステムを指示する識別子を確認した

 各「マイクロSDカード」について、各パーティションの中のファイルシステムを(一意に)指し示す「UUID」と、パーティションを指示する「PARTUUID」を確認した。


# blkid

/dev/sdb1: LABEL="bootfs" UUID="44FC-6CF2" TYPE="vfat" PARTUUID="fb33757d-01"
/dev/sdb2: LABEL="rootfs" UUID="93c89e92-8f2e-4522-ad32-68faed883d2f" TYPE="ext4" PARTUUID="fb33757d-02"

/dev/sdg1: LABEL="bootfs" UUID="44FC-6CF2" TYPE="vfat" PARTUUID="fb33757d-01"
/dev/sdg2: LABEL="rootfs" UUID="93c89e92-8f2e-4522-ad32-68faed883d2f" TYPE="ext4" PARTUUID="fb33757d-02"


 この結果から、ddコマンドでディスクイメージをコピーしても、パーティション中のファイルシステムを指示する識別子「UUID」は変化しないことがわかった。また、さきほどfdiskコマンドで確認した同一の「Disk identifier: 0xfb33757d」から「PARTUUID」が生成されていることがわかった。
 実際、ググってみても「93c89e92-8f2e-4522-ad32-68faed883d2f」、「44FC-6CF2」、「fb33757d」という文字列でいくつかのページがヒットしたので、他の人も同じ識別子を持つディスクを生成していることがわかった。

 また、これらの情報は、ディスクをマウント/アンマウントした後に確認しても変化しなかった。


◯「マイクロSDカード(B)」から「fstabファイル」の内容を確認した。

proc            /proc           proc    defaults          0       0
PARTUUID=fb33757d-01  /boot/firmware  vfat    defaults          0       2
PARTUUID=fb33757d-02  /               ext4    defaults,noatime  0       1


 ddコマンドによるコピー元である「マイクロSDカード(A)」もこれと同一だと考えられる。



□ いったんRaspberry Pi 5で操作を行う。

1、「マイクロSDカード(A)」を、Raspberry Pi 5に挿し込み、このディスクから起動した。

2、初回設定ウィザードが動作し、キーボードの設定、ユーザー名とパスワードの設定を行った。

3、作成したユーザーでログインした後、すぐにpoweroffコマンドでシャットダウンした。

4、シャットダウンしたことを確認後、「マイクロSDカード(A)」をRaspberry Pi 5から取り外した。



□ 再び、最初のLinuxマシンでの操作を行う。

 「マイクロSDカード(A)」を同じディスクスロットに挿し込んだ後、最初の手順と同様に情報を確認した。

# fdisk /dev/sdb

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): p
Disk /dev/sdb: 29.7 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x17ad7977

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdb1          8192  1056767  1048576  512M  c W95 FAT32 (LBA)
/dev/sdb2       1056768 62333951 61277184 29.2G 83 Linux


 すると、Raspberry Pi 5で初回起動する前の値「Disk identifier: 0xfb33757d」と、今回の値「Disk identifier: 0x17ad7977」は異なっていることがわかった。



# blkid

/dev/sdb1: LABEL="bootfs" UUID="44FC-6CF2" TYPE="vfat" PARTUUID="17ad7977-01"
/dev/sdb2: LABEL="rootfs" UUID="93c89e92-8f2e-4522-ad32-68faed883d2f" TYPE="ext4" PARTUUID="17ad7977-02"

/dev/sdg1: LABEL="bootfs" UUID="44FC-6CF2" TYPE="vfat" PARTUUID="fb33757d-01"
/dev/sdg2: LABEL="rootfs" UUID="93c89e92-8f2e-4522-ad32-68faed883d2f" TYPE="ext4" PARTUUID="fb33757d-02"


 Raspberry Pi 5で初回起動する前後で、ディスクのパーティションを識別する「PARTUUID」の値が変化していることがわかった。


 さらに、この変化に併せて、「fstabファイル」の内容も調整されていることがわかった。

proc            /proc           proc    defaults          0       0
PARTUUID=17ad7977-01  /boot/firmware  vfat    defaults          0       2
PARTUUID=17ad7977-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that



■ 結論

 以上のことから、Raspberry Pi OS Liteのオリジナルディスクイメージで初期化した「マイクロSD」は、本体Raspberry Pi 5に挿し込み初回起動することによって、オリジナルディスクイメージとは異なるディスクの識別子(Disk identifier)を持つようになる。

 またこれによって、ディスクのパーティションを識別する「PARTUUID」の値も変化し、さらにはそれに併せて「fstabファイル」の内容も書き換えられることがわかった。



■ まとめ

 今回の環境と条件のような場合では、「NVMe M.2 SSD」は、ddによるコピー元の「マイクロSD」と同一のディスクの識別子(Disk identifier)を持ったままである。ddコピーしただけではディスク識別子の書き換えは起こらない。

 ディスクの識別子(Disk identifier)が同一の「NVMe M.2 SSD」と「マイクロSD」とでは、起動ディスクの選択をしても区別ができずに、常に「NVMe M.2 SSD」でブートしてしまう。

 Raspberry Pi OS Liteのオリジナルディスクイメージで初期化した「マイクロSD」は、本体Raspberry Pi 5に挿し込み初回起動することによって、オリジナルディスクイメージとは異なるディスクの識別子(Disk identifier)を持つようになるため、先のような状況においても、「NVMe M.2 SSD」でなく、設定した通りに「マイクロSD」からシステムが起動させられる。

 「NVMe M.2 SSD」に対するコピー元の「マイクロSD」において、ディスクの識別子(Disk identifier)と、fstabの内容を変更すれば、先のような状況においても、「NVMe M.2 SSD」でなく、設定した通りに「マイクロSD」からシステムが起動させられるのはないかと思う。



(参考)
・Can't boot from SD card anymore?
< https://forums.raspberrypi.com/viewtopic.php?t=372103 > 2024年6月15日

2018年9月16日日曜日

【Linux CentOS 7】特定のパケットのみ別のルーティングテーブルを用いて転送する方法(ポリシールーティング)


IPパケットルーターとして動作しているLinuxマシンにおいて、
到達した特定のパケットのみを、異なるルーティングルールに基づいて、
別のデフォルトゲートウェイへ転送させる。(ポリシールーティング)

次のような処理で上記の動作は可能である。

1、特定のパケットをマークして識別可能にする。
2、マークされたパケットを指定したルーティングテーブルで処理する。



例えば、特定の送信元からのパケットのみ、指定したデフォルトゲートウェイを使うようにできる。

まず、最初、次の通常のデフォルトルートに従って、
192.168.100.0/24からのパケットが、192.168.0.1をゲートウェイとして、
192.168.200.0/24へ流れるようになっているものとする。

○通常のデフォルトルート設定
# ip route add default via 192.168.0.1 dev eth0

# ip route list
default via 192.168.0.1 dev eth0 proto static metric 100

そして、以下の設定を加えることによって、
さきのパケットのみ、別のデフォルトルートへ流れるようにする。


■新しいルーティングテーブルの編集

新しいテーブル101上にデフォルトルート設定

# ip route add default via 192.168.9.1 dev eth9 table 101

(ここで、同様にしてその他のネットワークへのルートを設定することもできる。)

登録したルートを確認

# ip route list table 101
default dev eth9 scope link


■マークされたパケットと作成したルーティングテーブルの関連付け

101(=0x65)でマークされたパケットが、作成済みルーティングテーブル101を使って、
ルーティング処理を行われるようにルール作成

# ip rule add fwmark 101 table 101

# ip rule list
0: from all lookup local
32765: from all fwmark 0x65 lookup 101
32766: from all lookup main
32767: from all lookup default

■作成したルーティングテーブルを用いて処理したいパケットの識別

ルーティング前の対象のパケットに対して、101をマークしている。
このマークはカーネル内で有効な情報である。

# iptables -t mangle -A PREROUTING -s 192.168.100.0/24 -d 192.168.200.0/24 -j MARK --set-mark 101

# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination       
MARK       all  --  192.168.100.0/24     192.168.200.0/24   MARK set 0x65
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination


変更に伴って、FORWARDのフィルタも適切に変更しておくこと。

これで、他のパケットがデフォルトゲートウェイ 192.168.0.1 へ流れる一方で、
この対象パケットのみデフォルトゲートウェイ 192.168.9.1 へ流れるようになる。

以上

2013年7月31日水曜日

【Linux CentOS6 64bit】samba共有でのファイルやフォルダへの操作履歴をログに残す【samba 3.5.10】

ファイルをネットワークで共有するために、ファイルサーバーソフトウェアのsambaを用いている。

利用ユーザーが増えてくると、ファイルとフォルダの作成や削除などの操作を、
ログに残しておいた方が良い場合がある。

新しいバージョンのsambaでは設定を行えば、簡単に共有のファイルやフォルダに対する操作をロギングできる。
sambaの共有にファイルやフォルダへの何らかのアクセスがあると、
その情報がrsyslogdを通して、ログファイルに書き込まれていくようになる。



<手順>
■sambaの設定ファイルである smb.conf の編集を行った

操作情報を記録するための設定は、各共有ごとに行った。
次の例は、sharename という共有においてファイルやフォルダへの操作をロギングする設定だ。
[sharename]
(省略)
vfs objects = full_audit
full_audit:prefix = %u|%I|%S
full_audit:failure = mkdir rmdir pwrite rename unlink
full_audit:success = mkdir rmdir pwrite rename unlink
(省略)
・full_audit:prefix = %u|%I|%S
指定している三つの値でそれぞれ、ユーザー名、IPアドレス、共有名が、併せて操作ログに記録されるようになる。

・full_audit:success = mkdir rmdir pwrite rename unlink
ファイルやフォルダの操作が成功した場合にログに残す操作を設定している。

mkdir  …フォルダの作成
rmdir  …フォルダの削除
pwrite  …ファイルへの書き込み (ファイルの作成ではない)
rename …リネーム
unlink  …ファイルの削除

定義された操作は他にも色々ある。(†1)
ログファイルが膨れ上がったり、ファイルシステムに負荷をかけたり、
悪影響を及ぼすかもしれないので、必要最小の記録にとどめている。

smb.conf を保存するだけで、sambaにこの新しい設定が反映されたようである。
(場合によっては、sambaの再起動が必要になるかもしれない)



■ rsyslogの設定を確認した

以上の設定がsambaで完了すれば、操作情報が、rsyslogに送られるようになるようだ。
rsyslogのデフォルトの設定には、次の記述がある。
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
*.infoというデフォルト設定が効いて、/var/log/messages にログが記録されていくようだ。

デフォルトの設定のまま変更はしていない。



■動作確認を行った

○次のコマンドで、hiro というユーザーによるsamba共有(sharename)に対する操作を、grepで抽出して表示させた。

[root@FServer log]# grep hiro /var/log/messages | less
Jul 31 00:00:30 FServer smbd[15060]: hiro|192.168.7.31|sharename|rmdir|ok|tree/14/test
hiroは、共有名sharenameにあるtreeフォルダ内14フォルダ内にある testというフォルダを削除したということがわかる。
そして、そのクライアントPCのアドレスは192.168.7.31である。


○削除フォルダに、さらにサブフォルダやファイルが存在している場合

削除したフォルダに、ファイルやサブフォルダがさらに存在していた場合でも、
まず削除対象のフォルダ内にあるファイルが削除(unlink)されて、
続いてフォルダが削除(rmdir)されている様子がログから読み取れた。



(参考)
・Samba – file audit log with full_audit
< http://a32.me/2009/10/samba-audit-trail/ > 2013年7月31日

・vfs_full_audit — record Samba VFS operations in the system log (脚注 1)
< http://www.samba.org/samba/docs/man/manpages/vfs_full_audit.8.html > 2013年7月31日

2012年10月17日水曜日

【Linux CentOS6.3 64bit版】GNOMEにSAMBAサーバへのアクセスリンクを追加する

GNOMEの上部バーにある「場所」に、「SAMBAサーバへのアクセス用リンク」を追加する方法

下記の方法でSAMBAサーバへアクセスができるということは、
同じ方法でWindows共有へもアクセスできると思う。



<手順>

1、「SAMBAサーバへのアクセス用リンク」を、GNOMEに追加したいユーザ(例.username)でログインする。

2、次のファイルをエディタで開き、新しい行に次のようにしてSAMBAサーバへのアクセス用リンクを追記する。
$ vi /home/username/.gtk-bookmarks
(省略)
smb://sambausername@192.168.X.Y/share/directory SAMBA共有
(省略)

○書式は次の通り。
smb://SAMBAユーザ名@サーバアドレス/共有名/サブディレクトリ リンクの名称


以上で、GNOMEの上部バー「場所」に、指定した”リンクの名称”でSAMBA共有へのリンクが作成される。

作成したリンクをクリックすると、パスワードの入力画面が現れる。
ここにSAMBAユーザ名に対応するパスワードを入力すると、ウインドウが開きSAMBAへアクセスできる。

2011年11月16日水曜日

【Linux CentOS 5.7】 epelリポジトリを追加する

CentOS5.7 64bit版に、epelリポジトリを追加する


rpmファイルは頻繁にアップデートされて名称が変わるので、下記コマンドにおいて、変更後の名称に置換する必要がある。
ブラウザなどでリンクにアクセスし、新しいepel-release・・・ファイルを探せば良い。

[root@localhost ~]# rpm -ivh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
あるいは、
[root@localhost ~]# rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/5/x86_64/epel-release-5-4.noarch.rpm

http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm を取得中
警告: /var/tmp/rpm-xfer.XXXXX: ヘッダ V3 DSA signature: NOKEY, key ID
準備中...                ########################################### [100%]
   1:epel-release           ########################################### [100%]

[root@localhost ~]#

2011年6月30日木曜日

【CentOS5.6】CPAN(The Comprehensive Perl Archive Network)を利用する際のセットアップ

CentOS5.6で、CPAN(The Comprehensive Perl Archive Network)を利用する際のセットアップ

(1)必要なモノをepelリポジトリからyumでインストールする

 epelリポジトリ利用のための設定は、次のパッケージをインストールするだけで自動的になされる。
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# yum install ncftp
 ncftpは高機能のファイル転送プログラムらしい。
次に行うCPAN利用のためのセットアップではこのプログラムがなければ進めない。


(2)CPAN利用のためのセットアップを行う

初回のみいろいろ質問される。セットアップ後は同じコマンドでCPANのプロンプトがすぐに現れる。
セットアップでは最後の方で質問される国の選択とリポジトリの選択以外はエンターキーでデフォルトを選択すればよい。

# perl -MCPAN -e shell

/usr/lib/perl5/5.8.8/CPAN/Config.pm initialized.


CPAN is the world-wide archive of perl resources. It consists of about
100 sites that all replicate the same contents all around the globe.
Many countries have at least one CPAN site already. The resources
found on CPAN are easily accessible with the CPAN.pm module. If you
want to use CPAN.pm, you have to configure it properly.

If you do not want to enter a dialog now, you can answer 'no' to this
question and I'll try to autoconfigure. (Note: you can revisit this
dialog anytime later by typing 'o conf init' at the cpan prompt.)

Are you ready for manual configuration? [yes]


The following questions are intended to help you with the
configuration. The CPAN module needs a directory of its own to cache
important index files and maybe keep a temporary mirror of CPAN files.
This may be a site-wide directory or a personal directory.



First of all, I'd like to create this directory. Where?

CPAN build and cache directory? [/root/.cpan]


If you want, I can keep the source files after a build in the cpan
home directory. If you choose so then future builds will take the
files from there. If you don't want to keep them, answer 0 to the
next question.



How big should the disk cache be for keeping the build directories
with all the intermediate files?

Cache size for build directory (in MB)? [10]


By default, each time the CPAN module is started, cache scanning
is performed to keep the cache size in sync. To prevent from this,
disable the cache scanning with 'never'.

Perform cache scanning (atstart or never)? [atstart]


To considerably speed up the initial CPAN shell startup, it is
possible to use Storable to create a cache of metadata. If Storable
is not available, the normal index mechanism will be used.

Cache metadata (yes/no)? [yes]


The next option deals with the charset your terminal supports. In
general CPAN is English speaking territory, thus the charset does not
matter much, but some of the aliens out there who upload their
software to CPAN bear names that are outside the ASCII range. If your
terminal supports UTF-8, you say no to the next question, if it
supports ISO-8859-1 (also known as LATIN1) then you say yes, and if it
supports neither nor, your answer does not matter, you will not be
able to read the names of some authors anyway. If you answer no, names
will be output in UTF-8.

Your terminal expects ISO-8859-1 (yes/no)? [yes]


If you have one of the readline packages (Term::ReadLine::Perl,
Term::ReadLine::Gnu, possibly others) installed, the interactive CPAN
shell will have history support. The next two questions deal with the
filename of the history file and with its size. If you do not want to
set this variable, please hit SPACE RETURN to the following question.

File to save your history? [/root/.cpan/histfile]
Number of lines to save? [100]


The CPAN module can detect when a module that which you are trying to
build depends on prerequisites. If this happens, it can build the
prerequisites for you automatically ('follow'), ask you for
confirmation ('ask'), or just ignore them ('ignore'). Please set your
policy to one of the three values.

Policy on building prerequisites (follow, ask or ignore)? [ask]


The CPAN module will need a few external programs to work properly.
Please correct me, if I guess the wrong path for a program. Don't
panic if you do not have some of them, just press ENTER for those. To
disable the use of a download program, you can type a space followed
by ENTER.

Where is your gzip program? [/bin/gzip]
Where is your tar program? [/bin/tar]
Where is your unzip program? [/usr/bin/unzip]
Where is your make program? [/usr/bin/make]
Where is your links program? [/usr/bin/links]
Where is your wget program? [/usr/bin/wget]
Warning: ncftpget not found in PATH
Where is your ncftpget program? []
Warning: ncftp not found in PATH
Where is your ncftp program? []
Where is your ftp program? [/usr/kerberos/bin/ftp]
Where is your gpg program? [/usr/bin/gpg]
What is your favorite pager program? [/usr/bin/less]
What is your favorite shell? [/bin/bash]


Every Makefile.PL is run by perl in a separate process. Likewise we
run 'make' and 'make install' in processes. If you have any
parameters (e.g. PREFIX, LIB, UNINST or the like) you want to pass
to the calls, please specify them here.

If you don't understand this question, just press ENTER.

Parameters for the 'perl Makefile.PL' command?
Typical frequently used settings:

PREFIX=~/perl non-root users (please see manual for more hints)

Your choice: []
Parameters for the 'make' command?
Typical frequently used setting:

-j3 dual processor system

Your choice: []
Parameters for the 'make install' command?
Typical frequently used setting:

UNINST=1 to always uninstall potentially conflicting files

Your choice: []


Sometimes you may wish to leave the processes run by CPAN alone
without caring about them. As sometimes the Makefile.PL contains
question you're expected to answer, you can set a timer that will
kill a 'perl Makefile.PL' process after the specified time in seconds.

If you set this value to 0, these processes will wait forever. This is
the default and recommended setting.

Timeout for inactivity during Makefile.PL? [0]


If you're accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.

Your ftp_proxy?
Your http_proxy?
Your no_proxy?
You have no /root/.cpan/sources/MIRRORED.BY
I'm trying to fetch one
LWP not available
CPAN: Net::FTP loaded ok
Fetching with Net::FTP:
ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY


Now we need to know where your favorite CPAN sites are located. Push
a few sites onto the array (just in case the first on the array won't
work). If you are mirroring CPAN to your local workstation, specify a
file: URL.

First, pick a nearby continent and country (you can pick several of
each, separated by spaces, or none if you just want to keep your
existing selections). Then, you will be presented with a list of URLs
of CPAN mirrors in the countries you selected, along with previously
selected URLs. Select some of those URLs, or just keep the old list.
Finally, you will be prompted for any extra URLs -- file:, ftp:, or
http: -- that host a CPAN mirror.

(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
Select your continent (or several nearby continents) [] 2 ← Asiaを選んでいる
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) Bangladesh
(2) China
(3) Hong Kong
(4) India
(5) Indonesia
(6) Israel
(7) Japan
(8) Kazakhstan
(9) Pakistan
(10) Republic of Korea
(11) Russia
(12) Saudi Arabia
(13) Singapore
(14) Taiwan
(15) Thailand
(16) Turkey
Select your country (or several nearby countries) [] 7 ←さらに、Japanを選んでいる
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(2) ftp://ftp.jaist.ac.jp/pub/CPAN/
(3) ftp://ftp.kddilabs.jp/CPAN/
(4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/
(5) ftp://ftp.riken.jp/lang/CPAN/
(6) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(7) ftp://ftp.u-aizu.ac.jp/pub/CPAN/
(8) ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/
Select as many URLs as you like (by number),
put them on one line, separated by blanks, e.g. '1 4 5' [] ●←1~8の中から好きなサーバを選択する

Enter another URL or RETURN to quit: []
New set of picks:
ftp://ftp.riken.jp/lang/CPAN/


commit: wrote /usr/lib/perl5/5.8.8/CPAN/Config.pm
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')

cpan>

これで完了。


【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

Ad

Ad