「Postfix でメールを受信したら ActionMailer を叩く」を実現したいとき
OS は CentOS5、Rails のバージョンは 1.2.3 の場合です。
まずは ActionMailer を継承したクラスを作って
ruby script/generate mailer Mailman
受信メソッドを app/model/maiman.rb に追加
class Mailman < ActionMailer::Base def receive(email) #なんかの処理 end end
次に Postfix の設定。ror@domain に送られてくるモノとする。
vi /etc/postfix/virtual
ror@domain foobar
上記をファイル下部に追加する。
postmap /etc/postfix/virtual
設定を適用する。
vi /etc/aliases
foobar: "|/usr/local/bin/ruby /RAILS_ROOT/script/runner 'Mailman.receive(STDIN.read)'"
同じくファイル下部にエイリアスを指定する。
newaliases
適用。
vi /etc/postfix/main.cf
default_privs = user_name
上の項目に ruby を実行できるユーザを指定する。僕はこれを設定してなくてつまづきました。
service postfix reload
Twitter で新しいフォロワーが追加された旨のメールが来たらフォローし返すなど、夢が広がりますね。