パスワードを忘れた? アカウント作成
643179 journal

sugi999の日記: fetchmail + bsfilter + Wanderlust を用いたメール環境の構築 on Windows

日記 by sugi999

=== 目標
Windows + Cygwin 上に、以下のような環境を構築する。

    POP サーバからメールをダウンロードし、
    メールごとに適切な振り分けをした上でローカルのメールボックスに保存する。
    Meadow2 + Wanderlust を用いて、ローカルのメールボックス上のメールを読む。
    使用するメールのアカウントは複数ある。

=== fetchmail のインストール
POP サーバからメールをダウンロードするために、fetchmail を用いる。
Cygwin の setup からインストールすることができる。

設定ファイル ~/.fetchmailrc は、
    defaults
            protocol pop3
            keep
            no mimedecode
    poll mail.example.jp user "foo" password "abcde123"
            mda "remail.rb foo/inbox"
    poll mail.example.com user "bar" password "xyz12345"
            mda "remail.rb bar/inbox"
のような感じである。ファイルのパーミッション・ownerに注意。

remail.rb は適当に自分で書いてみた MDA。
普通なら、procmail や scmail などが選択肢になるだろう。

=== bsfilter のインストール
スパムフィルタ用ツールとして、bsfilter を用いることにした。
Ruby で書かれているベイジアンフィルタである。
日本語の tokenize のために MeCabを用いることにしたので、
MeCab の Ruby バインディングをインストールした。

==== MeCab のインストール
http://cl.aist-nara.ac.jp/~taku-ku/software/mecab/
より、0.77 をダウンロード。

Cygwin へのインストールは
http://d.hatena.ne.jp/svnseeds/20030707
を参考にした。

    % zcat mecab-0.77.tar.gz | tar xvf -
    % cd mecab-0.77
    % aclocal
    % automake --add-missing
    % autoconf
    % libtoolize --force
    % automake
    % autoconf
    % ./configure
    % vi Makefile
        LDFLAGSに-no-undefinedを付け加える
    % make
    % make install

とりあえず動いたのを確認して、ruby バインディングのインストール。

    % zcat mecab-ruby-0.77.tar.gz | tar xvf -
    % cd mecab-ruby-0.77
    % ruby extconf.rb
    % vi Makefile
        LIBSの行の最後に-L/usr/local/lib -lmecabを付け加える
    % make
    % make install

ruby extconf.rb の段階で、
    checking for ... /usr/local/lib/ruby/1.8/mkmf.rb:509:in `have_header':
    undefined method `tr' for nil:NilClass (NoMethodError)
というエラーが出たが……とりあえずそれっぽく動いているようだ。
ということで放置。

==== データベースの構築
    % bsfilter -j mecab -c クリーンなメール
    % bsfilter -j mecab -s スパムメール
    % bsfilter -u

==== スパム判定
ファイル mail がスパムかどうかを判定するには、
    % cat mail | bsfilter -j mecab
として、exit status を見る。0 なら spam。
これを利用して、MDA でスパムを振り分ける。

メールを標準入力から渡すかファイル名を渡すかで
挙動が異なるので注意。
(ファイル名で渡すと、spam でも exit status は 0 である。)

=== Wanderlust のインストール
Wanderlust のインストールについては、別項とする。

えっとすいません、「テキスト形式(HTML OK!)」で、
リダイレクトの不等号って書けないんでしょうか?
実体参照で書いてみてもダメっぽいんですが……

644324 journal

sugi999の日記: Windows 2000 SP4 適用済み+パッチとかいろいろ自動インストール CD

日記 by sugi999

ということで、第1回目は Windows の自動インストール。

=== 目標
Windows 2000 Professional SP4 適用済み+パッチとかいろいろを
完全自動でインストールしてくれる CD を作る。

=== 準備
* Service Pack http://www.microsoft.com/japan/windows2000/downloads/servicepacks/sp4/download.asp
* bbie.exe http://www.nu2.nu/bbie/
* mkisofs.exe ftp://ftp.berlios.de/pub/cdrecord/alpha/win32/
を用意する。

=== SP4 の適用
Windows 2000 の CD-ROM の中身を、HDD にコピーする。
    xcopy q:\ d:\temp\wincd /E

サービスパックを適用する。
    d:\download\W2KSP4_ja.EXE -s:d:\temp\wincd

=== パッチ等を同梱
CD-ROM のルート (上の例では d:\temp\wincd) に $OEM$ というディレクトリを作る。
そこに CMDLINES.TXT というファイルを置くと、Windows インストール時にコマンドが実行される。

中身は次の通り。

    [COMMANDS]
    ".\00reg.cmd"
    ".\05patch.cmd"
    ".\10ie6.cmd"
    ".\20dx9.cmd"
    ".\30wmp9.cmd"
    ".\40patch.cmd"
    ".\50dotnet.cmd"

分かりやすくするため別ファイルにまとめ、それを実行している。
以下、各ファイルについて説明する。

なお、ファイルは以下のような配置で置いている。
    %CDROOT%\$OEM$\reg : レジストリ
    %CDROOT%\$OEM$\patch : パッチ
    %CDROOT%\$OEM$\comp\ie6 : IE6
    %CDROOT%\$OEM$\comp\DirectX9 : DirectX9

また、%CDROOT%\$OEM$\$$ は %WinDir% に、
%CDROOT%\$OEM$\$1 は %SystemDrive% に、
%CDROOT%\$OEM$\c は C ドライブに (d e なども同様)、
それぞれマッピングされるので、
コピーしたいファイルがあるときは置いておく。
(DLL、アプリケーションなど)

=== 00reg.cmd
00reg.cmd では、レジストリを設定している。
例えば
    start "" /wait regedit /S "reg\custom.reg"

custom.reg は %CDROOT%\$OEM$\reg\ に置いている。

=== 05patch.cmd
重要な更新のパッチを適用している。
    .\patch\Q823718_MDAC_SecurityPatch.exe /q:a /c:"dahotfix.exe /q /n"
    .\patch\Windows2000-KB824105-x86-JPN.exe /z /q
    .\patch\Windows2000-KB828035-x86-JPN.exe /z /q
    .\patch\Windows2000-KB824146-x86-JPN.exe /z /q
    .\patch\Windows2000-KB823182-x86-JPN.exe /z /q
    .\patch\Windows2000-KB824141-x86-JPN.exe /z /q
    .\patch\Windows2000-KB825119-x86-JPN.exe /z /q
    .\patch\Windows2000-KB826232-x86-JPN.exe /z /q
    .\patch\Windows2000-KB828749-x86-JPN.exe /z /q

=== 10ie6.cmd
IE6 と、そのパッチのインストール。
    start "" /wait "comp\ie6\ie6setup.exe" /C:"IE6WZD /S:""#e"" /Q:A /R:N"
    start "" /wait "patch\Windows2000-KB823559-x86-JPN.exe" /z /q
    start "" /wait "patch\q330994.exe" /Q:A /R:N
    start "" /wait "patch\q824145.exe" /Q:A /R:N
    start "" /wait "patch\Windows2000-KB329115-x86-JPN.exe" /z /q

IE6 は、http://www.microsoft.com/japan/ie/downloads/ie6SP1/default.asp より
ie6setup.exe をまず落とし、さらに
    "ie6setup.exe" /c:"ie6wzd.exe /d /s:""#E"""
として事前にファイルをローカルに保存しておく。

=== 20dx9.cmd
DirectX 9.0b のインストール。
    start "" /wait "comp\DirectX9\dxsetup.exe" /opk

=== 30wmp9.cmd
Windows Media Player 9 とそのパッチのインストール。
    start "" /wait "comp\wmp9\mpsetup.exe" /Q:A /R:N
    start "" /wait "patch\WindowsMedia9-KB819639-x86-JPN.exe" /Q:A /R:N
    start "" /wait "patch\WindowsMedia-KB828026-x86-JPN.exe" /z /q

=== 40patch.cmd
その他のパッチとか
    rem 一部のドライバインストールプログラムが実行できない
    start "" /wait patch\Windows2000-KB822831-x86-JPN.exe /z /q
    rem NTFS でハングする
    start "" /wait patch\Windows2000-KB820888-x86-JPN.exe /z /q
    rem IME 2000 アップデート: 郵便番号辞書 (2003 年 11月版) (Windows ME/2000 用)
    start "" /wait patch\ZP70UPDW.exe /Q:A /R:N
    rem JScript 5.6
    start "" /wait "patch\js56njp.exe" /Q:A /R:N

=== 50dotnet.cmd
.Net Framework
    start "" /wait "comp\dotnet\dotnetfx.exe" /q:a /c:"install.exe /l /q"
    start "" /wait "comp\dotnet\langpack.exe" /q:a /c:"inst.exe /q"

=== 応答ファイルの作成
無人インストールのためには、インストール時に聞かれる質問への回答を書いた
応答ファイルが必要であるので作成する。

Windows 2000 の CD-ROM の、 SUPPORT\TOOLS\DEPLOY.CAB の中にある
setupmgr.exe で作成することができる。

詳細は http://premium.nikkeibp.co.jp/win2000/tips/others/index12.shtml を参照。

ProductID は手動で書く必要がある。

応答ファイルフォーマットについては、DEPLOY.CAB の中の unattend.doc を参照。

Repartition=Yes だと、パーティションを自動で切り直すので注意。

CMDLINES.TXT が実行されるようにするためには、
[Unattend] セクションの OemPreinstall の値を Yes にする必要がある。

作成した応答ファイルは、
winnt.sif という名前でフロッピーに入れておく。
さらに、unattend.txt という名前で、%CDROOT%\$OEM$\ にも入れておく。

=== ISO イメージの作成
    bbie.exe q:
    copy image1.bin d:\temp\wincd
    mkisofs.exe -b image1.bin -no-emul-boot -J -N -o d:\temp\sp.iso d:\temp\wincd

=== インストール
ブートの順番を CD-ROM -> FDD -> HDD にしておき、
焼いた CD と応答ファイルを入れたフロッピーを入れて起動させる。

あとは自動でインストールが進む。

=== 参考 URL
* 2ch: WindowsXP SP1とHotfix統合インストール作成
* 2ch: Windows 2000 Proを安定させるインストール順序
* Microsoft Windows 2000 修正プログラム インストールと導入ガイド
* Windows インストールに OEM プラグ アンド プレイ ドライバを追加する方法

376004 journal

sugi999の日記: スタート 2

日記 by sugi999

せっかくslashdot.jpにアカウントを持ってるんだからということで、
技術メモを残していこうと思います。

内容無保証・飽きたらやめ、ってことで^^;;

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...