emacs に mew を入れて、smtp ssl で sakura.ne.jp の mail サーバからメール送信しようとしたら、ミニバッファに
Creating an SSL/TLS connection...
と出たっきりemacsが固まってしまって送信できない。なにこれ。と格闘すること2日。インターネット上に見つかる解決法をあれもこれも試すもどれも効果なし。
ようやく動くようになったという歴史の記録。
まず言っておこう。
1. mew は /etc/stunnel/stunnel.conf を見ていない。
2. mew は 毎回 /usr/bin/stunnel4 /tmp/12204n3m/mew122042gt の様に stunnel4 コマンドを実行する。だから stunnel4 をデーモンにする必要はない。
$ sudo emacs /etc/default/stunnel4
ENABLED=0 ; つまり0のままでいい
3. 以下はdefault設定だから .mew.el に書く必要ない
(setq mew-prog-ssl "mewstunnel");stunnel4のラッパー
(setq mew-ssl-cert-directory "/etc/ssl/certs")
(setq mew-ssl-verify-level 2)
4. /etc/hosts.allow に ALL: 127.0.0.1 と追記しなくても動いた
5.
stunnel: Downloadsから最新のstunnel(ていうかstunnel3)を落として、./configure --disable-libwrap しても動かなかった。
いっとくけどね、
固まるときのプロセスをもう一度見ると
$ ps -ef | egrep stunn
/usr/bin/stunnel4 /tmp/kobapan9718sjl/mew97187Ms
これって、/usr/bin/stunnel4 /etc/stunnel/stunnel.conf だと思って格闘してきたけど、mew-ssl.el の出力する tmpファイルで stunnel4 を起動してるってことだからね。
ここらで結論
Creating an SSL/TLS connection...
のメッセージが出たまま動かないときは、、
.mew.el に
(setq mew-debug t)
と書いてエラーを起こして
Ctrl+g で送信を中止して
Mew debug* を見てみる
SSL_connect: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
とか言われてるときは、↓これが怪しい
つまり、
mew-smtp.el L 442
(when (and sslp (mew-port-equal port sslport))
(setq tlsp t)
;; let stunnel know that a wrapper protocol is SMTP
(setq tls mew-tls-smtp))
↑この条件式 when 通んないと、
mew-ssl.el:L 111
(if tls (insert (format "protocol=%s\nsslVersion=TLSv1\n" tls)))
この行がtmpファイルに書かれないよね!
ということで、.mew.el の設定
(setq mew-config-alist '(
:
("smtp-ssl" . t) ; ← sslp
("smtp-port" . "587") ; ← port
("smtp-ssl-port" . "587") ; ← sslport
この3つが必須!
それだけ!
私と同じハマり方しないように言っておくけど、
("smtp-port" . "submission")
("smtp-ssl-port" . "587")
の組み合わせは、だめだかんね。
最終更新:2014年12月22日 13:00