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>