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',

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です