お世話になります。
perlをつかってメールフォームを作っています。
メールフォームから受け取った情報を(受け取るまでは暗号化してます。)
S/MIMEで暗号化しメール送信したいと考えております。(linux sendmeil)
調べてみたところopensslを使いあらかじめ用意したテキストファイルを
S/MIMEで送る事ができました。
↓こんな感じです。---------------------------------------------------------------
$SMIME = 'openssl smime -sign -signer my-cesr.pem -inkey key.pem -in mail.txt -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, "| $SMIME");
close(MAIL);
--------------------------------------------------------------------------------
↑この方法ですとメールフォームから受け取った情報を一度ファイルに
保存(mail.txt)しなければならないので、実用的ではありません。
何とかファイルからではなく変数で送信したいのですがうまく行きません。
っというか方法がさっぱり分かりません。
どうぞ宜しくお願いします。m(__)m
No.3ベストアンサー
- 回答日時:
再々度。
悔しい(笑)ので自分のところで試してみたところ,私の環境(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;
この回答への補足
じっさいに試していただいたのですね。。。(^^;
ほんとにありがとうざいます。
動作したということなので自分も何とか頑張ります。
自分の環境は[openssl0.9.6b,redhat7.2,perl5]です。
なぜ駄目なのかちょっと調べてたのですが、どこかのメーリングで
「リダイレクトはOKだがパイプ渡しでは駄目。これはバグです。」のような事が書いてありました。
ちょっと面倒ですが今度はバージョンを上げて試してみます。
No.4
- 回答日時:
殆どダイアログ状態ですね。
> どこかのメーリングで
> 「リダイレクトはOKだがパイプ渡しでは駄目。これはバグです。」のような事が書いてありました
そのMLは私も見た気がします。また別MLではそれに対するパッチ(ソース)を投稿していた人もいたような。
自分の状況と矛盾するので,ちょっと気になってはいるんですが。
さらにトライしてみられるのであれば,
- まず Perl からではなくシェルから,
- サインだけとか,暗号だけとかにわけて,echo 'abc' | openssl smime ... を実行し,
問題がどこにあるのかを正確に切り分けられることをお勧めします。
いまだ上手くいきませんが、よくよく考えたら
セキュリティー的にはファイルからのほうが無難かなと
思い直しました。。。(^^;
ただ、パイプでできないのは悔しいので 今後もトライしてみます。
それでは、いろいろとありがとうございました。m(__)m
失礼します。。。
No.2
- 回答日時:
再び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でも)
ありがとうございます。
No.1
- 回答日時:
なぜ,「実用的ではない」のかが今一つ分からないのですが…。
$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 はメイル本文が入っている変数
とかじゃだめでしょうか?
(試してないので自信はありません)
この回答への補足
ご返答ありがとうございます。
試してみましたがうまくいきませんでした。。。
>なぜ,「実用的ではない」のかが今一つ分からないのですが…。
実用的ではない。。っというよりは単なるこだわりに近いかもです。。(^^;
なんというかスマートでない気がするんで。。。
もうひとふんばりして駄目だったら一度ファイルに落としてから
やる方法にいたします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sendmailで複数の宛先にメール...
-
Perl メール 初心者
-
auのiPhoneでの受信メールが文...
-
perl フォームメール送信の...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
メモリをアドレスを直接指定し...
-
VB6で、長い時間かかる処理...
-
<SELECT>タグの折り返し
-
16進の10進変換について
-
プルダウンメニューで中央表示
-
ACCESS テキストボックスを隙...
-
セレクトボックスのselected属...
-
VBAでPDFのコピーとリネームを...
-
dieやPerl自体でエラーが発生し...
-
formで特定のinputを送信しない...
-
[python] 文字列を変数名として...
-
C++ APIについて エラーコード...
-
pythonで改行を含めてfindする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームの日本語が文字化け
-
sendmailで複数の宛先にメール...
-
Perl SendMail Bcc メルマガ
-
sendmailで複数アドレスに送信...
-
perl フォームメール送信の...
-
Sendmailで送信。メアドが違う...
-
sendmailで送信したメールが届...
-
CGI メールフォームからBCCのア...
-
自動返信について
-
メーラーに自動的にメッセージ...
-
メールフォームCGIの文字化け。...
-
Perl からbashを呼び出したい
-
auのiPhoneでの受信メールが文...
-
Application.ScreenUpdating = ...
-
JSONで文字列が長い時
-
この曲のピアノの最後の和音が...
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
実行時エラー 3020の対策
-
文字の横にプルダウンを表示さ...
おすすめ情報