誰でも投稿可能な画像投稿掲示板を作成したのですが、登録を受け付けるメールアドレスを指定せねばならず、上記のような処理を行うものを求めています。
通常のメーラでフィルタ処理→転送すれば可能なのですが、あくまでサーバ上で動作するものを求めています。
.forwardを使って特定ユーザーに来たメールをperlに食わせ、From:行を書き換えてやれば簡単に行えます。
自動転送を行うユーザー名をhogeと、転送先のアドレスをfoo@example.jp、perlスクリプトを/home/user/tools/forward.plに置くと仮定します。
.forwardに
\hoge, "|/usr/bin/perl /home/user/tools/forward.pl"
と記述します。
/home/user/tools/forward.plの内容は例えば下記の通りです。
(実際に運用される際は環境依存の部分もありますので、スクリプトを十分にテストして下さい)
#!/usr/bin/perl
$flg = 0; # From行を既に書き換えたことを覚えておくフラグ
$buffer = ""; # メール本文を蓄えておくバッファ
while(<>){
if(/^From:/ and !$flg){
$buffer.= "From: foo@example.jp\n";
$flg++;
}else{
$buffer = $_;
}
}
open(MAIL,"| mail");
print MAIL $buffer;
close(MAIL);
exit;
参考:
一番簡単なのはgmailを新規取得してそのメールを受信先とし
gmailの設定で特定のアドレスを転送先に設定するといいと思います。
rubyのスクリプトでメールを扱う場合は送受信はnet/pop,net/smtpを使ったサンプルが標準マニュアルに載っています。
オンライン版は良くしぬので以下をDLしてmailで検索してみてください。
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
転送であれば、受信したのをそのまま転送すればいいと思います。
送信先などを書き換える場合はtmailライブラリを使うといいと思います。
http://i.loveruby.net/ja/projects/tmail/
gem install tmail でインストールできるはずです。
.forwardを使って特定ユーザーに来たメールをperlに食わせ、From:行を書き換えてやれば簡単に行えます。
自動転送を行うユーザー名をhogeと、転送先のアドレスをfoo@example.jp、perlスクリプトを/home/user/tools/forward.plに置くと仮定します。
.forwardに
\hoge, "|/usr/bin/perl /home/user/tools/forward.pl"
と記述します。
/home/user/tools/forward.plの内容は例えば下記の通りです。
(実際に運用される際は環境依存の部分もありますので、スクリプトを十分にテストして下さい)
#!/usr/bin/perl
$flg = 0; # From行を既に書き換えたことを覚えておくフラグ
$buffer = ""; # メール本文を蓄えておくバッファ
while(<>){
if(/^From:/ and !$flg){
$buffer.= "From: foo@example.jp\n";
$flg++;
}else{
$buffer = $_;
}
}
open(MAIL,"| mail");
print MAIL $buffer;
close(MAIL);
exit;
参考:
すみません、先ほどのスクリプト、凡ミスがありました。
11行目
誤:$buffer = $_;
正:$buffer.= $_;
でした。
ダミーURLをつけるのも何なので、別の参考URLをつけておきます。
http://oshiete1.goo.ne.jp/qa2930662.html
送信部分をいじる際に役立つと思います。
ありがとうございます!さっそくトライしてみます。
gmailで自動転送すると差出人アドレスがそのまま保持されてしまいますので、今回の目的には合致していません。
またrubyのマニュアルやサンプルではなく、実際に動く実例を求めています。
よろしくお願いします。