09 October 2006

SquirrelMail ログをMySQLに出力

Squirrel Logger プラグイン
MySQL 側でのインストール作業
SQLサーバに接続し、テーブルを作成します。
テーブル作成コマンドは、READMEファイルのサンプル例をそのまま使えます。テーブル作成後は、一応テーブルが出来ているかどうか確認します。

Shell Terminal での実行結果

%mysql -h dbserver.mycompany.co.jp -u username -p mydatabase
Enter password:********
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 27308420 to server version: 4.0.27

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show DATABASES;
+---------------+
| Database |
+---------------+
| mydatabase |
+---------------+
1 row in set (0.02 sec)

mysql> CREATE TABLE squirrel_log (
-> id int(11) NOT NULL auto_increment,
-> event varchar(30) NOT NULL,
-> username varchar(128) NOT NULL,
-> domain varchar(128) NOT NULL,
-> remote_address varchar(255) NOT NULL,
-> date datetime NOT NULL,
-> comments varchar(255) DEFAULT '',
-> PRIMARY KEY (id),
-> UNIQUE KEY id (id),
-> KEY event (event),
-> KEY domain (domain),
-> KEY date (date)
-> ) TYPE=MyISAM;

Query OK, 0 rows affected (0.00 sec)

mysql> show TABLES;
+-------------------------+
| Tables_in_mydatabase |
+-------------------------+
| squirrel_log |
+-------------------------+
1 row in set (0.00 sec)

mysql> desc squirrel_log;
+----------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------------------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| event | varchar(30) | | MUL | | |
| username | varchar(128) | | | | |
| domain | varchar(128) | | MUL | | |
| remote_address | varchar(255) | | | | |
| date | datetime | | MUL | 0000-00-00 00:00:00 | |
| comments | varchar(255) | YES | | | |
+----------------+--------------+------+-----+---------------------+----------------+
7 rows in set (0.01 sec)

mysql>

SquirrelMail 側でのインストール作業

config.php を変更する箇所

// $sl_logs = array( ...) の、SQLパラメータ部分の
// コメントアウトを外す

'SQL' => array(
'LOGIN' => 'LOGIN',
'LOGOUT' => 'LOGOUT',
'TIMEOUT' => 'TIMEOUT',
'MASS_MAILING' => 'MASS_MAILING',
'LOGIN_ERROR' => 'INVALID',
'ERROR' => 'ERROR',
),

// MySQL データベース接続のための DSN 構文

$sl_dsn = 'mysql://username:password@dbserver.mycompany
.co.jp/mydatabase';

// テーブル名を squirrel_log に書き換える (MySQL
// 側で作成したテーブル名とする)

$sl_insert_event_query = 'INSERT INTO squirrel_log
(event, username, domain, remote_address, date, comments)
VALUES ("%1", "%2", "%3", "%4", "%5", "%6")';

squirrel_logger プラグインは、何も設定しなくても SquirrelMail の data フォルダに squirrelmail_access_log というファイルで保存されるようになってます。

自動インストール用のスクリプトとか、付けて欲しいです。

参考までに、ログを表示するときは


mysql> select event,username,date from squirrel_log;
+---------+----------------------------+---------------------+
| event | username | date |
+---------+----------------------------+---------------------+
| LOGOUT | postmaster@mycompany.co.jp | 2006-10-09 01:50:21 |
| LOGIN | postmaster@mycompany.co.jp | 2006-10-09 01:50:49 |
| LOGOUT | postmaster@mycompany.co.jp | 2006-10-09 02:15:30 |
~ (以下省略) ~
+---------+----------------------------+---------------------+
23 rows in set (0.00 sec)

mysql>