- ベストアンサー
PerlでS/MIMEを使ったメールフォームの暗号化送信
- Perlを使用して作成したメールフォームからS/MIMEで暗号化してメールを送信する方法について教えてください。
- 現在、Perlで作成したメールフォームからS/MIMEを使用してメールを送信する際、一度ファイルに保存する必要がありますが、ファイルを使わずに変数を使用して直接送信する方法が分かりません。
- 具体的なコード例などを教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
再々度。 悔しい(笑)ので自分のところで試してみたところ,私の環境(openssl 0.9.6c, Solaris 2.6, Perl 5)では,以下のようなPerlスクリプトが正常に動作しましたが...。 - Linux と Solaris (あまり重要な差ではない) - CGIとシェルからの実行 (実行権に気を付けるくらい) - メイルの送信にsendmailではなくmailx (Solaris についてくる sendmail の CUI のようなものなので本質は同じ) くらいしか違いがないと思うのですが…。sonarさんのところのopensslのバージョンはどうなっているでしょうか? #!/bin/somewhere/perl $msg = 'This is my happiness.'; $openssl = 'openssl smime -sign -signer senderCert.pem -inkey senderPrivKey.pem -text | openssl smime -encrypt -des3 senderCert.pem | mailx -s "openssl test" ***@***.***'; system ("echo '$msg' | $openssl"); 1;
その他の回答 (3)
- aton
- ベストアンサー率47% (160/334)
殆どダイアログ状態ですね。 > どこかのメーリングで > 「リダイレクトはOKだがパイプ渡しでは駄目。これはバグです。」のような事が書いてありました そのMLは私も見た気がします。また別MLではそれに対するパッチ(ソース)を投稿していた人もいたような。 自分の状況と矛盾するので,ちょっと気になってはいるんですが。 さらにトライしてみられるのであれば, - まず Perl からではなくシェルから, - サインだけとか,暗号だけとかにわけて,echo 'abc' | openssl smime ... を実行し, 問題がどこにあるのかを正確に切り分けられることをお勧めします。
お礼
いまだ上手くいきませんが、よくよく考えたら セキュリティー的にはファイルからのほうが無難かなと 思い直しました。。。(^^; ただ、パイプでできないのは悔しいので 今後もトライしてみます。 それでは、いろいろとありがとうございました。m(__)m 失礼します。。。
- aton
- ベストアンサー率47% (160/334)
再びatonです。 すごい恥ずかしい間違いをしていました。 誤:open (MAIL, "cat $mail | $SMIME"); 正:open (MAIL, "echo $mail | $SMIME"); open (MAIL, "echo '$mail' | $SMIME"); system ("echo $mail | $SMIME"); system ("echo '$mail' | $SMIME"); の4つのうちのどれか(systemを使う場合 close (MAIL); は不要です)。 これでもうまくいかなそうな気もしますが,とりあえず試すだけ試してみてください。
補足
echo については cat のアイデアをいただいた時に 試してみましたが駄目でした。。。 (systemでも) ありがとうございます。
- aton
- ベストアンサー率47% (160/334)
なぜ,「実用的ではない」のかが今一つ分からないのですが…。 $SMIME = 'openssl smime -sign -signer my-cesr.pem -inkey key.pem -text | openssl smime -encrypt -from masa@****.co.jp -to yosi@****.co.jp -subject "signtest" -des3 my-cesr.pem | /usr/sbin/sendmail masa@****.co.jp'; open (MAIL, "cat $mail | $SMIME"); close(MAIL); 註:$mail はメイル本文が入っている変数 とかじゃだめでしょうか? (試してないので自信はありません)
補足
ご返答ありがとうございます。 試してみましたがうまくいきませんでした。。。 >なぜ,「実用的ではない」のかが今一つ分からないのですが…。 実用的ではない。。っというよりは単なるこだわりに近いかもです。。(^^; なんというかスマートでない気がするんで。。。 もうひとふんばりして駄目だったら一度ファイルに落としてから やる方法にいたします。 ありがとうございました。
補足
じっさいに試していただいたのですね。。。(^^; ほんとにありがとうざいます。 動作したということなので自分も何とか頑張ります。 自分の環境は[openssl0.9.6b,redhat7.2,perl5]です。 なぜ駄目なのかちょっと調べてたのですが、どこかのメーリングで 「リダイレクトはOKだがパイプ渡しでは駄目。これはバグです。」のような事が書いてありました。 ちょっと面倒ですが今度はバージョンを上げて試してみます。