Jun 252006
 

WanderlustからのGmail SMTPサーバ利用実験で「うまく使えない」と言っておりましたが、SMTP ErrorにならないようにするパッチがWanderlusのMLに流れていました。

flim-1_14枝にはcommit済みのようです。
limit-1_14にはcommitされていないようでしたが、自分で直接編集してみたところOKになりました。やった 😀

May 222006
 

Wanderlustでファイル名が日本語の添付ファイルを扱いたい場合、FAQにもあるようにはlimitを使いましょう、というのが一般的な解でした。
OutlookExpress で送信されたメールの日本語添付ファイル名がうまく扱えません

RFC2231が普及すれば、と思ってたのですが、どうも実装が進んでいるようには見受けられません。

添付ファイルにおける日本語のファイル名に関して
MUAs for Windows – explanation of “table 3: Japanese”

Wanderlustではlimit枝ではなく、flim-1_14-rfc2231-encoder枝を使うという方法もあるのですが、大抵相手側で認識できないため、とても悲しくなります。

WanderlustからのGmail SMTPサーバ利用実験

 article  Comments Off on WanderlustからのGmail SMTPサーバ利用実験
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

wl-envelope-fromを都度wl-fromから設定する

 article  Comments Off on wl-envelope-fromを都度wl-fromから設定する
Apr 302006
 

Wanderlustでは使用するメールアドレスを複数設定しておき、draftモード時に選択することができるようになってます。

(setq wl-template-alist
      '(("default"
	 (wl-from . "Someone <someone@example.org>")
	 ("From" . wl-from)
	 )
	("biz"
	 (wl-from . "Someone <someone@example.co.jp>")
	 ("From" . wl-from)
	 )
	))

といった具合になるのですが、wl-fromと”From”の両方を設定しないとけないのがやや面倒です。

wl-fromを変えないとEnvelope Fromの値が.wlに記述したwl-fromのままになってしまうため、やむなくそうするのですが、もっと簡単に解決する方法がari’s diaryさんのサイトにありました。
http://www.nijino.com/ari/diary/200305.shtml#200305120

(add-hook 'wl-draft-send-hook
	  (lambda ()
	    (set (make-local-variable 'wl-from) (std11-fetch-field "From"))))

これを記述しておくことでwl-fromが常にFromヘッダ値になり、結果Everlope FromもFromヘッダと同じにすることができます。

Mar 292006
 

SSLクライアント証明書あれこれ」でのCourier-IMAPのように、クライアント証明書を要求するメールサーバにWanderlustから接続する方法です。
WanderlustはEmacs上で動作するMUAですが、SSL関係はopensslコマンドを呼び出して処理するようになってます。
接続はopenssl s_clientコマンドになりますので、そちらの引数にクライアント証明書の指定をすればよいことになります。

;; IMAP over SSL
(require 'ssl)
(setq ssl-certificate-directory (expand-file-name "~/.ssl/certs"))
(setq ssl-program-arguments
      (append ssl-program-arguments
              '("-cert" my-ssl-client-certfile
                "-key"  my-ssl-client-keyfile)))
(setq my-ssl-client-certfile (expand-file-name "~/.ssl/ssl.crt"))
(setq my-ssl-client-keyfile  (expand-file-name "~/.ssl/ssl.key"))

この例ですと、IMAPに限らずSMTPなどのSSL接続に対しても効いてしまうことになりますので、本来であれば接続タイプを別に用意する、特定のサイトに接続する場合のみに効くようにする、などの対処をするのがベストかと思いますが、私にはそこまでできません orz

~/.ssl/certs/ディレクトリには認証局の証明書を格納してc_rehashしておきます。
また秘密鍵(~/.ssl/ssl.key)のパスフレーズ入力要求には対応できていないので、予めopenssl rsaコマンドを使って、パスフレーズを解除しておく必要があります。

PGP memo

 article  Comments Off on PGP memo
Feb 262006
 

WanderlustでのPGPメールの取り扱い

メッセージに署名する リージョン指定してC-cC-mC-s
メッセージの暗号化 リージョン指定してC-cC-mC-e
メッセージの複合化 application/pgp-encryptedのパートで v
non-MIME PGP メッセージの検証 メッセージバッファでC-c:v
non-MIME PGP メッセージの複合 メッセージバッファでC-c:d

参考サイト

GnuPGの使い方