†REXXのどろぬま†

PORON:POp3 ReadONly mail client

REXX版簡易メールリーダー

作成開始日 2020.11.01
最終更新日 2023.07.01

ダウンロード:PORON v1.13a HTMLパートの表示機能を追加

概要

基本的に、メールサーバ上のメールの表示を目的としたプログラム。@新着メールをチェックし、A中身を確認し、B不要ならば削除、と言う用途に限定している。基本コマンドは以下の3つ;

機 能 コマンド
メールの表示 SHOW マルチパートの場合は第1パートを表示
HTMLパートの表示 HTML(*) 第2パートがHTMLの場合、HTMLパートを表示
メールの削除 DEL 正確には削除マークを付けるだけ
(*)HTMLはver.1.13で追加したコマンド

これ以外の機能は実装していない。送信・返信はもちろん、メールをローカルにダウンロードして整理する機能すらない(ただし、表示に使用するエディタ/ブラウザからメールを保存することは可)。POP3の生コマンドにシェルを被せて、文字コード変換機能を持たせたものに過ぎない。本プログラムの存在意義に関しては、後述の「開発背景」を参照。

なお、テキスト・メールはテキスト・エディタ(デフォルトでE.EXE)、HTMLメールはWebブラウザ(デフォルトでNetscape)で表示される。また、マルチパート・メールは原則的に先頭パートのみが表示される。ただし、一般的な[TEXTパート+HTMLパート]という構成のマルチパート・メールに関しては、「HTML」コマンドでHTMLパートの表示が可能。なお、本プログラムでは添付ファイルなどは扱えない。

判明している問題点

入れ子のマルチパート・メールには対応できない(一部のGmailで確認)
ヘッダ部の文字コード指定と実際の文字コードが異なると文字化けが発生する
タイムアウトするとメールが空表示になる(RECで再接続すればよい)

インストール

@PORON.ZIPを適当な場所(例えばC:\)に解凍する。
A解凍したPORONディレクトリ内でINST.CMDを実行する。

以上で終了。必要に応じて、DLLを\OS2\DLL等にコピー/移動する(以下の使い方をする場合は不要)。なお、作成されるオブジェクトは絶対パス依存なので、PORONディレクトリを移動した場合は、再度INST.CMDを実行すること

設定方法

PORON.CMDをエディタ開いて43〜45行目にある、以下の3項目を設定する。
@ユーザー名
Aパスワード ※パスワードを平文で書き込むので、シビアな環境では注意
BPOP3サーバ名

表示用エディタ/ブラウザを変更する場合は、以下の設定を書き換える。
77行目) poron.!editor=…
79行目) poron.!browser=…
書式は各行の次のコメント行(78行目、80行目)を参照。

起動方法

当該ディレクトリで、コマンドラインから以下のように入力する。

PORON[Enter]

なお、「/L」オプションを付けるとローカルモードで起動するが、ローカルモードは主にデバグ用で、通常は意味がない。また、デスクトップ上に作成される[PORON]アイコンをダブルクリックしても良い。

使用方法

設定が間違っていなければ、メールサーバに接続して、自動的に全メールのヘッダを読み込み、直近15通までのメールの件名を表示する(表示件数はporon.!nlist=で指定)。二重線で区切られ領域が件名リストの表示領域で、それより下はコマンド領域。 入力したコマンド名や、それに対するデバグ情報などが表示される。

メールを読む SHOW n(nはメール番号)範囲指定、列挙指定可
HTMLパートを読む HTML n(nはメール番号)範囲指定、列挙指定可
メールを削除する DEL n(nはメール番号)範囲指定、列挙指定可
削除を取り消す UNDEL
サーバに再接続する REC
poronを終了する EXIT

※コマンドは大文字・小文字を区別しない
※メール番号は、リストの一番左の数字
※範囲指定は「n-m」形式;例えば5〜8番メールを表示する場合は「SHOW 5-8」
※列挙指定は「n,m,l…」形式;例えば7番と10番メールを削除するには「DEL 7,10」
※範囲指定と列挙指定はver.1.10aから実装
※「HTML」コマンドは[@テキスト+AHTML]という構成のマルチパートメールが前提
 異なった構成のマルチパートメールでは正常に機能しない
※HTMLはver.1.13から実装

なお、本プログラムでは、メール番号は999番までしか扱えない。1000通以上のメールをサーバにため込んでいる場合は、番号が狂うので使用できない。基本的に、サーバ上のメール数はせいぜい30通程度を想定している。

RECコマンドの3つの機能

REC(サーバに再接続)には、次の3つの意味がある。

@新着メールをチェックする
セッション中は新着メールを感知することができない。RECでセッションを一度閉じて、再接続することでメールサーバの情報が更新される。

A削除を実行する
単にDELしただけでは削除フラグが立つだけで、削除は実行されない。サーバ上からファイルを実際に削除するにはEXITでセッションを閉じるか、RECで再接続(切断→接続)を実行する必要がある。なお、タイムアウトでセッションがクローズした場合、削除は実行されない。

Bタイムアウトからの復帰
メールサーバに接続して数分放置すると、自動的にタイムアウトする。その場合、RECを実行すれば再接続される。

開発背景

そもそも、こんなプログラムが必要になったのは、Mozilla系のメーラー(Seamonkey / Thunderbird)が余りに重くなったため。WebがTLS 1.2対応必須になって以来、Seamonkey 2.28 / Firefox 31(24)以上が必須に。だが、それらのブラウザにバージョンを合わせたメーラーは、動作がメチャクチャ重い。PentiumV / PentiumM / AthlonXP / GeodeNXと言った環境で実用は厳しい。恐らくは、データの保存形式がプレーンテキストからsqliteに変更されたため。

旧バージョンのメーラーならば軽快に動いてくれるが、TLS 1.2ブラウザとは共存不可。ブラウザとメーラーで、共通DLLのバージョン不整合が起きていると思われる。で、旧式PCでメールチェックをするには、非Mozilla系メーラーが必要になる。ちなみに、Netscape 4.6のメーラーはSeamokey 2.28やFirefox 31と共存可能。が、メールサーバへの接続IDをサーバ名とユーザー名から勝手に生成するため、仕様が異なるPOPサーバ(例えばHi-HO)には接続できない…(u_u;)

なお、このporonと同様な?趣旨のメールリーダーにalpine/pineがあるそうだが、ちょっと弄った限り、設定がとても判りにくかったし、何より、日本語の扱いが…OS/2移植版は直に日本語読めるのかなぁ…?

また、OS/2ではPM Mailと言う独自のメーラーも開発されている(フリー)。これならば日本語表示もブラウザとの共存可能だが、使い勝手が悪すぎる。UIをもう少し考えてくれないと…。それに、今回作成してみてつくづく感じたが、メールは仕様がけっこういい加減で、トラブルが発生したら逐次対処して行くしかないカンジ(大文字/小文字、改行ルール、マルチパートの入れ子など…しっかり決めろよ!)。となると、ソースが弄れない、或は気軽に改造できないメーラーは実用性に乏しい。

開発経緯

本プログラムの直接の原型となったのは、Pururuさんの作成したPCM/2です。これはNTTの武川進さんが作成されたPC/Mというメーラーを、OS/2 REXXに移植?したもののようです。元はUnix用だったんでしょうか?良くは知りません。ともあれ、軽くてとても使い易かったのですが、機能がシンプルな上、対応できる文字コードやエンコードに限界があって、添付ファイルなども扱えませんでした。確か、MIMEヘッダに対応しているだけだったような記憶が…

そこで、そうした問題に対応すべく、勝手にコツコツと改造して、base64にもqpにも、添付ファイルにも対応できるようになったのですが、流石に、Unicodeの普及と、smtpの仕様変更でギブアップ!以後、Mozilla系のメーラーに乗り換えていました。

まあ、Semonkey 1.xの間はそれで何の問題もなかったのですが、前述のような事情で、Seamonkey 2.28必須となってハタと困ってしまったわけです。私のOS/2マシンはPenM/2.1GHz、ブラウザも軽くはないが、メーラーの重さは信じ難いレベル。リストからメールを選択するだけで数秒間固まる、リストのスクロールバーなんか、重過ぎて動かない。マウスを操作してから十数秒経って、ようやく実際に動くと言う始末。Core i5-3470のWinマシンのVirtulaBoxのOS/2でも大差はない;少し軽い程度。

もちろん、ブラウザとメーラーを共存させる必要がなければ、別々に起動して別々に使用すれば良いので、旧版のSeamonkeyのメーラーやThunderbirdで良いのですが、たとえば、ヤフオクのアラートメールなんかは、メールにリンクが貼ってあり、ブラウザとメーラーの共存が前提なワケで、片方しか使えないのはとても不便です。で、いろいろ旧版メーラーとの共存を探ってみたのですが、収穫は乏しく、かなり限定された使い方しかできない(起動の順序に強い制限があるとか…)。非Mozilla系も選択肢が少ないし、PM mailなんかはUIがなぁ…Webメールも総じてクソ重い。

ならば、いっそPCM/2に戻ったらどうか?もちろん、問題があってMozilla系に移行したので、そのままでは使えない。しかし、取り敢えずメールのチェックができれば事足りるので、smtpの認証ができなくても問題ない。問題はむしろ、Unicode…だが、当時と違って、現在はUTF-8をShif-JISに変換するライブラリが存在する。

肥大化させてしまった「PCM/2勝手に改造版」ではなく、機能をざっくり削って、メールサーバ用のシェルみたいな物を作れば、それでいいんじゃね?メインのメーラーとして使うわけじゃなし。と言うことで、POP3サーバの認証部分はPCM/2をそのまま借用していますが、それ以外は全部一から作り直してみました。

幸いなことに、現在ではいろんなライブラリが充実していて、以前はBase64デコーダも自作していましたが(REXXベースなんで遅い遅い)、現在ではライブラリ関数一発で済みます。実に便利になったものです。同梱のライブラリ(RXJIS、RXULS、RXSOCK)を開発して頂いた皆様には感謝しかございません。一応(私の英語力では)再配布可能と理解しましたので、同梱させていただきます。


【REXXのどろぬま目次】 【ホーム】