PopMan 取り扱い説明書 
Version: 1.00

2001/9/4

jza
木村 綾太郎
jza@geocities.co.jp


 
目次
はじめに

現在では、Eメールの扱える携帯電話やPHSが普及しています。 私も、これを使っていますが、ちょっと困ったことがあります。

そこで、POPプロトコルでメールをとってきて、フィルタリングした上で、メールを転送すればいいのではと思って作り始めたのがこのPopManです。

自分の会社や学校が常時インターネット接続している場合、このPopManを自分のマシンで起動しておけば、夜間・休日に自分あてのメールを携帯やPHSに転送しておくことができます。特に、会社のメールボックスは外部からアクセスできなかったりしますから、そういう時にも便利ですね。

また、最近では、CATVやADSLによる常時接続環境を自宅にお持ちの方もいらっしゃるでしょう。そういう場合にも便利に使用できます。

ドコモのiモードと、DDIポケットのPメールDXを意識して作っていますが、他の携帯・PHSでももちろん利用できます。

概要

PopManは、POPサーバのメールボックスを監視し、新着メールについて、さまざまな処理を行うプログラムです。現在のバージョンでは、以下の処理を行うことができます。
 

(メール転送)

転送条件に合致したメールを別のアドレスへ転送します。 すべてのメールを転送することももちろん可能です。
転送条件には、差出人宛先CC題名本文を指定(日本語OK)できます。同様な方法で、転送除外条件の指定もできます。また転送時に、添付ファイルを削除するなどの特殊処理ができます。
コマンドメールを送信することで、出先から転送の停止・再開が行えます。
(メール自動応答)
特定の差出人からのメールがくると、あらかじめ作成しておいた メッセージ(不在通知など)を送信します。
(リモートメールボックス)
コマンドメール(一覧の取得、指定メッセージの転送)によって 外部のメール端末(携帯やPHS)からメールボックスを閲覧する ことができます。到着通知メールの送信も可能です。
(携帯・PHSへの対応)
iモード端末(@docomo.ne.jp)へメール送信する際には、メールを分割して送信します。
H”端末(PメールDX端末)(@pdx.ne.jp or @di.pdx.ne.jp)へのメールも分割して送信します。
他の端末には、カスタムフィルターを利用することにより対応できます。
カスタムフィルターを使えば、自由なサイズ・分割数で分割して送信できます。


PopManには、2つの使い方があります。目的に応じて、使い分けてください。

(Webコントロール版)

Webブラウザから、設定、起動・停止が行えるので、お気軽に使用できます。
ただし、複雑な設定は行えません。
(はじめての方は、まず、こちらからお試しください。)
(コマンドライン版)
設定ファイル(テキストファイル)を編集して設定します。起動・停止は、コマンドラインから行います。
複数の転送先に振り分けるなどの、複雑な設定も行えます。


使用上の注意

送金方法

PopManは、シェアウエアですが、期間制限も機能制限もありません
(カンパウエアという言い方も、あるみたいです)
  「こりゃぁ便利だな」、「これのおかげですごく助かったな」
なんて思っていただけて、
  「これならお金払ってあげてもいいや」
ってお感じになったなら、送金をお願いします。

金額は、900円です。

Vectorさんの、シェアレジサービスから送金できます。レジ作品番号は、SR016889です。
PopManの送金ページ
 

必要な環境

PopManは、Java(tm)で開発されています。従って、Javaの動作するさまざまなシステムで動作します。
動作には、JDK 1.1.x以降のバージョンが必要です。雑誌の付録CD-ROMや、SunのWebサイトより入手してください。
例えば、以下のURLでJavaの実行環境(JRE)の最新版が入手できます。
http://java.sun.com/j2se/1.3/ja/jre/
(JREは、JDKの実行環境の部分のみを取り出したもので、サイズが小さく、ダウンロードに適しています。)

作者が動作を確認できたのは、以下の環境です。他の環境でも、多分、動くと思います。

Windows版
  Windows98, WindowsNT4.0, Windows2000

Linux版
  RedHat Linux 6.2J
 

インストール方法

Javaの実行環境さえ準備されていれば、 PopManのアーカイブを、任意のディレクトリの下に展開するだけで インストールは完了です。 展開すると、"popman"というディレクトリができます。
(以降、このディレクトリをPOPMANDIRと表記します)

アンインストールするには、展開されたディレクトリごと削除して下さい。
 

使い方(Webコントロール版)

(Windows95/98の場合の準備)

Windows95/98の場合、環境変数の領域を広げておく必要があります。
以下の手順で行ってください。(一回、やっておけば、OKです。)
・MS-DOSプロンプトを開く
・タイトルバーで右クリックして、”プロパティ”を選択
・”プロパティ”の画面が出てきたら、”メモリ”タブを選択
・”環境変数の初期サイズ”を、2816に変更して、”OK"
・一旦、MS-DOSプロンプトを閉じる
(起動方法)
Windows:
MS-DOSプロンプトを開いて、POPMANDIRに移動し、以下のコマンドを 実行してください。
startweb.bat
新しいMS-DOSプロンプトの画面が開きますが、最小化しておいてかまいません。
(JREを使っている場合、Warningメッセージが出ることがありますが、無視してかまいません)

Linux:
シェルスクリプトstarwebを実行してください。

(Webブラウザからのアクセス方法)
Webブラウザから、http://localhost:8080/にアクセスして、コントロールメニューを表示して下さい。
メニューから、設定、起動・停止が行えます。
設定については、画面上に簡単な説明がありますので、特に難しくはないと思います。

(Windows2000での使用について)
Windows2000でローカルのPopManにローカルのブラウザからアクセスすると、レスポンスが非常に遅くなることがあります。いろいろと調べてみましたが、原因は不明です。
この現象が発生した場合は、startweb.batのコメントを参照してください。

(終了方法)
Windows:
MS-DOSプロンプトを開いて、POPMANDIRに移動し、以下のコマンドを 実行してください。
stopweb.bat
起動したときにできたMS-DOSプロンプトが消えれば、終了できています。

Linux:
シェルスクリプトstopwebを実行してください。


※パスワードによるアクセス制御

他人によるPopManのコントロールを防ぐには、パスワードを設定してください。インストールした時点では、パスワードは設定されていません。
注意
アクセス制御には、Cookieを使用しています。よって、アクセス制御を行う場合は、ブラウザを「Cookieが有効」な状態にしてください。


使い方(コマンドライン版)

コマンドライン版では、最初に起動する前に、設定ファイルの編集が必要です。
「設定方法」の章を参考にして、設定をすませておいて下さい。

以下では、Windowsマシンを例にとって説明しますが、他の環境でも同様です。

(起動方法)

MS-DOSプロンプトを開いて、POPMANDIRに移動し、以下のコマンドを 実行してください。
java  jp.jza.mail.MailAgentController  設定名
設定名は、省略できますが、その場合はデフォルトの設定が 使用されます。
バッチファイルを作成しておけば、起動が簡単になります。
(終了方法)
常駐モードで起動した場合は、'x'+'Enter'と入力すると終了できます。処理中の場合は、終了するまでにしばらく時間がかかります。
(エラーログについて)
PopManは、実行時にエラーが発生すると、端末へメッセージを表示 するとともに、エラーログファイルにエラー内容を書き込みます。エラーログファイルは、起動時のディレクトリの下に、
errlog.txt
という名前で生成されます。


使い方(共通)

Webコントロール版、コマンドライン版に共通の機能について、その使い方を説明します。

(カスタムフィルター)

カスタムフィルター機能を使うと、指定したアドレスへのメールを、自由なサイズ・分割数で分割して送信することができます。PopManにあらかじめ組み込まれている分割機能では対応できない携帯・PHSにも、このカスタムフィルターを利用することで対応できます。

カスタムフィルターは、アドレス、分割文字数(単位は半角)、最大分割数をコンマで区切って指定します。例えば、abc@xyzというアドレスの携帯に、半角で100文字ごとに分割し、最大3個まで分割するカスタムフィルターの定義は、「abc@xyz,100,3」となります。

カスタムフィルターは、複数、登録できます。
カスタムフィルターを設定している場合は、組み込みの分割機能よりも優先します。

分割されたメールの題名には、xx/nnという数字が挿入されます。これは、nn個に分割されたメールのxx番目の部分という意味になります。
 

(リモートメールボックス)
リモートメールボックス機能を使うと、 PopManは、起動後に到着したすべてのメールの一覧を管理します。 PopManが監視するメールボックスにコマンドメールを送信すると、 コマンドメールの差出人に情報をメールで返します。 コマンドメールでは、サブジェクトに以下のコマンドを 記述します。 (コマンドは、全角・半角、大文字・小文字を区別しません)

list

起動後に受信されたすべてのメールの一覧を取得します。
一覧には、メール番号、題名、差出人が記載されています。
list new
新着分のみのメールの一覧を取得します。
前回の"list new"コマンド以降に、到着したメールが対象になります。
list reset
すべてのメールを読んだことにします。
つまり、次回の"list new"コマンドでは、この"list reset"コマンド以降に到着したメールが対象となります。
例えば、パソコンのメールソフトでメールチェックをした時は、"list reset"コマンドを送っておきます。こうすれば、つぎの"list new"コマンドですでに読んだメールがもう一度届いてしまうのを防ぐことができます。
msg  メール番号
メール番号で指定されたメッセージを取得します。 メール番号は、一覧取得時に付与されている番号です。0番から始まる番号です。
※メール番号の指定について
番号はスペースで区切って複数指定することができます。
また、それぞれの番号指定は、以下の形式で記述できます。
(n、mはメール番号)
n 番号nのメールを指定
n* 番号nのメールから最後のメールまでを指定
*m 最初のメールから番号mのメールまでを指定
n*m 番号nから番号mまでのメールを指定
* すべてのメールを指定
例えば、
 msg 1 3 7
 msg 0 3*5 9*
などの指定が可能です。
(範囲指定に*を使うのはヘンですが、携帯などで入力しやすいのでこうしました。)
また、メール到着ごとに、到着通知メールを指定したアドレスに送信することもできます。到着通知メールには、メール番号、題名、差出人が記載されています。到着通知メールに返信すると、もとのメールそのものを取得することができます。
到着通知メールの題名は、"msg #"となっています。よって、これを返信すると、"Re: msg #"となりますよね。コマンドメールではRe:を無視するので、msgコマンドが発行されたのと同じとなるわけです。Re:だけでなく、Re>も無視します。(P501i対応)


設定方法(入門編)--コマンドライン版使用時のみ参照--

PopManを簡単に使用するための、最小限の設定方法について順を追って説明します。 詳細については、応用編を参照してください。

設定ファイルはテキストファイルになっていますから、適当なテキストエディタで 編集します。先頭が"#"の行はコメント行です。

メール受信サーバ(POPサーバ)の設定

以下のファイルを編集します。
POPMANDIR\conf\MAController\default\receiver\jp.jza.mail.MailReceiver.properties
コメントにしたがって、POPサーバのアドレス、ユーザ名、パスワードを入力してください。
標準以外のポート番号を使用するときは、ホスト名のあとに”:ポート番号”を追加してください。
deleteMsgFlgは、受信したメールを削除するかどうかです。 デフォルトは、false(削除しない)です。 慣れないうちは、削除しない設定にしておいたほうが無難です。
useAPOPFlgは、POPサーバとの認証にAPOP認証を指定するフラグです。 デフォルトは、false(APOPを使用しない)です。
メール送信サーバ(SMTPサーバ)の設定
以下のファイルを編集します。
POPMANDIR\conf\MAController\default\sender\jp.jza.mail.MailSender.properties
コメントにしたがって、SMTPサーバのアドレス、ユーザアドレスを入力してください。
※分割機能について
iモード用、PDX用の分割をしたくない場合は、useiModeFilterFlgusePDXFilterFlgにfalseを指定してください。
カスタムフィルターを使用する場合は、ここで指定してください。
以下は、使用する機能のみ設定を行ってください。
 

自動応答

以下のファイルを編集します。
POPMANDIR\conf\MAController\default\MA_autoReply\jp.jza.mail.MailAgent_AutoReply.properties
コメントにしたがって、自動応答メッセージのファイル名、自動応答が必要なアドレス (複数も可能)を入力してください。 自動応答メッセージのファイルは、この設定ファイルと同じディレクトリに置いてください。
転送
以下のファイルを編集します。
POPMANDIR\conf\MAController\default\MA_forward\jp.jza.mail.MailAgent_Forward.properties
コメントにしたがって、転送先のアドレス、転送条件、転送除外条件を入力してください。

転送条件は、差出人、宛先、CC、題名、本文のそれぞれについて設定できます。
いずれかの転送条件に合致すればそのメールは転送候補となります。
転送条件に何も指定しない場合は、すべてのメールが転送候補となります。

転送候補となったメールについて、転送除外条件のチェックを行ない、除外条件にひっかからなかったメールだけが最終的に転送されます。

※転送時の特殊設定について

(添付ファイルの削除)
メール転送時に、添付ファイルを削除することが可能です。これには、deleteAttachmentFlgにtrueを設定してください。
Ver 1.00より、添付ファイル削除を厳密に行うように変更しました。
Content-Typeがmultipartのメッセージは、text/plainのパートのみ転送します。
Content-Typeがtext/plain以外のメッセージ(HTMLメールなど)は、body部を転送しません。
(Fromアドレス書き換え)
メール転送時に、Fromフィールドのアドレスを指定された別のアドレスに置き換えることが可能です。このとき、元のFromフィールドのアドレスはメール本文の先頭に追加されます。この機能を使用するには、replaceFromAddrに置き換えるアドレスを指定してください。
企業内のメールサーバなどでは、Fromアドレスが内部のドメインであるかどうかチェックしている場合があります。よって、外部から届いたメールをそのまま転送しようとしても、このチェックにひっかかって転送されません。このような場合にお使いください。
※転送条件・転送除外条件の指定について(参考)
転送条件・転送除外条件の合致は、指定の文字列が指定のフィールドに存在するかどうかで判断しています。よって、needForwardTo.f=fooという指定があると、To:フィールドにfooという文字列を含むメールが転送されます。これを利用すると、特定のドメインからのメールを転送する、というような設定も可能です。
Ver.0.52よりこの仕様としました。それ以前のバージョンでは、フィールドから先頭のアドレスを抽出し、その文字列との完全一致で判断していました。
※転送機能の停止・再開
startStopPasswordに指定した文字列を題名に持ったメールをPopManのメールボックスに送信することで、転送機能を、停止・再開できます。
リモートメールボックス
以下のファイルを編集します。
POPMANDIR\conf\MAController\default\MA_lister\jp.jza.mail.MailAgent_Lister.properties
コメントにしたがって、コマンドメールを許可するアドレス(複数も可能) を入力してください。指定されたアドレス以外からのコマンドメールは、無視されます。
到着通知メールを受け取りたい場合には、送信先のアドレスをnotifyAddrに設定してください。
最後に、PopManそのものの動作を設定します。
 

PopManの設定

以下のファイルを編集します。
POPMANDIR\conf\MAController\default\jp.jza.mail.MailAgentController.properties
常駐起動にする場合は、intervalSecに、メール受信間隔を設定します。 一回だけメールを受信して終了する場合は、intervalSecにゼロを指定します。mailAgent.xxxxxの行は、動作させる機能を設定するものです。 必要とする機能の設定行のみ"#"を削除してコメント状態を解除します。


以上で設定は終了です。お疲れさまでした。

設定方法(応用編)--コマンドライン版使用時のみ参照--

入門編でおわかりのように、あるひとかたまりの設定は、”設定名”を 名前として持つディレクトリと、その下の設定ファイルによって構成 されています。この仕組みを利用すると、以下の例のような応用的な 使い方ができるようになります。

PopMan設定のまるごと切り替え

以下のようにして、PopManの設定をまるごと切り替えて使用することができます。

まず、POPMANDIR\conf\MAController\の下のdefaultのディレクトリをまるごと、別の名前でコピーして 必要な部分の修正を行います。 そして、PopMan起動時の引数にこのディレクトリ名(設定名)を 指定すれば、このディレクトリの下の設定ファイルの内容にしたがって PopManは動作します。これを利用して、別々のメールボックス用のPopManを同時に起動して おくこともできます。


別々のアドレスへの転送

AさんからのメールはXへ、BさんからのメールはYへ転送する必要が あったとします。 この場合、2つの転送設定を同時に使用することで、実現できます。

POPMANDIR\conf\MAController\default\の下の、MA_forwardディレクトリをコピーして、foward_axforward_byの ディレクトリを作成します。 そこで、forward_axの下の設定ファイルには、AからXへの転送設定を、 forward_byの下の設定ファイルには、BからYへの転送設定をします。 最後に、PopManの設定ファイルである

POPMANDIR\conf\MAController\default\jp.jza.mail.MailAgentController.properties
を編集して、2つの転送設定をONにします。
まず、もともとあった
mailAgent.MA_forward=jp.jza.mail.MailAgent_Forward
の行をコメントにして、次に、
mailAgent.forward_ax=jp.jza.mail.MailAgent_Forward
mailAgent.forward_by=jp.jza.mail.MailAgent_Forward
の2行を追加します。
以上で、2つの転送設定が同時に動作するようになります。


その他

(ソースコードの公開について)
Javaプログラマーの方であれば、「自分でカスタマイズして使いたい」と思われますよね。
現在、ソースコードの一部を公開する方向で検討しています。
PopManの個々のメール処理機能は、MailAgentというモジュールで行われています。このモジュールを、みなさんが作成できるような情報・ソースコードを公開するつもりでいます。

と、書いていましたが、カスタマイズするぐらいならJavaMailを使って一から書いたほうがいいんじゃないか、と思い始めました。私の知らない間に、JavaMailはずいぶん強力になっているようです。なので、現在は公開の準備をしていません。ご意見があれば、お知らせください。

(Web機能について)
Web機能の実現にあたっては、SunのJSWDK-1.0.1のクラスを使用しています。これが無ければ、Web機能を追加しようなんて思わなかったでしょう。感謝、感謝です。(^^)
ちなみに、ランタイム環境しか持っていないユーザもさんもいらっしゃるでしょうから、JSPの使用は見送りました。

修正履歴

Ver 0.10 1999/4/27  最初のバージョン。

Ver 0.20 1999/6/23

Ver 0.21 1999/6/24
iMode対応でメール分割をするときのサイズ計算をJISコードでなくSJISに変換してから行うようにした。
Ver 0.30 1999/7/1
APOP認証に対応した。
Ver 0.32 1999/7/9 Ver 0.33 1999/7/30
メール転送時にFromアドレスを置換する機能を追加。
Ver 0.40 1999/8/11
メールヘッダにあるMIMEエンコードされた日本語を認識できるようにした。
Ver 0.42 1999/8/20
メール転送条件に、CCフィールドを使用できるようにした。
転送時に、添付ファイルを削除する機能を追加した。
Ver 0.43 1999/8/27
POPサーバにアクセスする際、標準以外のポート番号を使用できるようにした。
Ver 0.50 1999/9/2
リモートメールボックス機能に、到着通知メールの機能を追加した。
Ver 0.52 1999/10/4 Ver 0.60 1999/12/1 Ver 0.61 1999/12/28 Ver 0.70 2000/1/19 Ver 0.72 2000/1/21 Ver 0.90 2000/2/17 Ver 0.91 2000/2/23 Ver 0.91 2000/4/5 ドキュメント修正 Ver 0.92 2000/4/10 Ver 0.93 2000/4/26 Ver 0.94 2000/4/28 Ver 0.95 2000/6/20 Ver 0.96 2000/7/21 Ver 0.97 2000/12/5 Ver 0.98 2001/3/14 Ver 1.00 2001/9/4