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");
に置換。