FreeBSD Ilohamail - eiichiromomma/CVMLAB GitHub Wiki

(FreeBSD) Ilohamail

お手軽なPHPベースのWebMailシステム

ビルド

MySQLがデフォでビルドされる。 貧弱なサーバだとinodeが足りなくなるのでportsで-D WITHOUT_MYSQLくっつけてmake installすると良いがカレンダーやブックマークが使えなくなる。少ない設定ですんなり動く便利なWebmailシステム。

落とし穴

どうやら添付ファイル周りが怪しく、送信は出来るが受信して開こうとすると、ことごとくファイルが壊れる。LZHでもPDFでも微妙に壊されるのでタチが悪い。ここ を参考にファイルの一部を書き換えたら成功したかも。mbstring周りが入っていないとPHPでエラーが出るので、ports経由でlang/PHP4-extensionsをmake installする必要がある。もちろんモジュールの選択画面でMBSTRINGを必ず選択すること。apache2でも無事動作してるっぽい。

やっぱりMySQL導入

やっぱりMySQLを使った個人情報管理やカレンダー機能を使いたいので入れてみる。 特別なビルドはしないので、アーカイブ内のMySQLディレクトリをまるごと

/usr/local/share/ilohamail/MySQL

にコピーする。恐らく存在しないので当然事前にディレクトリを掘っておく。

データベース登録

ilohamailのインストール時に表示された方法でDBを作成。

Using the MySQL back-end is also recommended.

1. Create database user who has rights on webmail database manipulation
   by following "sample" mysql commands:

   $ mysql -u root -p
   mysql> use mysql;
   mysql> grant select,insert,update,delete,index,
       -> alter,create,drop,references, lock tables,
       -> create temporary tables on webmail.* to webmail@localhost
       -> identified by 'password';
   mysql> flush privileges;

passwordは当たり前だがpasswordと入れてはいけない。

2. Create a MySQL database.
   $ mysqladmin create webmail 

となってるけど

   $ mysqladmin create webmail -p

とする。

3. Create tables.
   $ mysql webmail < /usr/local/share/ilohamail/MySQL/sql -p

も同様にケツに-pをつける。

4. Configure /usr/local/www/ilohamail/conf/db_conf.php.

db_conf.phpの編集は

$DB_HOST="localhost";
$DB_USER="webmail";
$DB_PASSWORD="入れたパスワード";

とするだけ。

5. Set value of $backend in /usr/local/www/ilohamail/conf/conf.inc from "FS" to "DB".

conf.incは

$backend = "DB";

とする。

以上で完了。

ファイルサイズ制限

添付ファイルの制限対策はphp.iniを編集。FreeBSDの場合/usr/local/etc/php.ini

post_max_size=8M
upload_max_filesize=2M
memory_limit = 8M 

をそれぞれ適当なサイズに変更。

QPOPPERとの相性

一覧でメールを削除するとエラーが出る。 パーミッションを弄ると直るとか本家のMLでは言われているが、どうにもならない。 最新版のソースを見てみるとエラーの出るfputs関数の箇所を@fputsに置き換えている。

PHPでは関数の前に@を付けるとエラーを無視してくれるらしい。

[個人情報]の挙動

[個人情報]で署名を設定しても反映されない。 ソースを見てもおかしい所はなく、CVSから拾ってきた最新版のソースでも署名の挿入に関しては現状と変わりないようだ。

MySQLを使っているので挙動を覗いてみる。 # mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is xxx to server version:

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

mysql> connect webmail;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Connection id:    xxx
Current database: webmail
mysql> show tables;

| Tables_in_webmail | bookmarks
| cache
| calendar
| colors
| contacts
| identities
| prefs
| sessions
| user_log
| users

10 rows in set (0.00 sec)

テーブルは作成できている。

mysql> select * from identities;

とすると登録者の名前やe-mailの一覧が出てくる。 署名も入力したものが表示されている。

mysql> select * from prefs;

| id | colorize_quotes | detect_links | view_max | show_size | save_sent | sent_box_name | delete_trash | trash_name | rootdir | user_name | email_address | signature1 | show_sig1 | lang | charset | sort_field | sort_order | list_folders | view_inside | timezone | html_in_frame | show_images_inline | showContacts | showCC | closeAfterSend | showNav | folderlistWidth | hideUnsubscribed | compose_inside | show_quota | showNumUnread | refresh_folderlist | folderlist_interval | radar_interval | theme | main_toolbar | alt_identities | main_cols | clock_system | nav_no_flag |

とやるとドバっと出てくるので絞る。

mysql> select signature1 from prefs where user_name="[個人情報]で設定した名前";

としたが空っぽ。

WebでIlohamailにログインして[個人情報]で[変更]を選択し、デフォルトにチェックを入れて変更ボタンを押す。

mysql> select signature1 from prefs where user_name="[個人情報]で設定した名前";

| signature1
| 作成した署名

1 row in set (0.00 sec)

で反映された。 これが消えるのが挿入されない理由と思われる。 試しに[設定]の[一般]に戻り、[いますぐ反映]ボタンを押してみる。

再び

mysql> select signature1 from prefs where user_name="[個人情報]で設定した名前";

とすると消えた。

どうやら[いますぐ反映]は押したら[個人情報]のデフォルトを再設定する必要があるらしい。

個人情報のデフォルトを残すQuick Hack

ソースを見るとどうやらprefs.phpで情報を読み込む時にsignature1に署名データを入れていないのが原因らしい。 というわけでまずilohamail/lang/jp/prefs.incを以下のように変更する。

--- prefs.inc.org       Thu Apr  6 18:07:10 2006
+++ prefs.inc   Thu Apr  6 18:07:36 2006
@@ -24,6 +24,8 @@
 $prefsStrings["0.2"] = "Email: ";
 $prefsStrings["0.3"] = "「%s」ページで設定できます。";
 $prefsStrings["0.4"] = "未指定";
+$prefsStrings["0.5"] = "署名: ";
+$prefsStrings["0.6"] = "設定済み";
 $prefsStrings["1.0"] = "言語";
 $prefsStrings["1.1"] = "インターフェース言語: ";
 $prefsStrings["1.2"] = "標準文字コード: ";

これで署名のチェック項目用メッセージが追加される。但し、他言語も対応する場合はlangの他のファイルも単語を選んで同じように変更する。

そしてilohamail/source/prefs.phpを以下のように変更。

※wikiのphpのコードを狙ってエロリンクを突っ込むbotが居るようなので画像に変更

これで[すぐに反映]ボタンを押してもデフォルトが消えなくなった。

とりあえずの日本語対応パッチ

バックアップ代わりにパッチを置いておく。

日本語フォルダ

Ilohamailでは独自のUTF7-IMAP実装をしているため、他のメーラーでは扱えない日本語フォルダになる。

※テスト中につき注意

文字化けの原因

UTF7周りの独自実装が日本語に対応していない為と思われる。

対応

フォルダに関するUTF7-IMAPの変換をmbstringに任せる。

当然mbstringが必須。

パッチ

大した事はしていないが量が多いのでファイルも用意。

やっている事1

UTF7EncodeString($str)

mb_convert_encoding($str,"UTF7-IMAP", "EUC-JP")

に置換。

やっている事2

UTF7DecodeString($str);

mb_convert_encoding($str,"EUC-JP", "UTF7-IMAP");

に置換。

配布ファイル