FrontPage | changes | index | create | search | preferences

Ilohamail

Last-Modified: Fri Mar 26 16:05 2010; Revision: 1.22; by momma
edit | copy | diff | history | raw
  1. IMAP関連
  2. ビルド
  3. 落とし穴
  4. やっぱりMySQL導入
  5. データベース登録
  6. ファイルサイズ制限
  7. QPOPPERとの相性
  8. [個人情報]の挙動
  9. 個人情報のデフォルトを残すQuick Hack
  10. とりあえずの日本語対応パッチ

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

[edit]

IMAP関連

[edit]

ビルド

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

[edit]

落とし穴

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

[edit]

やっぱりMySQL導入

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

  /usr/local/share/ilohamail/MySQL

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

[edit]

データベース登録

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";

とする。

以上で完了。

[edit]

ファイルサイズ制限

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

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

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

[edit]

QPOPPERとの相性

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

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

[edit]

[個人情報]の挙動

[個人情報]で署名を設定しても反映されない。 ソースを見てもおかしい所はなく、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;
idcolorize_quotesdetect_linksview_maxshow_sizesave_sentsent_box_namedelete_trashtrash_namerootdiruser_nameemail_addresssignature1show_sig1langcharsetsort_fieldsort_orderlist_foldersview_insidetimezonehtml_in_frameshow_images_inlineshowContactsshowCCcloseAfterSendshowNavfolderlistWidthhideUnsubscribedcompose_insideshow_quotashowNumUnreadrefresh_folderlistfolderlist_intervalradar_intervalthememain_toolbaralt_identitiesmain_colsclock_systemnav_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="[個人情報]で設定した名前";

とすると消えた。

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

[edit]

個人情報のデフォルトを残す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を以下のように変更。

http://www.eml.ele.cst.nihon-u.ac.jp/~momma/img/ilohamail-php.png

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

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

[edit]

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

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

[edit]

Powered by WiKicker

日本大学理工学部へ 電気工学科へ 計測工学研究室へ