SquirrelMail

トップページのリスがかわいいSquirrelMailです。

でも。リスメールとかRisuMailは商標に引っかかりますので注意♪
参考:「リスメール」の名称の使用の制約について

あぁ、これでここも訴えられるのね・・・(つд∩) ウエーン (つд∩) ウエーン (つд・ ) チラ (つд∩) ウエーン
「リスメール」
結構、使ってる人居ますし、squirrelmailをイメージしたときに思いつく名前ですよね。
まぁ、本家の中の人が使うなって言っているのだから使わないほうがいいでしょう。
ってことで、別の名前を考えてみる・・・
webmail・・・cyrusのウェブメールじゃんよΣ(゚Д゚lll)
りすめ〜る・・・波ダッシュがポイント。でも、どこかのメーリングリストの名前だし煤i ̄△ ̄;)
ナッツメール・・・SquirrelMail webmail for nutsより。いまいちインパクトが・・・(´・ω・`)

まぁ、適当に(投げた)

やること一覧
	・前提条件SquirrelMailのインストールプラグインとか添付ファイルの容量拡大添付ファイル名の文字化け対策

関連ページ
	・postfixpostfix with smtp authapache2php4ローカルIPがメールヘッダに漏れる



前提条件

SquirrelMailはphpプログラムであり、動作にはphp4.x系が必要となる(php5系では動かない)

正常にhttp鯖が動作すること。
>>参考:apache2
http鯖上で正常にPHPが動作すること。
(php4.4.x系の場合、mb_send_mail()のバグが修正されていること)
>>参考:php4

httpd.confの修正

	# vi /opt/apache2/conf/httpd.conf
		(追加)
		┃DirectoryIndex index.html index.html.var index.php
バーチャルホストを追加
	# vi /opt/apache2/conf/vhost.conf
		(追加)
		┃<VirtualHost *>
		┃    ServerAdmin [your@mail.add]
		┃    DocumentRoot /home/www/webmail
		┃    ServerName [yourhost.yourdomain]
		┃    <Directory "/home/www/webmail">
		┃      Options FollowSymLinks Includes
		┃      AllowOverride None
		┃      Order allow,deny
		┃      Allow from all
		┃    </Directory>
		┃    ErrorLog logs/webmail-error_log
		┃    CustomLog logs/webmail-access_log combined env=!nolog
		┃</VirtualHost>
			注:DocumentRootはまだ存在しないのでhttpdを再起動するとエラーになる
「php」
phpの正式名称は「Hypertext Preprocessor」らしいです。
でも、何でphpになるのかな?
最初のpってなんだろう?(・、?)

SquirrelMailのインストール

まずはSquirrelMail本体のインストール
squirrelmail-1.4.8.tar.gzとall_locales-1.4.8-20060811.tar.gzを探してくる。
SquirrelMail - Webmail for Nuts!

	$ tar xvfz squirrelmail-1.4.8.tar.gz
	# mkdir [-p] /home/www/webmail
		

option説明など
-p指定したパスの途中のディレクトリが存在しない場合、
存在しない中間ディレクトリも新規に作成する

# chown -R [username]:[usergroup] /home/www/webmail 注:おまじないみたいなもの   一つ上の呪文(mkdir [-p] /home/www/webmail)を使ったときに実施   もちろんユーザー名と所属グループはhtmlの所有者に読み替えをすること $ cp -pR squirrelmail-1.4.8/* /home/www/webmail

option説明など
-pファイルの情報を保持したままコピーする
-R再帰的に処理する
これを使うとディレクトリごとコピーができる

日本語化処理
	$ mkdir temp
	$ cd temp
	$ tar xvfz ../all_locales-1.4.8-20060811.tar.gz
	$ ./install
		注:squirrelmailをインストールした場所を聞かれるので正確に答える
		注:面倒くさい上書き確認があるので全部「y」で(を
		注:本気で面倒臭いので、上書きを確認しないバージョン(取り扱い注意)を
		 利用することも可能
		上書きを確認しないinstall.sh(install.tar.gz) md5sum crc32:79166340
おまじない
	# chown -R apache2:httpd /home/www/webmail/data
初期設定
	$ cd /home/www/webmail
	$ ./configure
		2.  Server Settings>1.  Domain     を自分のドメインに変更(@より右の部分になる)
		10. Languages>1.  Default Language をja_JPに変更
		10. Languages>2.  Default Charset  をiso-2022-jpに変更
		(変更が終わったら)
		S   Save data                       で情報を保存して
		Q   Quit                            で終了する
			注:数字+改行とアルファベット+改行で移動していく
imap鯖とsmtp鯖がwww鯖と一緒じゃない場合
	$ cd /home/www/webmail
	$ ./configure
		2.  Server Settings
		A.  Update IMAP Settings>4.  IMAP Server  を使うimap鯖に変更
		B.  Update SMTP Settings>4.   SMTP Server を使うsmtp鯖に変更
		(変更が終わったら)
		S   Save data                       で情報を保存して
		Q   Quit                            で終了する
			注:数字+改行とアルファベット+改行で移動していく
初期設定のおまじない
	$ cd /home/www/webmail
	# ./configure
		4.  General Options>11. Allow server-side sortingをy [true]に変更
			注:メールのリスト作成をphpでなく、鯖側で行うようにする呪文
			  まぁ、高速化ですね
			参考:Made by Susutawari - Memos
httpdを再起動する
	# /etc/init.d/httpd restart
アクセスして、ログインできればOK
「初期設定」
SquirrelMailの1.4.3以前と1.4.4以降で./configureの項目の変更と日本語ランゲージファイルの分離が行われています。
WEBの情報ではほとんどが1.4.3以前のものですので、結構はまりました(玄箱の本でさえ、1.4.3の情報だし)
日本語化できなくて1.4.3を使ってたこともあったし・・・(危険)
1.4.3をインストールしてから1.4.4以降にアップデートして中途半端な日本語化で使ってたこともあったし・・・(^^A"
まぁ、英語をよく読めばまんま書いているので何とかなるでしょ(を

プラグインとか

SquirrelMailはプラグインを追加することで機能を拡張することができる。
まぁ、玄箱の処理能力で拡張できるものって言うと限度があるけど・・・

SquirrelMailに付属しているもので使えるものをチョイスしてみる。

プラグインの追加

	# cd /home/www/webmail
	# ./configure
		8.  Plugins
		使用可能なプラグイン一覧が表示される
		(上が現在使っているもの、下が現在使っていないもの)
		数字は重複していないので移動したい番号を入力して有効無効を決めていく

			今回は
				mail_fetch(pop受信機能)
				delete_move_next(簡単削除機能)
			を有効にし
				squirrelspell(スペルチェッカ)
				spamcop(spamの報告ツール)
			を無効にした

		(変更が終わったら)
		S   Save data で情報を保存して
		Q   Quit      で終了する
プラグインの設定

SquirrelMailにログインしてから次の操作を行う。
mail_fetchの場合
	オプション>POPでメールを取り込む>サーバー登録
	実行は上のPOP3受信をクリックするか、設定のタイミングで
delete_move_nextの場合
	オプション>表示オプション>表示位置設定(チェックボックス)
	デフォルトで下に表示される

有効になってるプラグイン一覧
	┃1. translate
	┃2. filters
	┃3. mail_fetch
	┃4. delete_move_next
どうやらfiltersについているspamフィルタは使えないらしい・・・
参考:[SM-USERS-JA:310] Re: スパムフィルタで警告が出るのですが
「プラグイン」
時計を追加したり、カレンダーを表示したり、mailに天気予報を追加したり・・・
いろいろなことができます。
問題は、
・ほとんどが外国製のプラグインで日本では使いづらい
・っていうか、玄箱の処理能力では重くて使い物にならなくなるものがおおい(をひ
ってことでしょうか?
まぁ、シンプルイズベストってことで。

添付ファイルの容量拡大

デフォルトでは2MBのファイルを添付できる。
まぁ、普通に使う分には十分な量だと思うけど・・・
そうではないことがあるかもしれないので、もっと大きな添付ファイルを送れるようにする。

SquirrelMailの添付ファイル容量を20MBまで許容する
といっても、SquirrelMailを弄るわけでなくてphpを弄る(phpのアップロード量の制限だから)

	# find / -name php.ini-dist
		注:phpのソースツリーの中にあるはず・・・
	# cp [見つかったphp.ini-distまでのパス] /opt/php/lib/php.ini
	# vi /opt/php/lib/php.ini
		(変更)
		┃upload_max_filesize = 20M
		┃post_max_size = 20M
			注:phpがアップロードできるファイル容量を20MBに変更

	# vi /opt/apache2/conf/httpd.conf
		(追加)
		┃<Files *.php>
		┃LimitRequestBody 52428800
		┃</Files>
			注:apacheでのphpの転送制限を50MBに変更(1024*1024*?MBで計算)
			注:SquirrelMail自体のphpも転送量に含むので
			  添付ファイル以上の値を指定する
			注:AddType application/x-httpd-php の近くに書くとわかりやすいかも
apacheの再起動
	# /etc/init.d/httpd restart
SquirrelMailのメッセージ作成で添付ファイルの脇に(max. 20 M)があるか確認
「添付ファイル」
最近はプロバイダのメールでも20MBくらいの添付ファイルを許可するようになっているみたいですね。
使ったことないけど。
まぁ、デジカメの写真を何枚も添付すれば簡単にそのくらいの容量になると思うけど・・・
失礼だよね?いくらブロードバンドになったって言ったって、みんなが広帯域なわけじゃないし・・・
急ぎの用事があるときに(用事に関係のない)大量のデジカメ写真・・・私なら切れるわな・・・
相手のことを考えた使い方って大切だと思う。

添付ファイル名の文字化け対策

日本語の添付ファイルをダウンロードしようとすると、保存ダイアログの名前のところが文字化けする。
いろいろ面倒臭いので修正する。

文字化けの原因は2つ。
1つは添付ファイル名(日本語)のデコード方式がSJISとなっていること。
これは以前のWin(9x系)ならばよいのだが、
現在主流のWinXPなどのNT系ではUTF-8という文字コードを内部的に使用しているらしいので・・・

もう1つはユーザーエージェント(以下、UA)でブラウザを(OSも?)判定していること。
UAを弄っている人で、中途半端にUAをデフォルトに似せている場合、(私のように)問題になる。

対策
1.エンコード方式の修正

functions/i18n.php
	$ret = mb_convert_encoding($ret, 'SJIS', 'AUTO');
	の'SJIS'を'UTF-8'に変更する。
		注:squirrelmail-1.4.8p2以降ではwin-macの分岐処理自体を削除しています(を
		注:元々、分岐処理自体が無効との話もあります
2.UAの判定を(甘くする)修正
functions/mime.php
	if (strstr($HTTP_USER_AGENT, 'compatible; MSIE ') !== false &&
	のMSIEのあとの半角スペースを削除。

	if (preg_match('/compatible; MSIE ([0-9]+)/', $HTTP_USER_AGENT, $match) &&
	のMSIE ([0-9]+)をMSIE\s?([0-9]+)に変更。
		注:p2以降ではwin-macの分岐処理がなくなったので必要ないかも・・・
		注:元々、分岐処理自体が無効とのことなので、必要でしたw
		  squirrelmail-1.4.8p3以外では実装されています
		  もちろん、UAを弄っていない人は不要です

まぁ、面倒なのでパッチを利用する。
squirrelmail-1.4.15用修正パッチ1(squirrelmail-1.4.15p1.tar.gz) md5sum crc32:0710EDAF
squirrelmail-1.4.13用修正パッチ1(squirrelmail-1.4.13p1.tar.gz) md5sum crc32:5ABADBF4
squirrelmailの1.4.12と1.4.11はファイル改ざんの疑いがあるとのことなのでパッチは非公開とします。
(ソース:セキュリティホール memo
squirrelmail-1.4.10a用修正パッチ1(squirrelmail-1.4.10ap1.tar.gz) md5sum crc32:8CA3773E
squirrelmail-1.4.9a用修正パッチ1(squirrelmail-1.4.9ap1.tar.gz) md5sum crc32:EB07EC9E
squirrelmail-1.4.8用修正パッチ3.5(squirrelmail-1.4.8p3.5.tar.gz) md5sum crc32:48E44EDB
squirrelmail-1.4.8用修正パッチ3(squirrelmail-1.4.8p3.tar.gz) md5sum crc32:922378A3

squirrelmail-1.4.5-ja-20050714-patch(pluginsの修正を除く)をベースとして、
squirrelmail-1.4.8p2の修正を追加しています。
Subjectに「煤vを使うと「?」となってしまうなどの問題がありますが、p2よりは文字化けしにくいようです。

以前のパッチを利用されている方は、オリジナルのi18n.phpを上書きしてから実行してください。

また、squirrelmail-1.4.8p3以降を使用すると以下のファイルが変更されます。
	class/deliver/Deliver.class.php
	class/mime/Rfc822Header.class.php
	functions/date.php
	functions/i18n.php
	functions/imap_messages.php
	functions/imap_search.php
	functions/mime.php
	functions/url_parser.php
	src/compose.php
	src/printer_friendly_bottom.php
	src/search.php
	src/view_text.php
パッチ実施例
	$ cd /home/www
	# cp -pR webmail webmail.backup
	$ cd webmail
	$ patch -p0 <~/squirrelmail-1.4.8p3.obj
squirrelmail-1.4.8用修正パッチ2(squirrelmail-1.4.8p2.tar.gz) md5sum crc32:C264D6AB
squirrelmail-1.4.8用修正パッチ1.5(squirrelmail-1.4.8p1.5.tar.gz) md5sum crc32:23303482
squirrelmail-1.4.8用修正パッチ1(squirrelmail-1.4.8p1.tar.gz) md5sum crc32:38826F44

squirrelmail-1.4.8p2.tar.gzを解凍し、squirrelmailのインストールディレクトリに移動し、解凍する。
	$ patch -p0 <i18n.php.obj
	$ patch -p0 <mime.php.obj
		注:特に理由がなければ最新のパッチを利用してください
			最新とは:バージョンが一致しており、p?の大きいもの
上記(p1の)修正では、「虹3枚」のようなサブジェクト名/ファイル名において、
文字化けが生じることが確認されました。
p2を作成しましたので、そちらを使用してください。
以前の修正を行われた方は、オリジナルのi18n.phpを上書きした後に最新のパッチを実行してください。
「文字化け対策」
今回の文字化け対策は新旧雑多な情報を元に私の環境で調整しました。
まぁ、修正方法の1例ということで・・・
でも、ちゃんと動くという保証はできませんよぉ?
だって、PHPわからない人が修正したんですから・・・(;´Д`)はぁはぁ

それと、私が作っているパッチは力技でUTF-8を指定して文字化けを回避しているので、対応OS(クライアント側)が限られます。
多分、WinXP以降、MacOSX以降、他、文字コードがUTF-8となっているOSまたはブラウザ...かと思われ。
確認してないので、よくわかんないけど。


戻るなら押せ!