Success! Mew 6.6 + stunnel 5.14 on Windows   2015年4月6日

年次大会で京都に出張に行った日から学校のメールサーバーと接続できなくなった。
Cygwin 上の Emacs で代用してきたけど、時間ができたので直すことにした。

Mew を立ち上げて、zd でデバックモードにして、原因を確認。
SSL がサーバーと握手できていない。使っていた stunnel が V3 で、
とうとう大学も V3 ではつなげなくしたようだ。

stunnel のバージョンを上げる。

https://www.stunnel.org/downloads.html

現在バージョンは 5.14。Windows 版の Mew は V4 までしかサポートしてなかったはず・・・
検索すると、6.6 も本家のページとは別に公開されていた。

https://github.com/shkit/mew-win32/blob/master/release/MEW66W0.ZIP

これはバージョン 5 も対応している。

これで大丈夫と思ったけど、全然ダメ。繋がらない。
Cygwin との違いは stunnel だけなので、stunnel に渡す パラメータが怪しい。
stunnel のマニュアルを読むといくつか Windows 版では使えない
パラメータがあって、それを Mew では使っているようだ。

mew-ssl.el の mew-ssl-options と mew-ssl-setup を以下のように変更。

(defun mew-ssl-options (case server remoteport localport tls)

     ・・・・

     (let ((file (mew-make-temp-name)))
        (with-temp-buffer
            (insert "client=yes\n")
;;           (insert "pid=\n")
;;           (insert (format "verify=%d\n" (mew-ssl-verify-level case)))
            (insert "verify=0\n") ;; 学校は信用できるからこれで・・・
;;           (insert "foreground=yes\n")
            (insert "debug=debug\n")
;;           (if (and mew-ssl-libwrap (or (>= mew-ssl-ver 5) (>= mew-ssl-minor-ver 45)))
;;                     (insert "libwrap=no\n"))
;;           (if (or (>= mew-ssl-ver 5) (>= mew-ssl-minor-ver 22))
;;                     (insert "syslog=no\n"))
           (insert "CApath=" (expand-file-name (mew-ssl-cert-directory case)) "\n")
           (if mew-prog-ssl-arg
           (insert mew-prog-ssl-arg))
           (insert (format "[%d]\n" localport))
           (insert (format "accept=%s:%d\n" mew-ssl-localhost localport))
           (insert (format "connect=%s:%d\n" server remoteport))
           (if tls (insert (format "protocol=%s\nsslVersion=TLSv1\n" tls)))
           (mew-frwlet mew-cs-dummy mew-cs-text-for-write
               ;; NEVER use call-process-region for privacy reasons
                (write-region (point-min) (point-max) file nil 'no-msg))
           (list file)))))

(defun mew-ssl-setup () ;; 私が使っている物はこれだけ
     (setq mew-ssl-ver 5)
     (setq mew-ssl-minor-ver 14))


これで最初繋がるけど、その後ハングアップ。なんだかエラーの Windows が開く・・。
stunnel がターミナルのモードで起動していない???

これが難解だったけど、やっと分かった。
stunnel.exe ではなくて、同じディレクトリ下にある tstunnel.exe を使うのが正解みたい。
mew-ssl.el の mew-prog-ssl を tstunnel に変更。自分で設定する prog-ssl も同様。

(defvar mew-prog-ssl "tstunnel")

これでなんとかできた。M-x byte-compile-file で mew-ssl.el をコンパイルして終わり。
最後に mewencode.exe でエラーが出たので、ここらは以前のバージョンのものを使った。