stunnelについて

266 views
Skip to first unread message

Yasuhiro Kimura

unread,
Feb 18, 2023, 1:58:41 AM2/18/23
to mew...@googlegroups.com
木村です。

Windowsでstunnelを5.68にするとサーバに接続に行くところで固まってしまう、
という問題に遭遇していて、現在色々調べている途中なのですが、それに関連
してmew-ssl.elのコードを眺めていて、二つほど提案があります。

1. サポートするstunnelのバージョンについて

現在Mewはstunnelのバージョン3以降をサポートしていますが、stunnelの公式
アーカイブ(https://www.stunnel.org/archive/)で各バージョンのソースアー
カイブのタイムスタンプを確認してみたところ、

stunnel-3.22.tar.gz(3.xの最後のバージョン) => 2001-12-23 21:23
stunnel-4.00.tar.gz => 2002-08-30 20:02
stunnel-5.00.tar.gz => 2014-03-06 00:41

となっています。一方Mew 6.9からはEmacs 26.1以降のみサポートされること
になりましたが、「GNU Emacs Release History」
(https://www.gnu.org/savannah-checkouts/gnu/emacs/history.html)による
と26.1がリリースされたのは2018-05-28なので、これと↑のstunnelの各バー
ジョンのタイムスタンプを比較して考えると、サポートするstunnelのバージョ
ンを5.0以降としてもよいのではないかと思うのですが、いかがでしょうか。
特に引数が4.x以降と大きく異なる3.xについては、最終バージョンの3.22が出
たのが既に20年以上前なので、サポートを終了してそのためのコードを削除し
ても問題ないと思います。

2. IPv6のサポートについて

mew-ssl.elの60行目に以下のようなコメントがあります

----------------------------------------------------------------------
;; stunnel does not support IPv6, sigh
----------------------------------------------------------------------

しかしながら

* FreeBSD 13.1-RELEASE amd64のstunnel 5.68
* Debian 11.6 amd64のstunnel 5.56
* 64bit Cygwinのstunnel 5.68
* 公式のWindowsインストーラでインストールされるtstunnel.exe 5.67

の4つについて

----------------------------------------------------------------------
[13579]
accept=localhost:13579
----------------------------------------------------------------------

のような設定ファイルを作成してstunnelを起動したところ、いずれの環境で
127.0.0.1:13579と[::1}:13579の両方で接続を待ち受けており、最近のバー
ジョンのstunnelがIPv6をサポートしているのは間違いないようです。1番目の
話と違って、stunnelがいつからIPv6をサポートされるようになったのかは不
明ですが、今や「フレッツが遅いのはIPv6にすると解決する」話の影響で一般
家庭にまでIPv6が普及する時代ですし、mew-ssl.elの132行目を

----------------------------------------------------------------------
(insert (format "accept=%s:%d\n" mew-ssl-localhost localport))
----------------------------------------------------------------------

から

----------------------------------------------------------------------
(insert (format "accept=localhost:%d\n" localport))
----------------------------------------------------------------------

に変更してもよいのではないかと思うのですが、いかがでしょうか。

以上2点、皆さんのご意見をお聞かせ下さい。特に反対がないようなら、pull
requestを作成するつもりです。

---
木村 康浩

Tatsuya Kinoshita

unread,
Feb 18, 2023, 4:02:58 AM2/18/23
to mew...@googlegroups.com, ya...@utahime.org
On 2023-02-18 at 15:56, Yasuhiro Kimura wrote:
> 5.0以降としてもよいのではないかと思うのですが、いかがでしょうか。
> 特に引数が4.x以降と大きく異なる3.xについては、最終バージョンの3.22が出
> たのが既に20年以上前なので、サポートを終了してそのためのコードを削除し
> ても問題ないと思います。

できれば5.15 (2015.04.16)より前をサポート対象外にすることでcheckHostは
固定にして、ヘルプメッセージの変化によってcheckHostが外れてしまわないか
心配せずに済むようにしたいです。

--
木下達也

Tatsuya Kinoshita

unread,
Feb 18, 2023, 5:50:24 PM2/18/23
to mew...@googlegroups.com, ya...@utahime.org
On 2023-02-18 at 15:56, Yasuhiro Kimura wrote:
> (insert (format "accept=%s:%d\n" mew-ssl-localhost localport))
> から
> (insert (format "accept=localhost:%d\n" localport))
> に変更してもよいのではないかと思うのですが、いかがでしょうか。

stunnelがIPv6, IPv4それぞれにリトライしてくれない、という経緯が
あったようです。

<https://www.mew.org/ml-archives/mew-dist/2008-May/028066.html>:
> [mew-dist 28379] stunnel 4.23
> Kazu Yamamoto ( 山本和彦 ) kazu at example.com
> 2008年 5月 5日 (月) 19:14:25 JST
> I'm using Mac. "localhost" is associated with ::1 (IPv6) and 127.0.0.1
> (IPv4). stunnel first tries to connect ::1. If fails, stunnel gives
> up. (Of course, stunnel should try the next, 127.0.0.1.)
>
> I committed workaround to CVS where Mew translates "localhost" to
> 127.0.0.1 in stunnel configration files. Note that the same logic
> already exists in the *source* side. (See mew-ssl-localhost.)

デフォルト値を変えるとしても、変数mew-ssl-localhostはdefvarにして
回避策として残しておいてはどうでしょうか。

--
木下達也

Kazu Yamamoto

unread,
Feb 19, 2023, 8:04:50 PM2/19/23
to mew...@googlegroups.com
山本です。

>> 5.0以降としてもよいのではないかと思うのですが、いかがでしょうか。
>> 特に引数が4.x以降と大きく異なる3.xについては、最終バージョンの3.22が出
>> たのが既に20年以上前なので、サポートを終了してそのためのコードを削除し
>> ても問題ないと思います。
>
> できれば5.15 (2015.04.16)より前をサポート対象外にすることでcheckHostは
> 固定にして、ヘルプメッセージの変化によってcheckHostが外れてしまわないか
> 心配せずに済むようにしたいです。

時代に合わせて、古い実そのサポートを辞めていくのは問題ありません。

--かず


Kazu Yamamoto

unread,
Feb 19, 2023, 8:08:36 PM2/19/23
to mew...@googlegroups.com
山本です。

> mew-ssl.elの60行目に以下のようなコメントがあります
>
> ----------------------------------------------------------------------
> ;; stunnel does not support IPv6, sigh
> ----------------------------------------------------------------------

昔話をしますと、この "sigh" は KAME プロジェクトに対してかもしれません。

我々が IPv6 の開発をしている際に、stunnelの作者から IPv6 の対応をどう
やればいいのか問い合わせがあったようなのですが、ちゃんと答えられなかっ
たんですよねぇ。

> ----------------------------------------------------------------------
> (insert (format "accept=localhost:%d\n" localport))
> ----------------------------------------------------------------------
>
> に変更してもよいのではないかと思うのですが、いかがでしょうか。

ハードコーディングにするメリットが分からないのですが、メリットはなんで
しょうか?

--かず


Yasuhiro Kimura

unread,
Feb 21, 2023, 5:02:55 AM2/21/23
to mew...@googlegroups.com
木村です。

From: 'Kazu Yamamoto' via Mew ユーザ <mew...@googlegroups.com>
Subject: Re: [mew-ja] stunnelについて
Date: Mon, 20 Feb 2023 10:04:44 +0900 (JST)

> 時代に合わせて、古い実そのサポートを辞めていくのは問題ありません。

とのことですのでpull requestを作成しました。

https://github.com/kazu-yamamoto/Mew/pull/174

です。一応手元の環境で問題なく動作することを確認していますが、何かおか
しな点がありましたら指摘してください。

あと一点。

From: Tatsuya Kinoshita <ta...@vega.ocn.ne.jp>
Subject: Re: [mew-ja] stunnelについて
Date: Sat, 18 Feb 2023 18:02:21 +0900 (JST)

> できれば5.15 (2015.04.16)より前をサポート対象外にすることでcheckHostは
> 固定にして、ヘルプメッセージの変化によってcheckHostが外れてしまわないか
> 心配せずに済むようにしたいです。

とのことでしたが、stunnel-announce MLに投稿されたリリースアナウンスを
確認したところ、checkHostオプションが追加されたのは5.15からでしたので、
サポートされるバージョンを5.15以降としました。

参照:
https://www.stunnel.org/mailman3/hyperkitty/list/stunnel-...@stunnel.org/thread/UZ6BPT4NDBSUC5EQFWJTDHLPUYFACB2L/

---
木村 康浩

Yasuhiro Kimura

unread,
Feb 21, 2023, 5:02:55 AM2/21/23
to mew...@googlegroups.com
From: 'Kazu Yamamoto' via Mew ユーザ <mew...@googlegroups.com>
Subject: Re: [mew-ja] stunnelについて
Date: Mon, 20 Feb 2023 10:08:31 +0900 (JST)
↑のコメントの「stunnel does not support IPv6」の具体的な意味がわから
なかったので、最初のメールで書いたようないくつかの条件で試したとこ
ろ、'accept=localhost:12345'とかでも特に問題が発生していないようなので、
それなら決め打ちでも良いのではないかと考えました。

逆に、嘗てこのworkaroundが必要だった問題が最近のstunnelでは解決してい
るとした場合に、acceptオプションで指定するホスト名orIPアドレスを
localhost以外に設定したい場合というのが思い浮かばないのですが、どういっ
た状況がありますでしょうか。

---
木村 康浩

Yasuhiro Kimura

unread,
Feb 21, 2023, 5:02:57 AM2/21/23
to mew...@googlegroups.com
木村です。

一応こちらにも報告を。

From: Yasuhiro Kimura <ya...@utahime.org>
Subject: [mew-ja] stunnelについて
Date: Sat, 18 Feb 2023 15:56:37 +0900 (JST)

> Windowsでstunnelを5.68にするとサーバに接続に行くところで固まってしまう、
> という問題に遭遇していて、現在色々調べている途中なのですが、

この件ですが、stunnel-users MLで問い合わせたところ、5.68から利用するよ
うになったOpenSSLの関数が実はWindowsでは正常に動作しない、というのが原
因であることが判明しました。

https://www.stunnel.org/mailman3/hyperkitty/list/stunne...@stunnel.org/thread/QTGS7ESMRPR5DHOESSRLRZMJZHWO2K5M/

↑の2番目のメッセージに、この問題を修正した5.69b1のインストーラーのダ
ウンロードURLが書いてありますので、もし私と同じ問題に直面している方が
おられましたら、そちらを試してみてください。

# まぁもう少し待てば、この問題を修正した5.69の正式版がリリースされそう
# な気もしますが。

---
木村 康浩

Kazu Yamamoto

unread,
Feb 21, 2023, 11:28:23 PM2/21/23
to mew...@googlegroups.com
山本です。

>> ハードコーディングにするメリットが分からないのですが、メリットはなんで
>> しょうか?
>
> ↑のコメントの「stunnel does not support IPv6」の具体的な意味がわから
> なかったので、最初のメールで書いたようないくつかの条件で試したとこ
> ろ、'accept=localhost:12345'とかでも特に問題が発生していないようなので、
> それなら決め打ちでも良いのではないかと考えました。
>
> 逆に、嘗てこのworkaroundが必要だった問題が最近のstunnelでは解決してい
> るとした場合に、acceptオプションで指定するホスト名orIPアドレスを
> localhost以外に設定したい場合というのが思い浮かばないのですが、どういっ
> た状況がありますでしょうか。

"localhost"でうまくいくようになったので、デフォルトを"localhost"にしま
しょうという話はOKです。

"localhost"で(自分が考る限り)うまくいくので、ハードコーディングしましょ
うというのはNGです。ユーザは想定外の使い方をするものです。

--かず


Yasuhiro Kimura

unread,
Feb 22, 2023, 4:22:12 AM2/22/23
to mew...@googlegroups.com
木村です。

To: 北口さん

Windows版バイナリに関してのお願いがありますので、お手数ですがこのメー
ルをご一読下さい。

From: Yasuhiro Kimura <ya...@utahime.org>
Subject: Re: [mew-ja] stunnelについて
Date: Tue, 21 Feb 2023 19:01:14 +0900 (JST)

>> Windowsでstunnelを5.68にするとサーバに接続に行くところで固まってしまう、
>> という問題に遭遇していて、現在色々調べている途中なのですが、
>
> この件ですが、stunnel-users MLで問い合わせたところ、5.68から利用するよ
> うになったOpenSSLの関数が実はWindowsでは正常に動作しない、というのが原
> 因であることが判明しました。
>
> https://www.stunnel.org/mailman3/hyperkitty/list/stunne...@stunnel.org/thread/QTGS7ESMRPR5DHOESSRLRZMJZHWO2K5M/
>
> ↑の2番目のメッセージに、この問題を修正した5.69b1のインストーラーのダ
> ウンロードURLが書いてありますので、もし私と同じ問題に直面している方が
> おられましたら、そちらを試してみてください。

ごめんなさい、これだと間違いというか片手落ちでした。「stunnelを5.69b1
にしてもサーバに繋がらないのですが」という私信を頂いて思い出したのです
が、この問題はMewの側にも原因がありました。こちらの方はすぐに原因がわ
かって修正出来たので、すぐにpull requestを作成してリポジトリのmasterブ
ランチに既にマージされています。ただマージされたのがMew 6.9のリリース
の後なので、私のようにリポジトリをcloneしてmasterをビルド&インストール
して使っている人間は5.69b1を使うことでサーバに接続出来ますが、Mew 6.9
のWindows版バイナリを利用している一般的なユーザの方だと、stunnelを
5.69b1にしても相変わらずサーバに接続出来ません。Mew側の修正を施した後
も問題が解決しなかったので、stunnelの問題のことで頭がいっぱいになって
しまってMew側の修正のことがすっかり頭から抜け落ちていました。申し訳あ
りません。

それでこの問題のMew側の対応策としては、リポジトリの以下のcommitに相当
する修正をmew-ssl.elに施すことになります。

commit 08bc14d
Author: Yasuhiro Kimura <ya...@utahime.org>
AuthorDate: Fri Feb 17 17:57:34 2023 +0900
Commit: Kazu Yamamoto <ka...@iij.ad.jp>
CommitDate: Sat Feb 18 15:09:07 2023 +0900

Separately check if stunnel supports 'foreground', 'pid' and 'syslog' options

While investigating the problem that Mew doesn't work well with
version 5.68 of stunnel for Windows, I noticed that it supports
'foreground' and 'syslog' options but doesn't supports 'pid'
option. So change mew-ssl.el so it checks if stunnel supports each of
3 options separately and only adds setting of supported one to
configuration file.

While I'm here, add documentation string to mew-ssl-libwrap and
mew-ssl-checkhost.

Windows版バイナリの利用者の場合は、MEW69W0.ZIPの展開先に含まれている
mew-ssl.elに上記コミットの差分を適用した上でmew.exeを実行して再度イン
ストールを行えばいいのだと思いますが、Windowsには標準でpatchコマンドは
ありませんし、手でmew-ssl.elを編集してというのも少し面倒です。なにより
今後MEW69W0.ZIPとstunnel 5.68以降を利用する全てのユーザがこれをやらな
ければならないというのは頂けません。かと言ってMewの次のバージョンが出
るまで5.67に留まりつづけるというのも、そもそも5.68自体がOpenSSL由来の
脆弱性の修正を含むリリースですし、今後も脆弱性の修正があり得ること考慮
すると、あまり採りたくない選択肢です。

それで北口さんにお願いなのですが、上記修正を含んだ新しいWindow用バイナ
リを作成&提供していただけないでしょうか。

よろしくお願いいたします。

---
木村 康浩

Yasuhiro Kimura

unread,
Feb 22, 2023, 4:22:14 AM2/22/23
to mew...@googlegroups.com
From: 'Kazu Yamamoto' via Mew ユーザ <mew...@googlegroups.com>
Subject: Re: [mew-ja] stunnelについて
Date: Wed, 22 Feb 2023 13:28:18 +0900 (JST)

> "localhost"でうまくいくようになったので、デフォルトを"localhost"にしま
> しょうという話はOKです。
>
> "localhost"で(自分が考る限り)うまくいくので、ハードコーディングしましょ
> うというのはNGです。ユーザは想定外の使い方をするものです。

なるほど。それでは前者の方向でpull requestを作成しますが、それに関連し
て一点相談です。

;; stunnel does not support IPv6, sigh

このコメントですが、デフォルト"localhost"に変更した後だと、このコメン
トを読んでも意味不明になってしまうと思うのですが、どうするのがいいでしょ
うか。

案1: 木下さんが引用されている山本さんの2008年5月5日のメールの内容と、
その後stunnelがIPv6に対応したのでデフォルトが変更されたことを書き
連ねる
案2: 単純に削除する

何か他にいい案があったら挙げてください。

---
木村 康浩

Kazu Yamamoto

unread,
Feb 22, 2023, 8:17:07 AM2/22/23
to ya...@utahime.org, mew...@googlegroups.com
山本です。

> 案2: 単純に削除する

これでいいと思います。

--かず




Shuichi KITAGUCHI

unread,
Feb 23, 2023, 4:35:48 AM2/23/23
to mew...@googlegroups.com
木村さん、

北口です。

> それで北口さんにお願いなのですが、上記修正を含んだ新しいWindow用バイナ
> リを作成&提供していただけないでしょうか。

mew-ssl.elを更新したものに置き換えておきました。

https://github.com/shkit/mew-win32/releases/tag/v6.9w0


--
Shuichi KITAGUCHI // k...@ysnb.net / k...@hh.iij4u.or.jp

Yasuhiro Kimura

unread,
Mar 1, 2023, 4:12:16 AM3/1/23
to mew...@googlegroups.com
木村です。

From: Shuichi KITAGUCHI <k...@ysnb.net>
Subject: Re: [mew-ja] Windows+stunnel 5.68でサーバに繋がらない問題について
Date: Thu, 23 Feb 2023 18:35:40 +0900 (JST)

>> それで北口さんにお願いなのですが、上記修正を含んだ新しいWindow用バイナ
>> リを作成&提供していただけないでしょうか。
>
> mew-ssl.elを更新したものに置き換えておきました。
>
> https://github.com/shkit/mew-win32/releases/tag/v6.9w0

確認が遅くなりましたが、ご対応ありがとうございました。

---
木村 康浩

Yasuhiro Kimura

unread,
Mar 1, 2023, 4:12:45 AM3/1/23
to mew...@googlegroups.com
木村です。

From: 'Kazu Yamamoto' via Mew ユーザ <mew...@googlegroups.com>
Subject: Re: [mew-ja] stunnelについて
Date: Wed, 22 Feb 2023 22:17:02 +0900 (JST)

>> 案2: 単純に削除する
>
> これでいいと思います。

とのことでしたので、遅くなりましたがpull requestを作成しました。

https://github.com/kazu-yamamoto/Mew/pull/177

です。

---
木村 康浩
Reply all
Reply to author
Forward
0 new messages