2007/7/6 金曜日

MailScannerが隔離したファイルを定期的に削除する

Filed under: Tech::Linux — oohashi @ 19:31:39

ウイルス対策・スパム対策ソフトMailScannerは、ウイルスを検知した場合、 「/var/spool/MailScanner/quarantine」ディレクトリに隔離するが、インストール直後はこの隔離ファイルをそのまま残し続ける。そのままだと/varディレクトリのHDD容量を圧迫してしまうため、定期的に削除する必要がある。

MailScanner付属のperlスクリプト/etc/cron.daily/clean.quarantineを修正する。

#!/usr/bin/perl

#
# IMPORTANT NOTE:
#
# Change the next line to 0 instead of 1 to enable this script.
# By default it will be disabled and will not do anything.

#$disabled = 1;
$disabled = 0;

$quarantine_dir = ‘/var/spool/MailScanner/quarantine’;
$days_to_keep   = 30;

exit if $disabled;

コメントにあるように「$disabled = 1;」を「$disabled = 0;」にする。保存する期間は「$days_to_keep = 30;」で指定する。

2007/7/5 木曜日

BlueQuartzでsendmailの再起動時にMailScannerが再起動するように修正する

Filed under: Tech::Linux — oohashi @ 18:16:12

BlueQuartzでは、メールのドメイン拒否を管理画面から設定できるのだが、設定するとsendmailが再起動するようになっている。このときMailScannerなどのウイルス・スパム対策ソフトを使っていると、MailScannerなどを経由しないでsendmailが直接メールを送受信するようになってしまう。

これを防ぐには、BlueQuartzの「/usr/sausalito/handlers/base/email/restart.pl」」の以下の箇所を修正する。

Sauce::Service::service_run_init(’sendmail’, ‘restart’) if $obj->{enableSMTP};

ここを

Sauce::Service::service_run_init(’MailScanner’, ‘restart’) if $obj->{enableSMTP};

に修正する。

WordPress2.0.7の文字コードをEUC-JPからUTF-8へ変換する

Filed under: Tech::Linux — oohashi @ 16:52:04

WordPressME 2.0.7はデフォルトがEUC-JPになっていて、そのままなにも考えずにインストールするとEUC-JPで投稿などのデータを登録し、かつシステムで利用する文字列もすべてEUC-JPでデータベース内に登録される。

EUC-JPが前提になっていながら、管理画面の「オプション」-「表示設定」の注意書きに「RSSフィードの文字コード出力に関してはUTF-8を推奨。MEでは上記設定に関わらずRSSフィードをUTF-8で出力しています。」とあるように、WordPressではRSSに関しては出力もデータベースへの保存もすべてUTF-8が前提になっているようだ。実際にダッシュボードで表示されるRSS関連がUTF-8で取り込まれている。RSS関連も含めてオプションに関するものは「wp_options」テーブルに格納されているが、結果的にwp-optionsテーブルは、UTF-8とEUC-JPが混在する形になっている。

文字コードが混在していながら、文字化けもしないで表示されているのは、MySQL内では、すべてのテーブルが「ENGINE=MyISAM DEFAULT CHARSET=latin1;」と定義されていて、MySQL側で文字コードを変換しながら処理しているためと思われる。

WordPressMEは、2.2.1などではUTF-8が前提になっていて、プラグインなどもUTF-8が前提になっているため、はやめに文字コードをEUC-JPからUTF-8に変換したほうがいいと思われる。

WordPressME 2.0.7で文字コードをEUC-JPからUTF-8に変換するには、ダッシュボードで表示されるRSS関連をすべて破棄し(RSS関連は文字コードを変換後にWordPressに接続したとき、あらためて取得される)、いったんすべてをEUC-JPベースにする。RSS関連のデータはwp_optionsテーブルのoption_idが66、68、70番になっている。

# mysql -u root -p wordpress
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -AWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 520 to server version: 4.1.11Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.mysql> UPDATE `wp_options` SET `option_value` = ” WHERE `option_id` = 66;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> UPDATE `wp_options` SET `option_value` = ” WHERE `option_id` = 68;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> UPDATE `wp_options` SET `option_value` = ” WHERE `option_id` = 70;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> \q
Bye
#

データベースをすべてバックアップする。

# mysqldump -u root -p –default-character-set=binary wordpress > wordpress.dump

バックアップしたファイルをFTPでダウンロードし、秀丸で文字コードをEUC-JPからUTF-8に変換してから(このとき「ENGINE=MyISAM DEFAULT CHARSET=latin1;」は修正しない)、サーバにFTPでアップロードする。

既存のデータベースを削除し、あらためてデータベースを作成してからリストアする。

# mysqladmin -u root -p drop wordpress
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.Do you really want to drop the ‘wordpress’ database [y/N] y
Database “wordpress” dropped# mysqladmin -u root -p create wordpress
Enter password:

# mysql -u root -p wordpress < wordpress.dump

この状態でWordPressに接続すると「Warning: Invalid argument supplied for foreach() in /home/sites/www.hyperdyne.co.jp/web/wordpress/wp-includes/capabilities.php on line 19」というエラーが発生して、管理画面のメニューが表示されない。原因は、wp-optionsテーブルの先頭のほうに役割(ロール wp_user_roles)を定義している箇所があり、「s:4:\”name\”;」に続く箇所が役割名になっている。デフォルトでは「s:6:\”管理人\”;」「s:6:\”Editor\”;」「s:6:\”投稿者\”;」「s:11:\”Contributor\”;」「s:10:\”Subscriber\”;」の5つが登録されている。「s:」に続く数値は文字列のバイト数を意味するようで、UTF-8環境で3文字の文字列の場合には「s:6:」でなく「s:9:」と、同じく2文字の場合には「s:6:」とする必要がある。この問題を解決するスクリプト(my_cap.php)が「WordPress標準ガイドブック」(http://www.wordpress-guide.com/2006/11/11/capabilities/)にある。このスクリプトをWordPressのwp-adminディレクトリにFTPでアップロードしてから、「http://www.hyperdyne.co.jp/wordpress/wp-admin/my_cap.php」のようにURLを直接指定して実行する。このときブラウザで文字化けを起こしているときは、「表示」メニューの「エンコード」で「Unicode(UTF-8)」を指定する。

管理画面にログインし、「オプション」-「表示設定」-「ブログの文字コード」で「EUC-JP」となっている箇所を「UTF-8」に修正して、「設定を更新する」ボタンをクリックする。

最後にWordPressディレクトリにあるwp-config.phpファイルの中の「mb_internal_encoding(”EUC-JP”);」を「mb_internal_encoding(”UTF-8″);」に、「define (’WPLANG’, ‘ja_EUC’);」を「define (’WPLANG’, ‘ja_UTF’);」に修正する。

my_cap.phpなど作業用ファイルをすべて削除する。

HTML convert time: 1.110 sec. Powered by WordPress ME