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 でエラーが出たので、ここらは以前のバージョンのものを使った。