AfterLogic WebMail Liteを試してみた - ロリポップ
フリーのWebメールを探したところ、すぐ見つかったのが「SquirrelMail」で、試しにインストールしてみたが画面がちょっとお粗末で使用する気になれなかった。
次に見つけたのが「AfterLogic WebMail Lite」
有料版もあるが、「シングルドメイン」で「カレンダー無し」で問題なかったので、無料版を使うことにした。
インストール先はレンタルサーバーの「ロリポップ」で、mysqlのDBを作っておいて、install/index.php と adminpanel/index.phpを実行してメールの情報を登録するだけで使えてしまった。
Webメールというのは、クッキーに保存可ではあるものの、メールアドレスとパスワードを一度は入力する必要があり、ちょっとメンドクサイところがある。
セキュリティとしては問題あるのだが、「SquirrelMail」ではメアドとパスをHTMLに埋め込んで、ワンクリックでログインさせるためのログイン用のHTMLを作成したが、
「AfterLogic WebMail」はログイン画面で毎回、異なるトークン情報を埋め込んで来るため、ログイン用のHTMLは作成できなかった。
で、VBスクリプトでメアドとパスを自動入力し、サブミットしてくれるものを作ってみたので、メモっておきます。これなら、「AfterLogic WebMail」に一発でログインできます。
ただ、HTMLに組み込んでいないため、時間が空けばJavaScritに書き直そうかな...
◆サンプルソース
Option Explicit On Error Resume Next Dim strUrl????? ' 表示するページ Dim objIE?????? ' IE オブジェクト Dim objDoc????? ' ドキュメント情報 strUrl = "http://your webmail url/webmail/" ? '<<< your webmail url Set objIE = WScript.CreateObject("InternetExplorer.Application") If Err.Number = 0 Then objIE.Navigate strUrl ' ページが取り込まれるまで待つ Do While objIE.busy WScript.Sleep(100) Loop Do While objIE.Document.readyState <> "complete" WScript.Sleep(100) Loop Set objDoc = objIE.Document objDoc.login_form.email.value =?"user@test.com"? ? ?'<<< email address objDoc.login_form.password.value = "password" ? ? ? '<<< password objIE.Visible = True objDoc.login_form.submit.click() Else WScript.Echo "エラー:" & Err.Description End If Set objIE = Nothing
◆メールサーバーのアカウント名が、メールアドレスではない場合のログイン方法少々苦労したので、記載しておきます。
メールサーバーのアカウント名が、メールアドレスではない場合は、結構あると思います。
ロリポップはアカウント名とメールアドレスが同一なので、はじめ気づきませんでしたが、別のメールサーバーを登録してみたら、ログインできないのに気づいてしまいました。
メールアドレスの他にアカウント名を入力する必要があるのですが、ログイン画面に表示されていません。
HTMLのソースを見ると、アカウント名を入力できるテキストフィールドが存在しているようです。
どうしたら、アカウントのテキストフィールドを表示させられるか、あちこち検索してみました。
・結果...
Advanced Login modeをオンにしてやると、「オプションログイン」のリンクが表示され、クリックすると
アカウント名を入力できる「ログイン」というテキストボックスが出現します。
・やり方...
data\settings\settings.xml ファイルの61行目の下記の値をOffからOnに変更してやります
<UseAdvancedLogin>On</UseAdvancedLogin>
◆クッキーへの書き込みをストップする方法
AfterLogicのWebMailは、クッキーにログイン情報を勝手に保存するようで、
別のユーザーIDでログインしようとしても、ログアウトしていないと切り替えできない。
ログアウトしないでも、ユーザIDを切り替えできないかとsetting.xmlをかなり眺めてみたが
それらしきパラメータが見つからない。
そこで、クッキーへの書き込み処理をストップできないか調べ、ダメもとでコメントアウトしてみた。
結果、毎回クッキーの情報をリセットできるようになり、ログアウトしないでも、別のユーザIDへ切り替えできるように
なった。ラッキー!!
<やり方です>
http://you wrbmail/index.php を修正します。
90行目をコメントアウトします。こんな感じです。
//◆if (‘logout’ === $mode)
2012/08/02追記
「XMLエラー」と表示されて、メール一覧が表示されない状態になった。
なんとか回避できたので、その方法メモっておきます。
1)AfterLogic WebmailはMySQLを使っているので、「phpMyAdmin」でテーブル内のデータを確認してみた。
メッセージが格納されているテーブルは、一番サイズが大きい awm_messages のようです。
結果:すべてのメールは受信されていた
ということは、XMLエラーは受信時ではなく、メール一覧の表示の最中に発生していることになる
2)awm_messagesテーブル内で、怪しいデータはないか確認したところ、下記のような文字化けしているデータを見つけた。
これを試しに削除して、再度Webメールを開くと、XMLエラーは表示されず、メールの一覧が表示された
$B-j%0%m! $B4]A1=PHG(Bshop $B$4CmJ8$\$j$
$H$&$4$6$$$^$7$?!#(B”
その他
・phpMyAdminで最新のデータを表示させるには、「キーでソート」で 「PRIMARY(降順)」を指定してやる
・通信中のエラーの場合、AfterLogic Webmailの管理画面にログオンし、デバッグモードにして、ログを確認できる
今回の場合は、エラーメッセージは表示されていなかった
今回の件は、AfterLogic Webmailのバグと考えられる。バージョンアップで改善されることを気長に待ちたいと思います。
2012/08/03追記 JavaScriptで書き直してみた
メアドとパスを自動入力し、サブミットしてくれるものをVBSで作成していたが、これを、JavaScriptに書き直してみた。
サブウインドウを開いた後、formにユーザIDとパスワードを書き込み、サブミットしてやるだけだが少々はまってしまった。
同一関数内で window.open でサブウインドウを開いて、テキストエリアにメアド、パスワードを書き込んでも反映されない。
そこで、サブウインドウのテキストエリアの書き込みを別関数にして、割り込み処理(setTimeout)で別関数を起動させる方法で、なんとか同様の機能を作成することができた。
◆サンプルソース
<SCRIPT language="JavaScript"> <!-- var subWin; var id; var pass; function Sleep( T ){ var d1 = new Date().getTime(); var d2 = new Date().getTime(); while( d2 < d1+1000*T ){d2=new Date().getTime();} return; } function myWrite(){ while(subWin.document.readyState != "complete")Sleep(1); subWin.document.login_form.email.value = id; subWin.document.login_form.password.value = pass; subWin.document.login_form.submit.click(); } function sample1(){ id = "user@test.com";? // email address pass = "password";???? // password if(subWin != null && subWin != undefined) subWin.close(); subWin = window.open("http://your_webmail_url/webmail"); setTimeout("myWrite()",1000); } //--> </SCRIPT> <form> <input type="button" value="web mail" onClick="sample1()" > </form>
2012/08/06追記 XMLエラーへの対応
へんなメールを受信すると、XMLエラーが出てしまい、メール一覧が表示出来なかったり、
表示出来てもメールの内容が表示できないケースが続き困っていた。
XMLエラーがでてしまうメールを確認してみると、どうも文字セットが指定されていない
ことがわかった。なんでこんなメールを送ってくるのだろう。
デフォルトの文字セット指定を探したところ、下記の場所に指定されていた。
もともと指定されていたのは、たぶん、日本向けではなさそう。
良く使われている文字コードを下記の通り指定してやり、様子をみたいとおもう。
◆設定変更箇所:
webmail/libraries/afterlogic/common/config.php
<変更前>
'webmail.default-inc-charset' => 'iso-8859-1',
<変更後>
'webmail.default-inc-charset' => 'iso-2022-jp',