Copyright (C) 2002-2008 Fumio Kawamata
最終更新日: 2008年6月20日
Permission is granted to copy, distribute and/or modify this document titled "MailUtl3 User's Manual" under the terms of the GNU Free Documentation License Version 1.2(GNU FDL Version 1.2) published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
あなたは、「MailUtl2 User's Manual」と題するこの文書を、フリーソフトウェア財団発行の GNU Free Documentation License Version 1.2(GNU FDL Version 1.2)が定める条件の下で複製、頒布、あるいは改変することができます。
MailUtl2は、POPサーバ内のメールをスキャンし、指定した条件(送信者のメールアドレスやドメイン、メールサイズ、メールの種類(HTMLメール等)、メールの送信日付、その他)に合致したメールをPOPサーバから削除するプログラムです。ルールに合致するが、万一必要なメールである場合を考慮し、メールヘッダと、メール本文の指定行数(例えば20行)をファイルに記録するようになっていますので、あとで、要否判断をして、必要なら、送信者に再送してもらう等の処置が可能です。
MailUtl2は、プログラムのソースコード(Borland Delphi Version 6 Professional用)が添付されたフリーソフトウェアです。ソースコードはGNU General Public License Version 2(GNU GPL Version 2)のもとで複製、頒布、あるは改変することができます。
実行形式ファイルのバージョン情報が示す正式ファイル名は、MailUtl.exeとなっております。コマンドライン版のMailUtl.exe、本プロダクト、そしてその後継バージョンであるMailUtl3.exeと区別するため、本プロダクトの将来的正式名称はMailUtl2.exeとします。ただし、バージョン管理をろくに行ってなかったため、最後にプログラムを再構築した環境を再構成できない事態となってしまったため、本プロダクトリリースに際しては、ファイル名のみをMailUtl2.exeに変更してあります。次にリリースするバージョンでは、バージョン情報が示す正式ファイル名をMailUtl2.exeに設定します。
このドキュメントの最終更新年は、2008年ですが、MailUtl2.exe Version 2.0.0.8をコンパイルしたのは2006年1月14日です。ソースコードから再コンパイルしようにも、最後にコンパイルしたあとに開発マシンをリプレースしてしまい、通信を司る主要コンポーネントであるIndyのバージョンも変わってしまい、再コンパイルするためには、一旦Indyをアンインストールして、最新版をインストールし、Indyの仕様変更に応じてソースコードを見直すという一大作業になってしまいます。そのため、実行形式ファイルは旧バージョンのまま、ドキュメントを整備して公開し、そのあとで、開発環境を再整備して再コンパイルし、次のバージョンをリリースします。次回からは、プログラムをコンパイルできるIndyのバージョンを明記できるようにします。ソースコードから実行形式ファイルをコンパイルしたいユーザの方は、それまでお待ちください。
MailUtl2を構成するファイルは、Fumio Kawamataに著作権があるファイルと、他者に著作権のあるファイルに分類されます。
Fumio Kawamataに著作権があるファイルのうち、プログラムについては GNU GPL Version 2 が、マニュアルについては GNU FDL Version 1.2 が適用されます。あなたは、これらのライセンスに従い、Fumio Kawamataに著作権のあるファイルを複製、頒布、あるいは改変することができます。
受け取ったままの状態であれば自由に再頒布できます。Fumio Kawamata以外に著作権のあるファイルのみを取り出して再頒布したり、変更したりする場合は各著作者に問い合わせてください。
他サイトへの登録はご自由にどうぞ。事前あるいは事後の許諾を得る必要はありません。
雑誌の付録CD-ROM等に収録するのはご自由にどうぞ。事前あるいは事後の許諾を得る必要はありませ。見本誌はいただきません。
MailUtl2あるいはこの文書についての問い合わせは fumio@my.email.ne.jp までお願いします。ただし、エンドユーザのADSLやケーブルネットワークから直接送信されたと思われるメール、表現を変えると、ISPや会社のメールサーバを経由せずに送信されたと思われるメールは読みません。(これらのメールは、後継バージョンであるMailUtl3によりspamメールとして識別しています)。
筆者はただの趣味のプログラマーで、プログラムやドキュメントは週末に書いてます。アクティビティは低いです。速攻応答は期待しないでください。
配布パッケージを展開する前に、MailUtl2をインストールするディレクトリを決めてください。解凍するディレクトリが、MailUtl2のインストールディレクトリとなります。MailUtl2はインストーラーを有しません。
MailUtl2の使用を終了するときは、展開した全ファイルと、後述するルールファイルとログファイルを手動操作により削除してください。MailUtl2は専用のアンインストーラーを有さないので手動で削除してください。
下記ルールファイル例 1のように、POPサーバから削除したい送信者のメールアドレスを記述した「ルールファイル」を用意してください。
username@a.domain |
ルールファイルは、任意のファイル名で任意の場所に保存可能ですが、将来のMailUtlのアップデートに備え、MailUtlをインストールしたディレクトリとは別のディレクトリに保存することを強くお奨めします。筆者は、ルールファイルをD:\Home\MailUtl\rule.txtに保存しています。
送信者個人のメールアドレスではなく、下記ルールファイル例 2のようにサブドメインやドメインを指定することもできます。
hostname.a.domain |
ルールファイルを作ったら、MailUtl2.exeをダブルクリックしてください。すると、以下のようなフォームが表示されます。
まず表示フォントを変更してください。表示フォントを変更するには、メニューバーの、[Option]、[Font]を順に選択します。フォントは、MSゴシック等の、等幅フォントを選択すると良いでしょう。
次は、動作設定を行います。動作設定を行うためには、メニューバーの、[Option]、[Settings]を順に選択します。すると、以下のようなフォームが表示されます。
フォームの各テキストボックスに、下表を参考にして、設定情報を入力してください。Use MailUtl Rules は必ずチェックしてください。
項目 | 内容 |
---|---|
Hostname | POPサーバ名を指定します。 |
Port | POPポート番号を指定します。デフォルトは110です。 |
User name | POPサーバに接続する際のユーザIDを指定します。 |
Password | POPサーバに接続する際のパスワードを指定します。 MailUtl2は、メモリ中にパスワードを平文のまま保持します。 パスワードは.iniファイルには保存しません。プログラム終了時に破棄されます。 毎回入力するのが面倒な場合は、環境変数でパスワードを指定することもできます。 環境変数でパスワードを指定する方法は、使い方(上級編)にて説明します。 |
Log directory | MailUtl2が出力するログファイルの保存先(ディレクトリ)を指定します。 |
Rule filename | 先に作成したルールファイルを指定します。 |
Max lines | MailUtl2は、メールを削除する際、先頭から指定した行数だけ、ファイルに保存します。 Max linesには、残したい行数(例えば20)を指定します。 行数を多くすると、メール全行を保存することになり、MailUtl2を利用する意味がありません。 |
設定情報を入力したら、[OK]ボタンをクリックしてください。
次に、[File]、[Check, then Keep connection]を選択してください。チェックするだけなので、削除は行いません。POPサーバに接続し、メールヘッダと、メール本文の一部を取得し、件名(Subject)や送信者アドレス(From)を一覧表示します。実際に筆者が実行したときの画面を以下に示します。
MailUtl2の画面は、大きく分けて3つのエリアに分かれています。各エリアは下図のように、Area 1、Area 2、Area 3となっています。
以下、各エリア毎に、表示される内容について説明します。
Area 1は、メールの通し番号(No.)、メールに対する処理(Action)、メールの件名(Subject)、送信者のメールアドレス(From address)、送信日(Date)が一覧表示されます。Action列がDeleteになっているメールは、ルールファイルで指定した削除条件に合致したメールです。Action列がDeleteになっているメールは、目印として左端の列に赤色のバケツが表示されます。
Area 2は、メールの削除条件が表示されます。
Area 3は、メール本文(Body)とメールヘッダ(Header)の表示領域です。起動時には、Bodyが選択され、メール本文が、Max linesで指定した行数表示されますが、Headerタブをクリックすると、以下のように、メールヘッダが表示されます。
Action列がDeleteになっているメールを削除するには、[File]、[Delete, then Disconnect]を順に選択します。実際に削除されます。
MailUtl2を終了するには、[File]、[Exit (Disconnect)]を順に選択してください。
MailUtl2は、先にLog directoryで指定したディレクトリに、以下のログファイルを保存します。
YYYYMMDD-HHMMSS-DEL.html形式(ただし、YYYYMMDDはプログラムを実行した西暦年月日、HHMMSSはプログラムを実行開始した時分秒)のファイルで、後述する、メール本文ファイル及びメールヘッダファイルをリンクしています。ログ その1をブラウザで表示した例を下図に示します。Full Headersをクリックすると、メールヘッダを表示します。Part of Bodyをクリックすると、メール本分(ただし、Max linesで指定した行数のみ)を表示します。淡いマゼンタ色で着色されている行が、削除されたメールを示します。白色及び若草色で着色されている行の意味はあとで説明します。
YYYYMMDD-HHMMSS-DEL.txt形式(ただし、YYYYMMDDはプログラムを実行した西暦年月日、HHMMSSはプログラムを実行開始した時分秒)のファイルです。単に、メールの通し番号、件名(Subject)、送信者アドレス(From)を記録したものです。このファイルは、プログラムデバッグのために出力しているもので、通常は上記ログブラウジング用HTMLファイルをチェックしてください。
*******-B.txt 及び *******-H.txt 形式(ただし、*******の部分はメールヘッダのMessage-Id)のファイルで、*******-B.txtは、メール本文、*******-H.txtファイルはメールヘッダです。メール本文は、Max linesで指定した行数のみ記録されています。これらのファイルは、先述した、ログ その1からリンクされていますので、通常は直接このファイルを閲覧する必要はありません。
初級編では単に削除したいメールアドレスやドメインを記述するだけでしたが、他の条件を記載することで、より柔軟な処理が可能になります。ルールファイルには、
の3項目をTAB記号で区切って記述します。ルールファイルの記述例を下記に示します。なお、TAB記号は^Tで表現しています。
# |
MailUtlは、ルールファイルの記述順にルールを評価し、評価結果が真となった(KeepやDelを実行した)場合には評価を終了して次のメールを処理します。基本的には、ルールファイルの冒頭にはメールを保存(Keep)するように記述し、メールの削除(Del)はそのあとに記述するとよいでしょう。
ただし、メーリングリスト宛のメールを保存する場合には、注意すべき点があります。メーリングリスト宛のメールの中には、削除したい特定送信者からのメールが含まれる場合があります。この場合には、メーリングリストを保存(Keep)する記述の前に、特定アドレスを削除(Del)するように記述した方が有効です。
[File]、[Delte Test, then Disconnect]を選択すると、ログファイルにはあたかもメールを削除したように記録が残りますが、実際の削除処理を行わないようになります。これにより、ルールファイルの記述が自分の意図通りになっているか確認することができます。
淡いマゼンタ色で着色されている行が、削除されたメールを示していることは先述したとおりです。若草色で着色されている行は、ルールファイルにて、Keepを指定したメールを意味します。白色で着色されいている行は、Del及びKeepのいずれにも該当しなかったメールを意味します。
MailUtl2のコマンドラインオプションを以下に示します。
オプション | 意味 |
---|---|
-I設定ファイル名 | MailUtl2は、デフォルトでは、起動時に自身が存在するディレクトリに存在する設定ファイル(.iniファイル)を読み込みますが、-Iオプションにより、任意の.iniファイルを読み込みます。-Iと設定ファイル名にはスペースを入れないでください。 |
POP3パスワードは環境変数 "POP3_USERPASS" で指定することもできます。パスワードを環境変数で指定する場合は指定内容を他人に見られないように注意してください。(ちなみに、筆者は自宅でパソコンを自分一人で使っているので、環境変数で指定しています。)
判定文字列(パターン)に正規表現が使用できます。正規表現のレベルは、PERL5レベルです。Tatsuo Baba氏のBREGEXP.DLL及びOsamu Takeuchi氏のBREGEXP.pasを使用して機能を実現しています。以下のように、「\m/パターン/修飾子」スタイルで記述します。例えば、info@xxx.com(xxxは1文字以上の任意文字列)からのメールを削除するには、ルールファイルに以下のように記述します。
\m/info@.+\.com$/i^T From:^T Del
以下のように記述しても同一です。
\m/info@.+\.com$/i
パターン中に/を含めたい場合は、「m$パターン$修飾子」のようにします。
パターン中で使用できる主要メタ文字は以下のとおりです。
メタ文字 | 意味 |
---|---|
\ | 次のメタ文字をクォートする |
^ | 行の最初 |
. | 改行以外のすべての文字 |
$ | 行末 |
| | 選択 |
( ) | グループ |
[...] | ...の1文字 |
\w | 英数字と "_" |
\W | 英数字と “”以外 |
\s | 空白文字 |
\S | 空白文字以外 |
\d | 数字 |
\D | 数字以外 |
\b | 単語境界 |
\B | 単語境界以外 |
\A | 文字列先頭 |
\Z | 文字列末尾 |
\t | タブ |
\n | 改行 |
\r | 復帰 |
パターン中で使用できる回数指定表現は以下のとおりです。
数量子 | 意味 |
---|---|
* | 0 回以上 |
+ | 1 回以上 |
? | 1 回または 0 回 |
{n} | n 回 |
{n,} | n 回以上 |
{n,m} | n 回以上 m 回以下 |
パターン中で使用できる修飾子は以下のとおりです。
修飾子 | 意味 |
---|---|
k | 文字を日本語(Shift JIS)として扱う(BREGEXP.dll独自機能)。 |
i | 大文字と小文字の区別をしない。 |
idPOP3.pas、idSMTP.pas、idMessage.pas、idGlobal.pas等を公開されているIndyプロジェクトチーム(Chad Z. Hower (Kudzu) と Indy ピットクルー (Indy Pit Crew))に感謝します。
PzConv.pasを公開され、利用許諾をくださったPz factory氏、BREGEXP DLLを公開されているTatsuo Baba氏及びBREGEXP.pasを公開されているOsamu Takeuchi氏の各氏に感謝します。
プログラムの不具合報告、改善提案をいただいたユーザーさんに感謝します。
このプログラムのユーザーさん、このプログラムを紹介していただいている方(あるいは組織)に感謝します。
皆さん、ありがとうございます。
サーバに保存されているメールの通数が多い場合、MailUtl2が処理しているあいだに、新しいメールがサーバに届く場合があります。例えば、MailUtl2実行開始時はメールが100通だったのに、MailUtl2処理中に101通目が届くと、MailUtl2は101通目を処理しません。この場合、MailUtl2動作後にメールを受信すると、101通目のメールはMailUtl2のフィルタリングをすり抜けたように見ます。これはMailUtl2の不具合ではなく、POPの仕組み上回避不能です。
ログ その1(HTMLファイル)の、charset属性を指定していないため、ブラウザによっては、ログが文字化けして表示される可能性があります。MailUtl(コマンドライン版)では、charsetを指定できるようにしてあるのですが、MailUtl2では、未実装です。