May 022006
 

GmailのSMTPサーバをWanderlustから利用してみようと思ったのですがうまくいきません。
2chのWanderlustスレの話題と同じ現象に見えます。でも私が使ってるlimit-1_14ブランチにも、 ここらへんのパッチも当たってるはずなのですけどねぇ 😕

SMTP over SSLの場合

465/tcpポートを使った、最初からSSL接続になるやりかたです。

~/.wl設定

(setq wl-smtp-posting-server "smtp.gmail.com"
      wl-smtp-posting-port 465
      wl-smtp-connection-type 'ssl
)

ほんとは認証用にwl-smtp-posting-userの設定も必要ですが省略しています。

この状態でメール送信を試みてもSMTP errorがミニバッファに表示され、うまくいきません。opensslをコマンドラインから実行してみると、RCPT TOのあとにRENEGOTIATINGとでてきます。はじめてみるレスポンスですが何かしらコマンドラインオプションに不備があるのでしょうか 😕

$ openssl s_client -connect smtp.gmail.com:465 -CApath /etc/ssl/certs
:
220 mx.gmail.com ESMTP z80sm1155576pyg
EHLO localhost.example.jp
250-mx.gmail.com at your service
250-SIZE 20971520
250-8BITMIME
250-AUTH LOGIN PLAIN
250 ENHANCEDSTATUSCODES
AUTH PLAIN ********************************************
235 2.7.0 Accepted
MAIL FROM:<someone@example.com>
250 2.1.0 OK
RCPT TO:<someone@example.net>
RENEGOTIATING
depth=1 /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/emailAddress=premium-server@thawte.com
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
verify return:1

starttlsの場合

587/tcpポートを使った、途中からSSL接続に遷移するやりかたです。ちなみに587/tcpはsubmission用であって、starttls用に予約されているポート番号ではありません。

~/.wl設定

(setq wl-smtp-posting-server "smtp.gmail.com"
      wl-smtp-posting-port 587
      wl-smtp-connection-type 'stattls
)

Wanderlustのドキュメントによれば、starttlsパッケージが必要になりますので、インストールしておきます。

$ wget ftp://opaopa.org/pub/elisp/starttls-0.10.tar.gz
$ tar xzvf starttls-0.10.tar.gz
$ cd starttls-0.10
$ ./configure && make && sudo make install

やはりSMTP errorになります 🙁

opensslのstarttlsを使う場合

新しめのopensslはs_clientでのstarttlsもサポートしています。
openssl s_client -starttls smtp ...
メールを送信するときのSSL接続はwl-draft.elのwl-smtp-extension-bindというマクロでおこなわれるように見えます。
このマクロが使われるのはwl-draft-send-mail-with-smtpからにこれまた見えますので、直前で一番近いwl-mail-send-pre-hookでopensslコマンドのオプションを設定するようにしてみました。

~/.wl設定

(setq wl-smtp-posting-server "smtp.gmail.com"
      wl-smtp-posting-port 587
      wl-smtp-connection-type 'ssl
)
(add-hook 'wl-mail-send-pre-hook
	  (lambda ()
	    (set (make-local-variable 'ssl-program-arguments)
		 '("s_client"
		   "-starttls" "smtp"
		   "-host" host
		   "-port" service
		   "-verify" (int-to-string ssl-certificate-verification-policy)
		   "-CApath" "/etc/ssl/certs/"))
	    ))

portはstarttls用587とし、connection-typeはsslにする(こうしないとopensslコマンド呼び出しになりません)のがみそです。

が、うまくいきません。SMTP接続のtraceバッファを見ると、

9810:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:

のようにいきなりSSL接続しているようなので、”-starttls smtp”を設定するhookが効いていないようです orz

Sorry, the comment form is closed at this time.