[sylpheed-jp:10694] Re: 秀丸メールとのGPG相互運用連携について

IWAMOTO Kouichi sue @ iwmt.org
2008年 10月 28日 (火) 10:55:19 JST


岩本です。

On Mon, 27 Oct 2008 19:18:31 +0900
IWAMOTO Kouichi <sue @ iwmt.org> wrote:

> * gpg --decrypt --passprhase-fd 0 --batch %f | nkf -e

typoしていました。--passphrase-fdが正しいです。

これだけではなんなので、もうちょっと解説を。

> > (1) 複数コマンドの書き方(shの;を使ってみたけどダメでした)

sylpheedはアクションの実行にshを使っているので、普通に;が使えるはずです。
[sylpheed-jp:10692]の例に有るように、;以外にも内部コマンド(forなど)や、
リダイレクトなども使えます。

逆にxtermやktermなどの-eオプションではexecvp()でコマンドを直接起動するので、
;や|、リダイレクトや内部コマンドなどのshの機能は使えません。
これらを使う為には、kterm -e sh -c 'gpg -d %f | lv' というように、sh経由で
コマンドを起動する必要があります。
gnome-terminalは使ったことが無いのですが、多分同じだと思います。

> > (2) Actionの|や>をコマンド中にうまく反映する方法が、よく
> >     わかっていません。

これらは、標準入出力が対象になります。
例えば | sort | ならば本文または選択部分をソートしますし | nkf -wr | ならば
ROT13/47します。

しかし、xterm等を起動した場合、xtermの中で実行されているコマンドとは標準
入出力でのやりとりが出来ないので、%fでメッセージのファイル名を渡して処理を
行う必要があります。

また、アクションのコマンドの実行時に擬似端末を割り当てているわけではないので、
そのままではgpgコマンドでパスフレーズの入力が出来ません。
そこで --passphrase-fd 0 --batch オプションで、パスフレーズは標準入力を使って
送るという方法を取ります。(sylpheedからはアクションの*で不可視文字列として入力)
この方法だと標準入力はパスフレーズに使用しているので、処理するメッセージは
%fを使ってファイル名で渡します。
この制限はパスフレーズを入力する為に発生するので、gpg-agentを使っている等の
理由でパスフレーズの入力をしない場合は、| で標準入力を使ってメッセージを
渡してもいいと思います。

-- 
いわもと こういち(sue @ iwmt.org/sue @ postfix.jp/sue @ TeraTerm.Net)
# なるようになれ、明日もイケイケ♪


Sylpheed-jp メーリングリストの案内