ssh + smtp
Katsumi Yamaoka
yamaoka @ jpl.org
2002年 7月 25日 (木) 13:11:38 JST
>>>>> In <d96bbc32-de97-48eb-adb1-b321ef64c902 @ deisui.org>
>>>>> Daiki Ueno <ueno @ unixuser.org> wrote:
上野さん> もしかして start-process の呼出しの前後で
上野さん> process-connection-type を nil に束縛すると解決したりしませ
上野さん> んか?
山岡> ああ、当然試してみるべきでしたねえ。ですが、状況は代わりませんで
山岡> した。
上野さん> なるほど。ということは、telnet で吸収されてしまっている可能
上野さん> 性が大きいですね。
上野さん> ちなみに元々の発言の根拠は以下の投稿です。
上野さん> <http://tsukuba.m17n.org/mule-ja-archive/2001-9/msg00014.html>
;; そのときの自分の興味と関係が無いと読み飛ばしてしまう、の典型
;; だあ。^^;;
少し驚いたのですが、XEmacs で process-connection-type だとファイ
ルが生成されませんでした。
上野さん> このパッチは、一旦 Emacs 21 に取り込まれたのですが、RMS の環
上野さん> 境では M-x telnet に副作用が生じるとかで外されてしまいました。
ふうーん、悪いのは telnet.el (それとも comint.el) じゃないの? と
言ってみたくなります。
山岡> (defvoo nntp-end-of-line "\r\n"
山岡> "*String to use on the end of lines when talking to the NNTP server.
山岡> This is \"\\r\\n\" by default, but should be \"\\n\" when
山岡> using and indirect connection method (nntp-open-via-*).")
上野さん> FLIM の smtp.el にも同様の docstring と共に smtp-end-of-line
上野さん> が導入されたようですが、"should be" で終わらせずに、上記の経
上野さん> 緯をほのめかしたほうが良いのではないかと思います。
えーと、これは
Setting this to "\n" is just a workaround. Emacs has probably a bug
that "\r\n" will be converted to "\n" for the external processes.
ではなくて、
Setting this to "\n" is just a workaround. There is a difference
between open-network-stream and telnet that telnet uses "\n" instead
of "\r\n" for newlines.
のような感じで良いのですよね?
% echo QUIT| ssh remote_host telnet localhost smtp|& cat -v
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 remote_host ESMTP Postfix
Connection closed by foreign host.
% echo QUIT| ssh remote_host '$HOME/bin/nc' localhost smtp|& cat -v
220 remote_host ESMTP Postfix^M
221 Bye^M
;; nc はさっき作った netcat
上野さん> また、smtp-open-connection-function にも docstring を付けて、
上野さん> ・process-connection-type を nil に束縛する
上野さん> ・中継ホストでは telnet の代わりに(割と一般的な) netcat を使う
上野さん> ような設定例を挙げたほうが良いのかも知れません。
*Function used for connecting to a smtp server. This is the function
`open-network-stream' by default. See also `smtp-end-of-line'. Here
is one example:
(setq smtp-open-connection-function
(lambda (name buffer host service)
(let ((process-connection-type nil))
(start-process name buffer "ssh" "-C" host
"nc" host service))))
Where the command "nc" is the netcat executable. See
http://www.atstake.com/research/tools/index.html#network_utilities for
details.
こんな感じでしょうか。
ところで、たぶん本題とは関係無いのですが、ssh + telnet で nntp
サーバーにつなぐ場合に、telnet の版によっては ssh に -t オプショ
ンを付けないと通信ができないことがあるので、現在の nntp.el はそ
ういうことができるようにしてあります。なぜか smtp では再現しませ
んが。
--
Katsumi Yamaoka <yamaoka @ jpl.org>
More information about the Emacs-mime-ja
mailing list