railsでのメール受信がうまく動かず
7 月 4th, 2009Postfix、Rails2.3.2の組み合わせでメール受信しようとしているのだけれどうまく行かず。
開発(等)の日記» Blog Archive » Postfixのaliasでワイルドカードを使いたいで書いたとおり、 regexp:/etc/postfix/alias.reg から実行するよう設定しているのだけれど。
/.*/ | "~hoge/test.rb > ~hoge/env.txt"
これは問題なく稼働。
test.rb は、
#!/usr/bin/ruby puts $:
出力内容は以下の通りで、コマンドラインからの実行と同一の内容が出力される。
/usr/lib/ruby/site_ruby/1.8 /usr/lib/ruby/site_ruby/1.8/i386-linux /usr/lib/ruby/site_ruby /usr/lib/site_ruby/1.8 /usr/lib/site_ruby/1.8/i386-linux /usr/lib/site_ruby /usr/lib/ruby/1.8 /usr/lib/ruby/1.8/i386-linux .
と、単純なスクリプトについては問題なく稼働しているように見える。
実際に動かしたいのは ./script/runner から receive なのだが…実行するとmaillogに下記のlogが出力される。
Jul 4 12:22:01 s04 postfix/local[15848]: A486B2BE0416: to=, relay=local, delay=0.01, delays=0/0/0/0.01, dsn=5.3.0, status=bounced (Command died with status 1: " /usr/bin/ruby /home/hoge/www/example.com/webapps/fuga/script/runner 'MemberJoin.receive STDIN.read'". Command output: /usr/bin/ruby: Permission denied -- /home/hoge/www/example.com /webapps/fuga/script/runner (LoadError) )
script/runner をpostfixから読む権限はあるし、 /etc/postfix/main.cf の default_privs で指定しているユーザについても問題なく権限が与えられている。
もちろん、コマンドラインから同様の処理を実行した場合も問題なく稼働する。
はまった…
参考にしたページ
- http://d.hatena.ne.jp/kusakari/20090420/1240229003
- http://d.hatena.ne.jp/mizincogrammer/20080313/1205392784
Cronで実行すれば似たような環境でエラーの把握ができるかと思い試してみたのだが、やはりダメ。
というかCronでは問題なく実行される。
default_privs 指定ユーザでも、Postfixユーザでもエラーが出てくれない。
15 17 * * * cat ~hoge/mail.txt | /usr/bin/ruby /home/hoge/www/example.com/webapps/fuga/script/runner 'MemberJoin.receive STDIN.read' > ~hoge/runner.log 2>&1
別サーバでも試してみよう….