cygwin 上の Emacs (22.1) --batch の挙動がよくわからない

私はずっと UNIX 環境がメインで,Emacs + Wanderlust という組み合わせでメールを読んでいました.また,毎朝 cron で emacs をバッチ起動し(--batch オプションで),Wanderlust 経由で,その日のスケジュールを携帯に送っていました.

去年あたりからメインのマシンを Windows XP に切り替えたのですが,cygwin を使って cron を走らせ,'emacs --batch' + Wanderlust という組み合わせでメールを送るということは続けていました.なお,この emacs は,具体的には Meadow-2.10 (Emacs 21.4.1 ベース) です.特に問題はありませんでした.

ところが,最近 MeadowNTEmacs (22.1 ベース,http://ftp.gnu.org/pub/gnu/emacs/windows/emacs-22.1-bin-i386.zip) に切り替えたのですが,そのバッチ起動がどうもうまくいかないのです.

実際に行っている操作は以下のとおりです.以下の Emacs Lisp コードが記述されたファイルを,仮に test-send.el とします.

(require 'wl-draft)

(defun mshkh-wl-send-test ()
  (let ((to "mshkh@example.com") ; ←メールアドレスは適宜変更してください
	(subject "test")
	(body "test mail body"))
    (wl-draft (list (cons 'To to) (cons 'Subject subject)) nil nil body)
    (wl-draft-send-and-exit)))

さらに,cygwin の私のホームディレクトリを c:/cygwin/home/mshkh/ とし,そのホームに上記 test-send.el が置かれているとします.また,.emacs には Wanderlust の設定がなされているとします(特に,wl-smtp-posting-server が適切に設定されており,メールサーバに SMTP 接続してメールを送ることができるものとします).

このような状況で,cron で実行しているコマンドは,以下のようなものです:

% emacs --batch -l c:/cygwin/home/mshkh/.emacs -l c:/cygwin/home/mshkh/test-send.el -f mshkh-wl-send-test

このコマンドがうまく実行されないのです.どうも,メールサーバまでネットワーク接続されるのを emacs が延々と待っているような感じです.ちなみに,--batch を外して上記のコマンドを cygwinコマンドラインから起動すると,うまく実行されます.cygwin 上での emacs 22.1 は,--batch オプションのあるなしで,ネットワーク接続の挙動が変わるのでしょうか?

なお,上記の emacs --batch コマンドですが,以下の環境では (--batch オプション付きでも) 全く問題なく実行されました.emacs はもちろんバージョン 22.1 です.

また,Windows XP + cygwin + Meadow-2.10 (Emacs 21.4.1 ベース) という組み合わせでもうまく実行されます.

いろいろと Windows 上で試したり調べてみたりしたのですが,どうも原因はよく分かりません.以下のようなことはやってみました:

  • 以前,DNS 接続のせいで emacs の起動が遅くなるという話を聞いたことがあったので,ひょっとして DNS lookup が失敗しているのかと思い,Windoows の HOSTS,LMHOSTS ファイル (%SystemRoot%\system32\drivers\etc\ にあるもの) にメールサーバの FQDNIPアドレスのペアを設定し,nbtstat -R したが,やはりうまくいかない
  • イベントビューアにも記録は残っていない(えんえんとネットワーク接続を待ってるだけなので?)


というわけで,お手上げの状況です.今のところ,workaround として,Meadow 2.10 を cron でバッチ起動してしのいでいます.まあそれでいいといえばいいんですが.

このブログをご覧になる方がもしいて,原因をご存じであればご教示いただければ幸いです.