これは、VisualBasic で作成しました


履歴



はじめに
本 Mail アプリケーションは、定期的にメールサーバにアクセスして、メールの内容をダウンロード。
本文、題名を特定のファイルに XML 形式に保存。
さらに添付ファイルを特定のディレクトリへ保存、先ほどの XML 形式の本文からリンクするような ASP を使って Web 公開できるようになっています。

まぁ、ようは、カメラ付き携帯電話から、自分の Web 日記を更新できたらいいなぁ。
ついでに、カメラで撮影した画像へもリンクされるといいなぁ。
と思って、サッサッと作った代物です。

HTML エンコードする/しないという設定も可能です。

メールの FROM ヘッダを見て、投稿可能なメール・アドレスを制限する事も可能です。

また、ASP(Web ページ)からは、日記を見た人がレスを書くことができる。


仕組み
WSH のレジストリ読み取り機能を使って、レジストリ上の設定を読みだし、後はタイマーを使って定期的にメールサーバへアクセス。
メールをダウンロードして、特定のファイルに書き出しているだけです。
メールサーバとの接続には、baba 氏作成の BASP21 という高機能な COM コンポーネントを用いています。

WindowsNT のバックグラウンドで動かしたい方は、竹越毅氏製作のタイマー実行サービスを併用すればよろしいかと思います。
(バックグラウンドで動作させたいと考えている方は、通常のアプリケーションでの試用を十分に行ってからにすることを強く推奨します)

基本図
静的な場合
拡張バージョン



実行環境



使い方
  1. あらかじめ「実行環境」で説明したモジュールをインストールします
  2. ダウンロードしたファイルを解凍しします。
    (LHAは、吉崎栄泰氏が、著作権を所有)
  3. 解凍して出来た「sNikiNiki3.reg」がレジストリへ書き出す設定内容のサンプルです。
    レジストリパスは「HKLM\Software\sNikiNiki3\」以下です。
  4. 解凍して出来た「sNikinikiDLL.dll」と「regsvr32.bat」を適当なディレクトリへコピーして、「regsvr32.bat」を実行します。これで「sNikinikiDLL.dll」の情報がレジストリに登録され ActiveX DLL の登録は完成です。
  5. 解凍して出来た「sNikiNiki3.exe」がそれです。
    実行するだけです。
    実行画面からテキストボックスなどに設定内容を指定するだけです。

  6. display.asp を IIS から呼び出せるようにすれば、日記公開は完了です
  7. (display.asp を使わなくてもメール内容は XML 形式で保存されるので、XHTML などの Webクライアント技術だけでも Web 公開できるでしょう)
  8. ver3.1.0.2 より edit.asp を利用する事で、Web から記事の投稿/修正ができるようになりました。edit.asp は記事の投稿/修正ができますので、edit.asp のアクセス権限には十分注意してください。
  9. ver3.1.0.15 より AllowDisplay.asp を利用する事で、コメントの許可ができるようになりました。AllowDisplay.asp はコメントの掲載許可ができますので、AllowDisplay.asp のアクセス権限には十分注意してください。
  10. 記事が投稿される度(レスではなくて記事です)に RSS.xml が新規作成されます。このファイルをWebで公開する(display.aspと同じフォルダだと面倒がないです)と RSS 配信も行えます。



セキュリティの考察
データは、二つの XML ファイルに保存されます。
記事が保存されている XML ファイル
匿名ユーザに記事を書き込む必要はないので、読み込みだけで十分です

記事に対しての反応(レス)を保存している XML ファイル
匿名ユーザの反応という事なので、追記権限が必要です

edit.asp
記事の修正/投稿ができますので、匿名ユーザにアクセス権限を与えるのは危険です

rss.xml
display.asp と同じフォルダでない場合は、display.asp 側でリンク先の修正が必要です。
asp ファイルには「IISスクリプト」権限が必要ですが「IIS読み取り」権限は不要です。
一方で rss.xml には「IIS読み取り権限」が必要です。
(権限最小の原則から離れていますので、理想的には、スクリプトの display.asp と rss.xml は別ディレクトリが望ましいです)
しかし、ver3.0.4 の時点では、RSS 専用の URL を保持するレジストリを用意する事が煩雑になると考え、別ディレクトリではないようになっています。



削除方法
このためにインストールしたモジュールを削除し、sNikiNiki3.exe を削除する。
レジストリ「HKLM\Software\sNikiNiki3\」以下を削除する。


使用上の注意
POP3 パスワードは、DPAPI で暗号化(最初に起動したプロセスのユーザ・アカウント)されます。
「設定は一般ユーザで、常時起動は NT サービス(systemアカウント)で」というようなアカウントが別の場合は注意してください

なお、sNikiNiki3.exe は、起動時の一回だけレジストリにアクセスします。
それ以外の起動中にアクセスすることはありませんので、そのような性質を踏まえて、レジストリの "読み取り監査" の設定をすれば、ベストかも知れません。


ver2.0.0.0 を使う上での注意
ver1.x とデータ・ファイル(記事ファイル/書き込みデータファイル)には互換性がありません。


ver3.0.0.0 を使う上での注意
ver1.x & ver2.x とデータ・ファイル(記事ファイル/書き込みデータファイル)には互換性がありません。


レジストリの意味
レジストリの値は、全て文字列(REG_SZ)型となっています。
名前意味
POP3ServerHost POP サーバのアドレスです
POP3ServerPort POP サーバのポート番号です(通常は 110)
POP3ServerUserName POP サーバのアカウント名
POP3ServerPassword POP サーバのパスワード
POP3ServerPasswordFlg 「0」の時は次回の sNikiNiki3.exed 起動時に DPAPI でパスワードを暗号化する
POP3Interval POP サーバにどのくらいの間隔(分)でアクセスするか
BASP21TempDir BASP21 が利用する一時ディレクトリ
BASP21AttachFileTempDir BASP21 が添付ファイルを展開する時に利用する一時ディレクトリ
AttachFileDir 添付ファイル保存するディレクトリ
AttachFileURL AttachFilePath を Web サーバ(display.asp)から見たときの URL
AllowHTMLMail メール本文、題名などを HTML エンコードするかどうか
POP3AllowMailAddress メールの From ヘッダと比較、このレジストリキーに登録されているメール・アドレスのみ処理する。
この内容が空文字列の場合、From ヘッダによるフィルタ処理はしない
NoSaveMailHeader 保存したくないメールヘッダ
SaveHTTPReqestHeader 保存するべき HTTP ヘッダ(CGI 環境変数)
preHeaderName メールヘッダ時に、先頭が数字のタグ(XML)は保存できないので、そのための接頭文字
ImageExtentions 画像データの拡張子を指定。
ここで登録している拡張子のみ、添付ファイル処理時のリンクが A タグから IMG タグへと切り替える。
SaveXMLFile メールを保存する XML ファイルパス
SaveCommnetXMLFile Web からのレスを保存する XML ファイル
AlertMailAddress コメントがあった時に通知するメールアドレス
AlertMailAddressFrom コメントがあった時に通知するメールの From アドレス
AlertMailAddressSMTPServer コメントがあった時に通知するメールアドレスに送信するためのメールサーバ
BASP21の SendMail() メソッドの第一引数に渡すので、「サーバ:ポート」という書式
AlertMailInterval AllertMail を送信する最低間隔(分)を指定する
非正数で、最低間隔は「0分」とする
ver3.1.0.10 以降
WebEdit ver3.1.0.2 以降の Web からの編集/投稿機能を有効にするかどうか。
空文字にすると無効になる。空文字以外の場合、編集ASPスクリプト名で display.asp からの相対パスの URLを入れる
WebEditSSL ver3.1.0.2 以降の Web からの編集/投稿機能へのdisplay.aspからのリンクを SSL にするかどうか?
「1」の場合、SSLにする
thisisTitle ver3.1.0.4 以降の RSS での channel→title 要素の関係から新設した。同時に display.asp の HTML→TITLE 要素もこのレジストリ値を反映するようにした
WebURL ver3.1.0.4 以降の RSS での channel→link 要素の関係から新設した。display.asp の絶対URL を指定する(例:http://localhost/path/display.asp)
RSSSavePath ver3.1.0.4 以降の RSS での rss.xml ファイルの保存場所を指定
空文字列の場合、RSS 配信を停止する
RSSListMax ver3.1.0.15 以降ては、RSS の件数を制限することができる。範囲は「0,2〜」デフォルトは「0」
「0」の場合は無制限
AllowRes Web でのレスを許可するかどうか(0: 禁止、1:許可[デフォルト])
ver3.1.0.10 以降
SpamChkUseSession ASP のセッション管理を行なって、コメントスパムを防止する(0: 無効[デフォルト]、1:有効)
ver3.1.0.10 以降
事前にアクセスしてセッションを生成していないとレスができない。という仕様
SpamChkUseAgent User-Agent を使ってコメントスパムを防止する(0: 無効[デフォルト]、1:User-Agentが空文字だとコメントスパムだと判断する、2:セッションに記録し同一UserAgentでないとコメントスパムだと判断する)
ver3.1.0.10 以降
[2] の場合は、ASP のセッション機能が有効である必要がある
SpamChkReferer Referer を使ってコメントスパムを防止する(0: 無効[デフォルト]、1:Referer がホスト名{http&httpsスキーム}と先頭一致{大/小文字同一視}しなければコメントスパムと判断する)
ver3.1.0.10 以降
SpamChkSameMsg 一つ前の投稿メッセージと同一メッセージを投稿することができない(0:無効[デフォルト]、1:有効)
ver3.1.0.10 以降
SpamChkHiddenFake 空の Hidden Field [url] を用意して、その値に何か入っていたら、コメントスパムとする(0:無効[デフォルト]、1:有効)
ver3.1.0.10 以降
SpamChkHTMLTags コメントに「[URL=」や「<a」があったら、コメントスパムとする(0:無効[デフォルト]、1:有効)
ver3.1.0.15 以降
SpamChkCSVString 特定の文字列を指定する(csv 形式)。指定した文字列がコメントに含まれるとスパムと判定する
ver3.1.0.15 以降
ResMaxSize Res の最大サイズを指定
ver3.1.0.10 以降



免責など
著作権は保持します(一応)。
このソフトを使用したことによって生じた、
いかなる損害についても責任は持ちません。
ソースコードについても、各自の責任において、
自由にいじってくれてもいいです。

ver3.1.0.15 DownLoad(sNikiNiki3.lzh as 64,371byte) (sNikiNiki3.lzh.base64)

mail to active@window.goukaku.com