Squirrelmail プラグイン Filters

SpamassassinというプラグインとFilters というプラグインを Squirrelmail OSX(10.6)サーバ で使ってみたのは前の投稿だ。

トラブルが生じた。プラグインのFilters で、検出文字列に日本語のようなマルチバイトの文字列が含まれるとsquirrelmail にログインできなくなってしまう。そんなのユーザはわからないからフィルタを設定したらログインできなくなってしまったのだ。

エラー:要求を完了できませんでした。
問合せ: SEARCH CHARSET ISO-2022-JP ALL UNDELETED From
理由: Invalid search key

とのエラーメッセージが出てきてユーザレベルではにっちもさっちも行かなくなる。

ユーザからのクレームがあって、直すのに、なぜかわからなので苦労した。日本語の問題だということしかわからない。

http://example.com/webmail/src/configtest.php

でsquirrelmail の config をテストすると

エラーがあって、short_open_tag = Off をOn にしろといっている。

/etc/php.ini の225行目で;

short_open_tag = Off

short_open_tag = On

としたらこのエラーは解消し config テストをパスした。しかし相変わらず  Filteters プラグインを使うとログインできない。同じエラーメッセージだ。

 

あちこち探し回って、ようやくわかったのが、フィルターが日本語を理解してくれないということがわかった。ユーザがアクセスする度に、ユーザが設定したフィルタのファイルを読むわけで、ここに日本語があると止まってしまうわけだ。

20130910squirrelmail-filters-1

はフィルタの検出文字列が日本語なので、だめで

20130910squirrelmail-filters-2

は、問題ないのだ。半角英数字しか受け付けられないのだ。

 

ユーザのフィルタの設定がどこにあるかわからん。あちこち探した。squirrelmail のconfigure でどこにあるかが表示される、というかどこに置くかを設置できることを思い出した。ここから判断すればいい。

/usr/share/squirrelmail で ./configure を実行すると

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
Main Menu —
1. Organization Preferences
2. Server Settings
3. Folder Defaults
4. General Options
5. Themes
6. Address Books
7. Message of the Day (MOTD)
8. Plugins
9. Database
10. Languages

D. Set pre-defined settings for specific IMAP servers

C Turn color on
S Save data
Q Quit

Command >>;

とでてくるから、4のGeneral Options を選ぶと

SquirrelMail Configuration : Read: config.php (1.4.0)
———————————————————
General Options
1. Data Directory : /private/var/db/squirrelmail/data/
2. Attachment Directory : /private/var/db/squirrelmail/attachments/

以下略

とある。つまりDataは /private/var/db/squirrelmail/data/にあるわけだ。これで調べないと、ユーザ毎のフィルタの設定ファイルがどのditrctoryにあるのか探すのは大変だ。サーバによって違うからな。というかインストールするときに決まっちゃうわけだけど。

そんでもって/private/var/db/squirrelmail/data/に行くと、

[ユーザ名].pref  というファイルがユーザ分だけあるから、該当するユーザの[ユーザ名].pref を開く。

filter16=From,。レ、エチ・フ。ロ,Deleted Messages

のように日本語のようなマルチバイト文字が含まれているフィルターがある。エディタでこのフィルタを削除しちゃえばいい。

filter2=Subject,&ZyiZrFA2aX2Q6A-,INBOX.&ZyiZrFA2aX2Q6A-

これは件名をフィルタの検出文字列にして、検出文字列が日本語で、受信箱の日本語名フォルダに移動させるというフィルタだ。これも引っかかる。

多くのプラグインは日本語に対応していないのでしょうがない。ユーザレベルでフィルタの削除ができないと、大変だ。

あるサイトのWebメールの使い方のページではフィルタのところに

メッセージフィルタ機能の条件に日本語等のマルチバイト文字を使用することはできませんのでご注意ください。マルチバイト文字を設定した場合、次回から SquirrelMail にログインできなくなります。

と表示してあった。ユーザにとっては、これじゃわからないよな。もし設定してログインできなくなっちゃたら、どうしたらいいんだよ。フィルターの設定のページに注意書きを加えれば、少しはましになるが、加えるのも面倒だphpファイルを書き換えないといけない。

 

他のプラグインは;

http://squirrelmail.org/plugins.php にある。

使わないけど、一応他のプラグインを使うとき、 compatibility というプラグインがあって、squirrelmail のバージョンに合わせて(パッチを充てて)くれるものらしい。

compatibility :Allows plugins to remain compatible with all versions of SquirrelMail.  というもの。

/usr/share/squirrelmail/plugins/compatibility で

sh-3.2# patch -p0 < patches/compatibility_patch-1.4.2.diff
patch: **** rejecting file name with “..” component: ../../functions/strings.php

squirrelmail のバージョンに合わせたパッチを当てるため 上記を実行する。