* Meadow/Mule for Windowsでcmailを使う方法

1999/12/22 Masaki YATSU <yatsu@aurora.dti.ne.jp>
2000/03/09 Masaki YATSU <yatsu@aurora.dti.ne.jp>
2002/10/03 Takeshi Morishima <tm@onepost.net>
  Misc updated (Hyper links, Meadow version info, others.)

$Id: README.Windows,v 1.3 2002/10/05 15:11:27 tmp Exp $

このREADME.Windowsは，outline.elという
Meadow/Mule for Windowsに標準で附属しているelisp packageを利
用して書いています．このfileをC-xC-fで開けば，自動的に
outline modeになるようになっています．Window上部のメニューバー
から，マウス操作で各章(level)についての操作が可能になってい
るはずですので，活用してみてください．
以下に，キーボードからの簡単な操作方法をまとめておきます．

  - カーソルがある章(level)の本文(entry)を隠す     : C-cC-c
  -                                       表示する : C-cC-e
  - 各level間の移動 : C-cC-u, C-cC-n, C-cC-p


* はじめに

この文章は，Windows95/98/NT4.0/2000/XP上で動作するGNU Emacsであ
る

  Meadow 1.15(Emacs 20.7/Mule 4.1)
  Meadow 1.14(Emacs 20.7/Mule 4.1)
  Meadow 1.12(Emacs 20.5/Mule 4.1)
  Meadow 1.10(Emacs 20.4.1/Mule 4.1)
  Meadow 1.00(Emacs 20.2/Mule 4.0)
  Mule for Windows 1.21(Emacs 19.28/Mule 2.3)
  Mule for Windows 1.22(Emacs 19.28/Mule 2.3)

でcmailを利用する場合に必要になると思われる事について書いて
あります．

各versionのMeadowやMule for Windowsは，

  <ftp://ftp.m17n.org/pub/mule/Windows/>

以下に置いてあります．

Windows で動作する Emacs については

  <http://www.netlaputa.ne.jp/~kose/Emacs/Meadow/>

にも詳しい情報があります。

# Meadow2 (1.99) (Emacs 21.2/Mule 5.0)などのbeta versionのも
# のや，NTEmacsなどについても，基本的に同じ設定でcmailを利用
# できるようになるはずです(NTEmacsについては，手元に環境がな
# いので確認していません)．

Emacs初心者にも理解できるように，できるだけ詳しく書いている
つもりですが，内容的にある程度Emacsについての知識が必要にな
ります．とりあえず，この文章を最後まで読んで設定できれば，
cmailが利用できるようになっているので，がんばってください．

また，この後の説明では，主にMeadow 1.10での設定方法を書いて
います．MeadowとMule for Windowsで大幅に設定方法が違う場合，
個別に説明してあるので，参考にしてください．

Meadow は最新安定版の利用をお勧めします．

(注意)
Mule for Windowsを利用している，またはこれから利用しようとさ
れている方は，状況が許すなら最新版Meadowの利用をお勧めします．
理由として，
  1. すでにMule for Windowsの開発は終了している．
  2. ベースになっているEmacsのversionが古い．
  3. 最新のelisp packageが利用できない．
  4. Mule for Windowsにあった不具合が改善されている．
  5. 利用できるメモリ量が，Meadowの方が多い．
  6. BDF Fontが利用できない．
特に2.は重要です．現在のcmailではcustomizeと呼ばれる機能を利
用して，簡単にcmailの設定を変更，保存，設定することができま
す．このcustomize機能は，Meadow 1.00以降からしか利用できませ
ん．
# 非常に便利な機能なのに，それが使えないなんてなんて悲しいで
# すよね:)

しかし，どうしてもMule for Windowsを利用しようと思っている方
は，version 1.22を利用してください．version 1.21からかなりの
不具合が改善されています．


以下に，この文章中で使われている代表的な表現についてまとめて
あるので，適宜ご自分の環境で読み換えてください．

  - 各種Emacsに関して

    - $MEADOW または %MEADOW%
        Meadowをインストールしたディレクトリ．
          ex. c:\usr\Meadow
    - $MULE または %MULE%
        Mule for Windowsをインストールしたディレクトリ．
          ex. c:\usr\mule2
    - $SITELISP または %SITELISP%
        自分でインストールしたpackageを置くディレクトリ．
          ex. $MEADOW\site-lisp

    - Meadow 1.10/1.00, Mule for Windowsを全て含めた場
      合は``Emacs''
    - Meadow 1.10/1.00の両方を指す場合は``Meadow''
    - Mule for Windows 1.22/1.21の両方を指す場合は
      ``Mule for Windows''
    - それぞれを個別に指す場合は
        Meadow 1.10
        Meadow 1.00
        Mule for Windows 1.22
        Mule for Windows 1.21

  - キー操作に関して

    - M-x
      ESCキーを押してからxを押す(ミニバッファに M-x と表示さ
      れる)
    - C-x
      CTRLキーを押しながらxを押す(ミニバファに C-x- と表示さ
      れる)
    - [CR]
      リターンを押す
    - [TAB]
      タブキーを押す

    ex. M-x cmail[CR]
        C-xC-f[TAB]


* 最新版のcmailについて

cmail は2002年8月からsourceforge.jp にて CVS にて管理してい
ます，cvs というプログラムさえあれば，誰でもその時の最新版を
収得できるようになっています。CVS のアクセスについては 
<http://cmail.sourceforge.jp/> をごらんください。

(注意)
Windows上でCVSを利用するためには，

  <http://www.sourcegear.com/CVS>

で配布されているsource fileを，この後に説明しているcygwinで
compileするか，すでにcompile済のバイナリを利用するしかありま
せん．詳しく書きませんが，もしWindows環境でCVSを利用したいの
であれば，cygwinでcompileしたものを利用することをお勧めします．


* cmailに関する情報源

プロジェクトページは <http://cmail.sourceforge.jp/> です．
cmail に関する情報はなるべくここに集める方針となっています．

cmailに関しての情報交換の場所として，メーリングリスト(cmail
ML) があります．上記プロジェクトページから参加方法などを確認
することができます．


* インストール方法

さっそくcmailのインストールを，と行きたいところですが，まず
はcmailが必要とするものからインストールしていきましょう．


** cmailから利用する外部elisp packageやプログラム

cmailが利用するelisp packageや外部プログラムをインストールし
ておきましょう．

elisp packageは，packageに附属のドキュメントを読んで適切にイ
ンストールしてください．外部プログラムについては，環境変数
PATHがとおっている場所に置けばよいのですが，ここでは

  c:\usr\bin

というディレクトリを作って，そこに置くことにします．
そして，環境変数PATHの最後に，このc:\usr\binを付け足します．

  set PATH=%PATH%;c:\usr\bin

以下に，必要になると思われるものの所在(の一例)を示します．

  - Meadowの場合
    - elisp package(必須)
      - APEL <http://cvs.m17n.org/elisp/APEL/>
        APELがインストールされていない，またはcmailの配布パッ
        ケージに附属のAPELの方がversionが新しい場合，cmailの
        配布パッケージに附属のAPELがインストールされます．

    - elisp package(あると便利)
      - SEMI <http://cvs.m17n.org/elisp/SEMI/>
      - FLIM <http://cvs.m17n.org/elisp/FLIM/>
        これらが無くてもcmailは利用可能ですが，MIME機能など
        が利用できなくなります．事実上必須と言ってもいいと思
        います．

  - Mule for Windowsの場合
    - elisp package(必須)
      cmailの配布パッケージに附属するAPELがインストールされ
      るので，cmailを利用するうえで必須となるelisp packageは
      ありません．

    - elisp package(あると便利)
      - TM <http://cvs.m17n.org/tomo/comp/emacsen/tm/tm-8/>
        Meadowの場合のFLIM/SEMIと同様に，TMがなければMIME機
        能などが利用できないので，事実上必須と言っていいと思
        います．

    tm-8.8にはAPEL-9.23が附属しています．cmailに附属のAPELの
    方が新しい場合(具体的には，cmail-2.60+20000126には
    APEL-10.1が附属しています)には，cmailをインストール後に
    tm-8.8をインストールすると，これを上書きしてしまう可能性
    があるので，注意が必要です．

    - 「便利に使おうMule for Win32」 カットシステム
      MeadowやMule for Windowsの作者のhimiさんが書かれた，
      Mule for Windowsについての本です．付録のCD-ROMに，
      Mule for Windowsを利用するのに必要なものが含まれていま
      す．もちろんMule for WindowsやTM(tm-7.106)も含まれてい
      ます．

    Mule for WindowsにはTMが附属していないので，インストール
    した方がいいでしょう．ただし，前述のように，cmailのイン
    ストール後にTMをインストールするのは避けたほうがよいと思
    います．

  - 外部プログラム(ほぼ必須)
    - gzip.exe, tar.exe, mmencode.exe(*),
      uuencode.exe, uudecode.exe
      <ftp://ftp.m17n.org/pub/mule/Windows/tools/>
      これらの外部プログラムが無くてもcmail自体は動作します
      が，いわいる添付ファイルなどの受渡しをする場合に困って
      しまう場合があるので，インストールしておいたほうが良い
      でしょう．

      (*)Meadow 1.10では，base64のencoder/decoderが内蔵され
      た為，mmencode.exeは必要ありません．

    - lha.exe
      日本国内でよく利用されているfileを圧縮/伸張/アーカイブ
      (複数のfileを一つにまとめる)プログラムです．Windows用
      のさまざまなタイプのものがあります．自分の使い易い(使
      い慣れた)ものを適当にインストールしておけばよいでしょう．

      これらの外部プログラムは，前述のFLIM/SEMIやTMが内部か
      ら呼び出して利用することがあるので，MS-DOSプロンプトか
      ら利用できるものを用意しておいたほうが便利です．

  - 外部プログラム(あると便利なもの)
    - cygwin
      <http://www.cygwin.com/>

    - Virtually Un*x
      <http://www.itribe.net/virtunix/>
      <ftp://ftp.irtibe.net/pub/virtunix/>
      こちらはcygwinのusertools.exeと似ていますが，VC++を利
      用してcompileされているため，Win32ネイティブなプログラ
      ム群となっています．

    これらは，無くてもなんとかなるので，HDDと時間に余裕のあ
    る人向けです．詳しい説明はしませんので，上記のURIを参考
    に，遊んでみてください:-)

  - 参考
    - APEL/FLIM/SEMI, TMなどに関して <http://m17n.org/>
    - cmailに関して <http://cmail.sourceforge.jp/>


** cmailのインストール

それではcmailのインストールですが，ここでは，すでに
APEL/FLIM(Meadow 1.00ではMEL)/SEMI, TM(Mule for Windowsのみ)
はインストールされているものと仮定して説明していきます．

# Meadowでは，標準でAPEL/FLIM(MEL)/SEMIが附属しているので，
# 特に問題ないと思います．自分でインストールしたい人は，各自
# がんばってください．

# Mule for Windowsには，残念ながらTMが附属していないので，TM
# に附属のREADMEを参考にしながら，がんばってインストールして
# ください．ただし，cygwinがインストールされていない環境では，
# Emacs(やmakeコマンドについて)の知識がある程度ないとインス
# トールは難しいでしょう．
# 前述の「便利に使おうMule for Windows」があれば，簡単に
# tm-7.106がインストールできます．


*** cygwinがインストールして(make.exeが)ある場合

ここまでで何度か触れてきているように，cygwinがインストールし
てある場合，make.exeが環境変数%PATH%上に存在すると思います．
この場合，Makefileをあなたの環境に合うように適当に書き換えて
make; make installすればOKです．この時，

  $ make what-where

とすれば，実際のインストール作業はせずに，各ファイルがどこに
インストールされるか表示されるので，自分で書き換えたMakefile
の内容を確認するのに活用してみてください．


*** makeit.batの書き換え

通常のelisp packageは，makeというプログラムにMakefileという
fileを読み込ませ，その中からEmacsを起動して*.elを*.elcにバイ
トコンパイルし，インストールしています．

しかし，Windowsには標準でmake.exeが附属していないので，cmail
にはこれと同等のことを行なうbatch file(makeit.bat)が附属して
います．cygwin環境などがない場合は，このmakeit.batを利用して
インストールします．

まずは，このmakeit.batの内容を各自の環境に合せて書き換える必
要があります．書き換える項目は，makeit.batの先頭にある程度書
いてあり，特に難しいことはないと思いますが一応説明します．

  - 変数PREFIX
      Meadow/Mule for Windowsをインストールした場所．
      この文章では，$MEADOW/$MULEと表記している場所のことで，
      例としては
        Meadow 1.10/Meadow 1.00 --> c:\usr\Meadow
        Mule for Windows        --> c:\usr\mule2
      となっています．

      標準では c:\usr\meadow です．

  - 変数EMACS
      emacsの実行ファイルです．Windows9[58]と，WindowsNTでは
      名前が違うので，注意してください．

      Meadow, Windows9[58]
        EMACS=%PREFIX%\(Meadowのversion)\bin\Meadow95.exe
      Meadow, WindowsNT
        EMACS=%PREFIX%\(Meadowのversion)\bin\MeadowNT.exe

        ex. Meadow 1.10, WindowsNTの場合
          EMACS=%PREFIX%\1.10\bin\MeadowNT.exe

      Mule for Windows, Windows9[58]
        EMACS=%PREFIX%\bin\mulewin.exe
      Mule for Windows, WindowsNT
        EMACS=%PREFIX%\bin\mulent.exe

      標準では %PREFIX%\1.10\bin\meadow95.exe です．

  - その他
      EXEC_PREFIX, LISPDIR, INFODIR, VERSION_SPECIFIC_LISPDIR
      は，PREFIXがきちんと設定されていれば，特に変更する必要
      はないと思います．

      ただし，Mule for Windowsの場合，LISPDIRを，
        LISPDIR=%PREFIX%/site-lisp/cmail
      などとしないと，%PREFIX%\site-lispの直下に，
      cmail-*.el(elc)などのfileが配置されることになります．
      Meadowの場合は，自動的にcmailというディレクトリを作成
      し，その下に各fileを配置してくれます．

ここまできちんと設定できていれば，あとはMS-DOSプロンプトから，

  c:\tmp\cmail> makeit.bat

とすれば，実際に*.elを*.elcにバイトコンパイルして，

  Meadowの場合は，%LISPDIR%\cmailというディレクトリを作成して，
  その下に

  Mule for Windowsの場合は，$LISPDIR%に

できあがった*.elcをコピーしてくれます．
またcmail.info, cmail.en.infoを，%INFODIR%以下にコピーしてく
れます．

# makeit.batをエクスプローラなどからダブル・クリックしてもよ
# いでしょう．

自分がどういう設定をしたかいまいち不安だという人は，

  c:\tmp\cmail> makeit.bat what-where

とすれば，実際には何もしないで，各fileがどこにインストールさ
れるか教えてくれます．

また，設定済の makeit.bat を ~/.elispmk.bat としてコピーして
おくと次回のアップグレード時に makeit.bat を再設定しなくても
優先してこの設定済バッチファイルを使用するようになっています。


** load-pathとinfo

さて，無事にcmailのインストールが終了したら，Emacsにcmailが
どこにインストールされたか教えてあげましょう．
# autoexec.batでPATHをとおすようなものです．

この作業は，各Emacsによって異なります．

  - Meadow 1.10の場合
      特に何もする必要はありません．

      Meadow 1.10では，%MEADOW%\site-lispの下にディレクトリ
      を作成した場合，Meadowを再起動すればそのディレクトリが
      自動的にload-pathに追加されるようになっています．
      詳しくは，%MEADOW%\site-lisp\subdirs.elを参照してくだ
      さい．

  - Meadow 1.00の場合
      $MEADOW\site-lisp\subdirs.elの該当部分を，以下のように
      します．
      # 実際は一行でもかまいません．

     (normal-top-level-add-to-load-path
      '("mel"
        "semi"
        "Semi-gnus"
        "cmail"))

  - Mule for Windowsの場合
      Mule for Windowsでは，上記のMeadowのようなことができな
      いので，~/.emacsでload-pathを通すようになります．
      せっかくなので，APELが%MULE%\site-lisp\apel以下にイン
      ストールされていると仮定して，ここにもload-pathを通す
      ようにしましょう．
      # 実際は一行でもかまいません．

      (setq load-path
            (cons "c:/usr/mule2/site-lisp/apel"
                  load-path))
      (require 'path-util)
      (add-path "~/elisp")
      (add-path "c:/usr/mule2/site-lisp")
      (add-path "c:/usr/mule2/site-lisp/cmail")

      このへんのemacs lispの書き方は，各自研究してみてくださ
      い．簡単に説明すると，

        1. load-pathに，%MULE%\site-lisp\apelを追加する．
        2. APELに附属しているpath-util.elを(ロードされていな
           ければ)ロードする．
        3. ~/elisp, %MULE%\site-lisp, %MULE%\site-lisp\cmail
           にload-pathを通す．

      ということを行なっています．
      # add-pathという命令は，APELのpath-util.elで定義されて
      # います．

さて，これでcmailは無事インストールできました:-)

せっかくですから，cmail.info, cmail.en.infoが見れるように設
定しましょう．Makefileやmakeit.batで設定した%INFODIR%/dirの
最後に，

  * Cmail: (cmail).	A mail user agent on GNU Emacs. (Japanese)
  * Cmail: (cmail.en).	A mail user agent on GNU Emacs. (English)

というのを入れておけばいいでしょう．


* メールを送信するための設定(SMTPについて)

メールを送受信するプログラムは，SMTPと呼ばれる言葉(プロトコ
ル)を使って，お互いに通信しています．例えば，

  メールサーバ <--[SMTP]--> メールサーバ
  cmail --------->[SMTP]--> メールサーバ

といった具合です．
# 矢印の向きは(メールを含んだ)データの流れです．

いわいるUNIXには，このSMTPを喋ってくれるsendmailやqmailとい
うプログラムが附属しています．したがって，これから説明するよ
うなめんどくさいことをしなくても，Emacsからこのsendmailを呼
び出してやることで，メールの送信を行なうことができます．また，
cmailは，標準でこのような動作をするようになっています．

# メールの受信には，mail spoolを直接Emacsで読む方法や，
# POP, IMAP4といった方法があります．POPを利用する方法は，
# このREADME.Windowsと合せて，README.POPを参照してください．
# IMAP4については，残念ながら現在のcmailでは対応していません．

しかし，Windows95/98/NT/2000にはsendmailは附属していません．
このため，Windows上で動作するMUA(mail user agent)は，自分で
SMTPを喋っています．

# MUAと対になるものとして，MTA(mail transport agent)がありま
# す．これはsendmailやqmailといったプログラムのことを差しま
# す．わたし自身もきちんと理解しきっていないので，どうしても
# 気になるという方は，
#   <http://www.imc.org/mail-i18n.html>
# このへんを読んでみてください(ただし英語です)．

ということは，EmacsにSMTPを喋ってもらえば，Emacs上でcmailが
使えるということです．そして，このような用途の為に，すでに
smtpmail.elというライブラリがEmacsには附属しています．
もちろん，MeadowやMule for Win32にもsmtpmail.elは附属してい
ます．

また，sendmailやqmailが存在するする環境でも，smtpmail.elを使
えばそれらを利用しなくてもメールを送信することができます．


** smtpmail.elの確認

すでに，EmacsでSMTPを利用するには，smtpmail.elを利用すれば良
いことはわかったので，あなたのEmacs(の配布物)にsmtpmail.elが
附属しているか確認してみましょう．
わたしが手元で確認したかぎりでは，

  - Meadow 1.10の場合
      - 標準で附属しているsmtpmail.el
          $MEADOW\1.10\lisp\mail\smtpmail.el
      - FLIMに附属しているsmtpmail.el
          $MEADOW\site-lisp\flim\smtpmail.el
  - Meadow 1.00の場合
      - 標準で附属しているsmtpmail.el
          $MEADOW\1.00\lisp\mail\smtpmail.el
      - Semi-gnusに附属しているsmtpmail.el
          $MEADOW\site-lisp\Semi-gnus\smtpmail.el
  - Mule for Windowsの場合
      - 標準で附属しているsmtpmail.el
          $MULE\lisp\smtpmail.el

というように，Meadowの場合は複数の種類のsmtpmail.elが存在し
ていると思います．

ここでは，各smtpmail.elは機能的にはほとんど同じなので，
よくメンテナンスされている

  - Meadow 1.10では $MEADOW\site-lisp\flim\smtpmail.el
  - Meadow 1.00では $MEADOW\site-lisp\Semi-gnus\smtpmail.el
  - Mule for Windowsでは $MULE\lisp\smtpmail.el

を利用することにします．
他のsmtpmail.elを利用する場合も，設定する変数名が違うだけで，
これから設定する内容が適用できます．
# 詳しい説明は，各smtpmail.elの先頭部分に英語で書かれています．
# 簡単な英語なので，一度目を通しておくといいかもしれません．

なお，自分の利用するEmacs用に，複数のsmtpmail.elが存在する場
合は，どのsmtpmail.elが利用されているかわからなくなる可能性
があるので，無用な混乱を避ける意味で，利用するつもりのない
smtpmail.elとsmtpmail.elcの名前を変更しておくと良いでしょう．
ここでは，Meadowの場合はFLIMに附属するsmtpmail.elを利用する
ことにしているので，

  - Meadow 1.10の場合
      $MEADOW\1.10\lisp\mail\smtpmail.el
      $MEADOW\1.10\lisp\mail\smtpmail.elc
  - Meadow 1.00の場合
      $MEADOW\1.00\lisp\mail\smtpmail.el
      $MEADOW\1.00\lisp\mail\smtpmail.elc
  - Mule for Windowsの場合
      特に名前を変更するfileありません

の名前を変更しておきます．
# くれぐれも，smtpmail.el, smtpmail.elcの両方の名前を変更す
# るようにしてください．


*** Meadow 1.10, 1.00用の設定

では，設定項目を見てみましょう．各項目に関しての詳しい説明は，
それぞれのsmtpmail.elを参照してください．

---ここから設定項目---
(setq send-mail-function 'smtpmail-send-it)
(setq smtp-default-server "YOUR SMTP HOST")
(setq smtp-service 25) ; "smtp"でもよい
(setq smtp-local-domain "YOUR DOMAIN NAME")
(setq smtp-debug-info t) ; smtpmail関連でエラーが出なければ
                         ; nil でもいいでしょう
(require 'smtpmail)
;(setq user-full-name "YOUR NAME HERE")
---ここまで---


*** Mule for Windows用の設定

こちらの設定項目は，以下のようなものです．Meadow用の設定とほ
とんど同じですね．

---ここから設定項目---
(setq send-mail-function 'smtpmail-send-it)
(setq smtpmail-default-smtp-server "YOUR SMTP HOST")
(setq smtpmail-smtp-service 25)
(setq smtpmail-local-domain "YOUR DOMAIN NAME")
(setq smtpmail-debug-info t)
(require 'smtpmail)
(setq smtpmail-code-conv-from nil)
---ここまで---


** その他のelisp package用の設定

さて，ここまででsmtpmail.elの設定は終りました．
今度は，cmail側で必須になる変数を設定します．

cmailは，各Emacsに附属する各種のelispの関数を，内部から呼び
出して利用しています．この各種のelisp用の設定をすることによっ
て，初めてcmailでメールを送信することができるようになります．
# 具体的には，すでに説明したsmtpmail.elなどの，
#   $MEADOW\(Meadowのversion)\lisp\mail
# の下にあるelisp packageなどです．

この設定も，各MeadowとMule for Windowsによって若干違うので，
設定中のコメントをよく読んでください．

---ここから設定項目---
;; mail-from-styleは，From: の内容を以下のように制御します．
;;  `nil'    --> foo@bar.hoge.jp
;;  `parens' --> foo@bar.hoge.jp (YOUR NAME)
;;  `angles' --> YOUR NAME <foo@bar.hoge.jp>
(setq user-mail-address "foo@bar.hoge.jp")
(setq user-full-name "YOUR NAME")
(setq mail-from-style 'angles)
(setq mail-use-rfc822 t)

;; Mule for Windowsの場合は，以下の設定が必要かもしれません．
;(define-service-coding-system 25 nil *junet*unix) ;smtp port
---ここまで---

Mule for Windows 1.22では，%MULE%\lisp\mule-init.el内で，
コメントアウトしてある define-service-coding-system が定義さ
れているので，設定する必要はないと思います．
1.21では確認していませんので，もしMule for Windows 1.21で，
上記の設定でおかしな場合は，コメントをはずしてみてください．


* メールを受信するための設定(POP)

現在，WindowsではPOP/IMAPを利用してメールを収得(IMAPの場合は
「読みに行く」ですが)するのが一般的だと思いますが，前述のよ
うに現在のcmailはIMAPを利用できません．したがって，POPを利用
するのが手軽です．

ここでは，Meadow/Mule for WindowsでPOPを利用してメールを受信
する為の設定を紹介します．
# 内容的にだぶっている部分が多い(というか，ほとんどですね)の
# ですが，README.POPも合せて読んでおいてください．

Meadow/Mule for Windows共に，ほとんど同じ設定なので，まとめ
て紹介します．

---POPを利用する為の設定---
;; movemail.exeの指定
(setq cmail-movemail-command "c:/usr/Meadow/1.10/bin/movemail.exe")

;; movemail.exeのoption
;; c : check only		C : retrieve
;; k : keep mail		K : kill mail
;; u : unread mail only		a : all mail
;; f : flush			F : don't flash
;; p : display progress dialog	P : don't display progress dialog
;; A : use APOP

;; cmail-mail-spoolsの各項目は，以下の意味を持ちます
;; 各引数は，``"''でくくってください
;;   第1引数 : ``po:''の後に，POP Serverに登録してある
;;             USERNAMEを指定します
;;   第2引数 : POP Serverの名前を指定します
;;   第3引数 : movemail.exeへ渡すoptionを指定します(optionの
;;             先頭に``-''(マイナス)を付けてください
;;   第4引数 : POP Serverのpasswordを指定しますが，通常は
;;             ***指定しないでください***
;;
;; 第3引数のoptionは，特にPOP Serverにメールを残す必要がなく，
;; APOPを利用するなら``-Apf''，POP3を利用する場合は``-pf''な
;; どとするのがよいと思います．
(setq cmail-mail-spools '(("po:USERNAME" "POPSERVERNAME" "OPTIONS" nil)
                          ("po:USERNAME" "POPSERVERNAME" "OPTIONS" nil)
                          ("po:USERNAME" "POPSERVERNAME" "OPTIONS" nil)
                          ))
---ここまで---

これだけです．
ただし，外部プログラムのmovemail.exeをcmail内部から起動する
ので，このプログラムを用意しなければいけません．
Meadow 1.10には，このmovemail.exeの最新版が附属
($MEADOW\1.10\bin\movemail.exe)しているので問題ないのですが，
Meadow 1.00とMule for Windowsを利用している場合は，この
movemail.exeの最新版を

  <http://www.imasy.or.jp/~gotoh/movemail.html>

ここから持ってきて，cmail-movemail-command で指定した位置に
置いてください．また，無用の混乱を避けるため，元々ある

  $MEADOW\1.00\bin\movemail.exe
  $MULE\bin\movemail.exe

の名前を変更しておいたほうが良いと思います．

# Meadow 1.00/Mule for Windowsに附属しているmovemail.exeでは，
# APOPが利用できない，メールの修得状況を表示できない，といっ
# た制限があるので，できるだけ最新版を利用することをお勧めし
# ます:-)


* メールの送信/受信のテスト

ここまでの設定で，最低限ですが，

  - SMTPでメールを送信
  - POPでメールの受信

をcmailを利用して行なうことができるはずなので，テストしてみ
ましょう．

テストは，以下の手順で行なえばよいでしょう．ただし，いわいる
「オンライン」の状態で行なってください．
# Meadow 1.10での説明ですが，Mule for Windowsでも同じ手順な
# ので，適当に読みかえてください．

  1. Meadowを起動する
  2. M-x cmail[CR]
  3. POP Serverのパスワードを聞かれるので入力する

ここまでで，movemailのオプションに``p''が指定されていて，な
おかつあなた宛のメールがPOP Serverに存在していれば，メールの
収得状況を示すダイアログが(一瞬かもしれませんが)表示されるは
ずです．

  4. ``m''を押して，ミニバッファでメールの送り先(To)と，タイ
     トル(Subject)を順番に入力し，メールの作成buffを作る．
     メールの送信/受信のテストなので，送り先には自分を指定し
     ましょう．
  5. ``--text follows this line--''という行より下の部分に，
     適当な文章(でもなんでもいいですが，日本語は(まだ)使わな
     いほうがいいかもしれません)を書く．
  6. C-cC-cとし，メイルを送信する．

うまく送信できれば，ミニバッファにEmacsとSMTP Serverのデータ
のやり取りが表示され，送信が完了すると``Sending...done''と表
示されます．
       
  7. ``g''を押して，POP Serverから今自分で自分に送ったメール
     を取り込む．
     もし，ミニバッファに，``no new mail.''や，``新しく届い
     たメールはありません.''と表示されるようであれば，しばら
     く待ってからもう一度``g''を押してみてください．
  8. C-p, C-nで今自分で自分に送ったメールにカーソルを合わせ，
     スペースキーを押してメールを表示する．

きちんとメールの内容が表示されましたか?
表示されていれば，cmailを使ってのメールの送信/受信の基本的な
設定は完了です．

残念ながら，1〜7の手順のどこかでつまずいてしまった方は，もう
一度各種設定を見直してみてください．


* cmailでMIMEを利用する

さて，ここまでの設定で，Meadow, Mule for Windows共にSMTPを利
用してのメールの送信，POPを利用してのメールの受信する環境は
整いました．これだけでも十分cmailを利用できるのですが，MIME
機能を利用できるようにしたほうが，さらに便利にcmailを利用で
きるので，この設定をしましょう．
# ここではMIMEについての詳しい説明はしません．

この文章の最初のほうで，ちょっとだけ触れましたが，Meadow,
Mule for Win32でcmailを利用し，さらにMIME機能を利用しよとす
ると，

  - Meadowの場合はAPEL/FLIM/SEMI
  - Mule for Windowsの場合はTM

を利用しなければいけません．
# APEL/FLIM/SEMI, TMについての説明は，それぞれに附属のドキュ
# メントに書いてあるので，そちらを参照してください．

さて，Meadow 1.10には

  $MEADOW\site-lisp\apel
  $MEADOW\1.10\site-lisp\emu
  $MEADOW\site-lisp\flim
  $MEADOW\site-lisp\semi

が，Meadow 1.00には

  $MEADOW\site-lisp\apel
  $MEADOW\site-lisp\mel
  $MEADOW\site-lisp\semi

と，標準でapel/flim(flimの前身の)mel/semiが附属しています．
これらを用いることによって，cmailでMIME機能を利用することが
可能になります．利用方法は簡単で，あなたの~/.emacsに，

  (load "mime-setup")

を加えMeadowを再起動してください．これでcmailでMIME機能が利
用できるようになります．この状態で，日本語を含んだテストメー
ルを自分に送ると，そのヘッダ部分に，

MIME-Version: 1.0 (generated by EMIKO 1.13.9 - "Euglena tripteris")
Content-Type: text/plain; charset=ISO-2022-JP

のような表示があるはずです．
# 上記は，わたしが今利用している環境のものなので，実際のあな
# たのメールのものとは異なります．

この表示があれば，MIME機能は正常に動作しています．

Mule for Win32の場合，標準でTMが附属していませんから，自分で
TMをインストールするしかありません．
詳しくは，TMに附属のREADME.MIMEを参考にチャレンジしてみてく
ださい．
この場合も，~/.emacsに (load "mime-setup") を加えれば良いは
ずです．


* ファイルの添付方法

実行形式のファイルや，DLLファイル，Microsoft Wordなどのアプ
リケーションのファイルなどは，メールの本文に利用できない文字
が多く使われています．このため，これらをメールの本文にC-x i
で挿入して送信すると，MUAやMTAが意図しない動作をしてしまいま
す．

このため，これらのファイルを安全，かつ確実にメールで送るため
に，

  - uuencodeしたものなどを，C-x i で挿入する方法
  - MIME機能を利用して添付する方法

このような方法を使います．

前者は非常に単純で，

  ファイル全体をある方法で変換して，メールに含んではいけない
  文字(文字列)をファイル中から取り除く

というものです．この方法は，インターネットの初期の頃から存在
し，Windows環境ではあまり見かけませんが，今でもUNIX上ではよ
く利用されています．このための変換プログラムが uuencode で，
uuencode(というプログラム)で変換することを，「uuencodeする」
と呼ぶことが多いようです．また，uuencodeされたものを復元する
プログラムが uudecode です．こちらも同様に，このプログラムを
利用して復元することを「uudecodeする」と言うことが多いようで
す．

後者は，MIMEの機能を使って，メールの本文中に，

  ここからここまでは特殊な文字列が入っているよ

という注意書きと共にファイルを付けて送る方法です．
現在は，「ファイルを添付する」や「添付ファイル」と言う表現を
した場合は，こちらの方法を指すことが多いようです．


** uuencodeによるファイルの添付方法

まず，uuencodeによる利点て欠点をざっと書きます．

  - 利点
    1. 方法が単純
    2. uuencode/uudecodeするプログラムがあれば，MUAに依存す
       ることはない

  - 欠点
    1. uuencode/uudecodeするプログラムが必要
    2. あらかじめメールに付けて送りたいファイルを，uuencode
       しておく必要がある
    3. uuencodeされたファイルは，元のファイルよりサイズが増
       える(このため，gzipやlhaなどでファイルを圧縮してから
       uuencodeすることが多いです)
       
最近はあまり利用されなくなってきているとはいえ，非常に優れた
方式(だと思う)ので，説明しておきます．
# 各コマンドを実行した場合に表示される余分なメッセージは省略
# してあります．

とりあえず，uuencode.exe, uudecode.exeの利用方法の例として，
uuencode.exe自体をuuencodeし，それを添付する方法を説明します．
使い方は，

  uuencode [uuencodeしたいfile名] [uudecodeしたときのfile名] > [適当なfile名]
  uudecode [上記のuuencodeで作成した適当なfile名]

です．下記のようにshell(MS-DOSプロンプトなど)上で，

  C:\tmp> uuencode c:\usr\bin\uuencode.exe uuencode.exe > uuencode.exe.uu
       
とすると，uuencode.exeをuuencodeしたものがuuencode.exe.uuと
いうファイルに(リダイレクトされて)保存されます．

  C:\tmp> dir
  00/03/09  10:25a               380,625 uuencode.exe
  00/03/09  10:26a               524,447 uuencode.exe.uu

ファイルサイズが増えているのがわかると思います．したがって，
通常は，

  C:\tmp> gzip -c uuencode.exe > uuencode.exe.gz
  C:\tmp> uuencode c:\usr\local\bin\uuencode.exe uuencode.exe.gz > uuencode.exe.gz.uu
  C:\tmp> dir
  00/03/09  10:25a               380,625 uuencode.exe
  00/03/09  11:14a               101,190 uuencode.exe.gz
  00/03/09  11:15a                 3,748 uuencode.exe.gz.uu
  00/03/09  10:26a               524,447 uuencode.exe.uu

このようにして，gzipやlhaと一緒に利用します．
このようにして出来上がったuuencode.exe.gz.uuを，メールを書い
ている途中(できれば，わかりやすくするために，メールの最後が
いいと思います)に，C-x i で，普通にバッファにファイルの内容
を挿入する方法で，uuencode.exe.gz.uuを指定してやればファイル
の内容が挿入されます．後は，「gzip + uuencodeしてあるよ」と
でも一言書いておけばいいでしょう．
# uuencode.exe.gz.uuなど，ここで出てきた*.uuというファイルは，
# ただのテキストファイルになっています．
#   begin (このファイルの行数) (uudecodeされた時のファイル名)
#   [ ... 意味不明の文字列 ...]
#   `
#   end
# というのがuuencodeのフォーマットです．

## この最後の``end''のおかげて，某MUAはメイルの最後に``end''
## があると，(実際にはuuencodeされていないにもかかわらず)
## uudecodeしようとしてわけがわからなくなる，というなさけな
## いbugを全世界に広めたのでした ;p


** MIME機能を利用して添付する方法

それでは，最近主流のMIME機能によるファイルの送り方を説明しま
す．

SEMI/TMを導入してあれば，簡単にこの機能を利用することができ
ます．基本的には，以下のような順番での利用が最も多いと思いま
す．ここでは，相手に送りたいファイルをuuencode.exeとします．

  1. 普通にメールを書き始める

  2. メールの本文中の適当な場所で，

       C-c C-x TAB

     または，

       window上部の MIME-Edit というメニューから，
       Insert File (C-c C-x TAB)と書かれている項目を選択

     します．

  3. ミニバッファに

       Insert file as MIME message:

     と表示され，相手に送りたい目的のファイル名の入力を催促
     されるので，適当に入力します．
     (この状態では，Emacsの補完機能が利用できます)

  4. 次に，ミニバッファに

       What transfer encodeng:

     とどのような形式でファイルをメイルに付けるか聞かれます．
     とりあえず``TAB''か``SPACE''を押すと，メイル本文のバッ
     ファが分割されて，選択できる項目が表示されます．

  5. 各項目にはそれなりの意味があるのですが，普通は
     ``base64''を選択すればいいでしょう．
     
  6. (ちょっと処理に時間がかかりますが)無事に操作が終了すれ
     ば，

       --[[application/octet-stream
       Content-Disposition: attachment; filename="uuencode.exe"][base64]]

     という行が挿入されていることがわかると思います．
     この時，表示されているのはこの行だけですが，実際には表
     示されていないだけで，uuencode.exeの内容がメールバッファ
     内に存在します．C-n, C-pでカーソルを移動させてみればわ
     かります．

後は，通常の手順でメールを送信すればOKです．

さて，ある程度のサイズのファイルを添付したメールを送ると，あ
る一定のサイズに分割されてしまいます．これを抑制したい場合は，

(setq mime-edit-split-message nil)   ; for semi
(setq mime-editor/split-message nil) ; for tm

SEMI/TMの利用している環境によって，上記の設定を~/.emacsに入
れておけば，分割されてしまうことはありません．


(注意) 上記の例ではuuencode.exeを添付しましたが，相手の環境
       が許すならば，可能な限り目的のファイルをgzipやlhaで圧
       縮してから添付することをお勧めします．

* 添付されたファイルの取り出し方

** uuencodeされたファイルの取り出し方

すでに説明したように，uuencodeはuudecodeと対になっています．
したがって，uuencodeされたファイルをuudecodeに通せば，ファイ
ルを取り出すことができます．

メールに添付されたuuencodeされた部分を取り出すためには，面倒
ですが一旦そのメールを別のファイルに保存する方法が一般的です．
この場合，cmailでは，``o''や``C-o''でSummary buffer上でカー
ソルがあるメールを保存することができます．
# ``o''の場合は，MIME Q(or B?)encodeされた文字はdecodeされた
# 状態で保存されます．したがって，SEMIを利用している場合の
# User-Agentフィールドに含まれる文字列の関係で，保存する文字
# コードの入力を求められることがあります．``C-o''の場合は
# encodeされたままの状態で保存されます．

保存したファイルをfooとすれば，

  C:\tmp> uudecode foo

でfooに含まれる``begin''から``end''までの部分を自動的に認識
し，その部分の元のファイルを取り出すことができます．

また，cmail独自の便利な機能を利用すれば，

  1. uuencodeされたファイルが含まれるメールを表示する．
  2. ``|''を押す．
  3. ミニバッファに，``uudecode''と入力する．

という手順で，cmail-pathで指定されたディレクトリ(標準状態で
は，~/Mail)にuudecodeされたファイルが保存されているはずです．
このようにすることにより，一旦ファイルに保存して，という手順
を踏まなくてもすみます:-)


** MIME機能を利用して添付されたファイルの取り出し方

MIME機能を利用して添付されたファイルを取り出すには，2つの方
法があります．ひとつは，base64などの形式を理解(decode)できる
外部プログラムを利用し，一旦外部ファイルに保存してからこのプ
ログラムにかける方法です．わたしの知っている範囲では，
  - UUDeview <http://www.uni-frankfurt.de/~fp/uudeview/>
    をcygwinなどを利用してcompileしたもの
  - GNU sharutils-4.2 に含まれるuudecodeをcygwinなどで
    compileしたもの
がbase64でencodeされたものをdecodeできるようです．
しかし，この方法は最終手段で，実際にSEMI/TMを利用している場
合には，

  1. 目的のメールを表示する．
  2. ``!''や``C-x o''などで，メールを表示しているバッファへ
     移動する．
  3. [2 uuencode.exe.gz <application/octet-stream (base64)>]
     などと表示されている行にカーソルを持っていく．(``n''や
     ``TAB''で，各MIME partを移動できます)
  4. ``e''を押す．
  5. ミニバッファで，保存先のディレクトリを指定する．
  6. ``q''を押してSummary bufferへ戻る．
  
という手順でMIMEのpartを取り出すことができます．


* 最後に

以上で，smtpmail.elを用いてのメールの送信，POPでのメールの受
信，添付ファイルの送り方，取り出し方ができるようになったと思
います．あとは，自分で試しながら実際に試していってください．

また，フォルダモードなどの便利な機能の設定はまだしていないの
で，M-x infoでcmailのinfoを参照しながら，少しづつ設定していっ
て，あなたなりのcmailに育ててあげてください．


* おまけ

Windows環境には，標準でmakeなどに代表される開発環境が附属し
ていないのは，すでに説明したとうりです．

そこで，cygwin環境がない人向けに，MeadowやMule for Windowsで
APEL/FLIM/SEMIやTMをバイトコンパイル/インストールする方法を
以下に書きます．

非常に簡単なメモ程度のものですが，興味のある方は試してみてく
ださい．

# APEL/FLIM/SEMIに関しては，APEL -> FLIM -> SEMIの順番でイン
# ストールしなければいけません．

# TMの場合は，最新のAPELを利用する方法を書いてありますが，こ
# の場合も(最新の)APEL -> TMの順番でインストールする必要があ
# ります．


** APEL/FLIM/SEMIのインストール方法

全てをコマンドプロンプト(MS-DOSプロンプト)からタイプしてもい
いですが，以下のようなbatch fileを作ると楽です．
基本的な部分は，makeit.batと同じです．

--- 1. 共通部分 ---
set PREFIX=c:\usr\Meadow
set EMACS=%PREFIX%\1.12b1\bin\MeadowNT.exe
rem set EMACS=%PREFIX%\1.00\bin\meadow95.exe
set LISPDIR=%PREFIX%\site-lisp
set VERSION_SPECIFIC_LISPDIR=%LISPDIR%
---

--- 2. APEL専用 ---
%EMACS% -batch -q -no-site-file -l APEL-MK -f compile-apel
%EMACS% -batch -q -no-site-file -l APEL-MK -f install-apel %PREFIX% %LISPDIR% %VERSION_SPECIFIC_LISPDIR%
---

--- 3. FLIM専用 ---
%EMACS% -batch -q -no-site-file -l FLIM-MK -f compile-flim
%EMACS% -batch -q -no-site-file -l FLIM-MK -f install-flim %PREFIX% %LISPDIR% %VERSION_SPECIFIC_LISPDIR%
---

--- 4. SEMI専用 ---
%EMACS% -batch -q -no-site-file -l SEMI-MK -f compile-semi %PREFIX% NULL %LISPDIR% %VERSION_SPECIFIC_LISPDIR%
%EMACS% -batch -q -no-site-file -l SEMI-MK -f install-semi %PREFIX% NULL %LISPDIR% %VERSION_SPECIFIC_LISPDIR%
---

これらを，1+2(APEL用), 1+3(FLIM用), 1+4(SEMI用)として，それ
ぞれのディレクトリの下にmakeit.batとして作っておき，MS-DOS 
プロンプトから makeit とタイプすれば，

  $MEADOW\site-lisp\apel
  $MEADOW\site-lisp\emu
  $MEADOW\site-lisp\flim
  $MEADOW\site-lisp\semi

にインストールされるはずです．

ここで注意してほしいのは，各versionのMeadowでは，すでに

  $MEADOW\site-lisp\apel
                   \flim
                   \semi
         \(各version)\site-lisp\emu

などが存在する点です．
これらに注意しながら，必要ならオリジナルのディレクトリ名を変
更しておくなどしてから，インストールしてください．

さて，インストール後は，Meadowがこれらのディレクトリを正しく
認識してくれるように，load-pathの設定を，「load-pathとinfo」
の項を参考にして設定してください．

load-pathの設定ができれば，APEL/FLIM/SEMIのインストールは完
了です．


** 最新版APEL + TM-8.8のインストール方法

まず，最新版のAPEL(が必要でなければ必要ありません)と，TM-8.8
を持ってきます．そして，

  C:\tmp> tar zxvf tm-8.8.tar.gz
  C:\tmp\tm-8.8> cd tm-8.8
  C:\tmp\tm-8.8> tar zxvf ..\apel-10.2.tar.gz
  C:\tmp\tm-8.8> rename apel apel-9.23
  C:\tmp\tm-8.8> rename apel-10.2 apel

とします．最新のAPEL(ここではAPEL-10.2)が必要ない場合は，た
だTMを展開するだけでOKです．

その後，

--- makeit.bat for TM --
set PREFIX=c:\usr\mule2
set EXEC_PREFIX=
set EMACS=%PREFIX%\bin\mulent.exe

%EMACS% -batch -q -no-site-file -l TM-MK -f compile-tm %PREFIX% %EXEC_PREFIX%
%EMACS% -batch -q -no-site-file -l TM-MK -f install-tm %PREFIX% %EXEC_PREFIX%
---

という内容のbatch fileをtm-8.8\tm\makeit.batとして作成し，
tm-8.8\TM-CFG内の，

   ;; Please specify binary path. (for external method scripts)
 ->;;(setq METHOD_DIR (expand-file-name "share/tm" PREFIX))
 ->(setq METHOD_DIR (expand-file-name "date/tm" PREFIX))
 
   ;; It is generated by automatically. Please set variable `PREFIX'.
   ;; If you don't like default directory tree, please set it.
   (defvar LISPDIR (install-detect-elisp-directory PREFIX))
 ->(setq install-default-elisp-directory "c:/usr/mule2/site-lisp")

矢印の行を上記のように適当に変更して，

  C:\tmp\tm-8.8> makeit.bat

とすれば，

  c:\usr\mule2\site-lisp        ----- APEL-10.2
  c:\usr\mule2\site-lisp\flim   ----- TM-8.8のflim
  c:\usr\mule2\site-lisp\mu     ----- TM-8.8のmu
  c:\usr\mule2\site-lisp\tm     ----- TM-8.8のtm
  c:\usr\mule2\site-lisp\bitmap ----- TM-8.8のbitmap
  c:\usr\mule2\data\tm          ----- TM-8.8の外部スクリプト

というようにインストールされるはずです．
この後，~/.emacsで，

  (setq Info-directory-list
        (append
         (list "c:/usr/mule2/info"
               "c:/usr/local/info")
         Info-default-directory-list))
  (setq load-path
        (cons "c:/usr/mule2/site-lisp" load-path))
  (load "mime-setup")
  (add-path "~/elisp")

とでも設定しておけば，さきほどインストールしたAPEL-10.2と
TM-8.8が利用できるはずです．この後，cmailをインストールすれ
ばバッチリ(死語)です:-)



;;; End of README.Windows
Local variables:
mode: outline
paragraph-separate: "[  ]*$"
fill-column: 70
end:
