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.