[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[kagemai-users:0263] mailif.rb の出すエラーの対処方法



このMLには初POSTですが、影舞にはだいぶお世話になっています。
メール投稿で行う運用用のmailif.rbがうまく動かなくて、質問に来ました。

早速質問させてください。
影舞をinstallしたcgi用 Linux Serverがあるのですが、そのサーバーでは、
ネットワークポリシー上メールを受け取ることが出来ないため、仕方なく
メールをpollingしてそのままmailif.rbに食わせる方法をとろうと考えました。

POP3をpollingするのはPerlで、以下の様なコードにしました。
#一部抜粋
if ($pop->login($pop3user, $pop3pass) > 0) {
	my $msgnums = $pop->list; # hashref of msgnum => size
	foreach my $msgnum (keys %$msgnums) {
		my $msg = $pop->get($msgnum);
		open	FILE,"|/usr/local/bin/ruby /hoge/kagemai/bin/mailif.rb SERVERLOG" or die "execute error\n";
		print FILE	@$msg;
		close	FILE;
		$pop->delete($msgnum);
	}
}

一応、コマンドラインから起動してみて、mailif.rb に処理が渡っている所
までは確認したのですが、mailif.rb が以下の様なエラーを吐いてしまい、
メールをBTSに登録してくれません。

| [miri@cgi2 miri]$ perl pop3.pl
| /hoge/kagemai/bin/mailif.rb:233:in `untaint': can't modify frozen object (TypeError)
|         from /hoge/kagemai/bin/mailif.rb:233
| /hoge/kagemai/bin/mailif.rb:233:in `untaint': can't modify frozen object (TypeError)
|         from /hoge/kagemai/bin/mailif.rb:233
| /hoge/kagemai/bin/mailif.rb:233:in `untaint': can't modify frozen object (TypeError)
|         from /hoge/kagemai/bin/mailif.rb:233
| Broken pipe
| [miri@cgi2 miri]$ 

ちょっとgoogleで漁ってみたところ、以下の様なページが見つかったので、パッチの
理由は理解して無いのですが、やってみたところ、エラーの場所が変わりました。
http://www.cozmixng.org/~rwiki/?cmd=view;name=Ruby
| [miri@cgi2 miri]$ perl pop3.pl
| /usr/local/lib/ruby/1.8/singleton.rb:98: warning: redefine instance
| /hoge/kagemai/bin/mailif.rb:243: warning: Object#type is deprecated; use Object#class
| /usr/local/lib/ruby/1.8/singleton.rb:98: warning: redefine instance
| /hoge/kagemai/bin/mailif.rb:243: warning: Object#type is deprecated; use Object#class

...skip...

| /usr/local/lib/ruby/1.8/singleton.rb:98: warning: redefine instance
| /hoge/kagemai/bin/mailif.rb:243: warning: Object#type is deprecated; use Object#class
| [miri@cgi2 miri]$

今度は、メールがスプールされている分(16回)エラーが出てきたので、処理自体は
全部回ったようですが、やはり登録はされていませんでした。

Rubyを理解せずにパッチ当てるのもなんですが、こんな場合、もっと他に良い方法は
あるのでしょうか?
ご教授いただけると幸いです。

--
private: miri@xxxxxxxx   Y!: miriorg   MSN: messenger@xxxxxxxx