エラーメールをfrom以外のアドレスで受け取る
Rubyで普通にメールを送信する場合は以下のようになる。
#!/usr/bin/ruby -Ku require 'net/smtp' require 'rubygems' require 'tmail' mail = TMail::Mail.new mail.to = 'test@foo.com' mail.from = 'me@bar.com' mail.subject = 'test' mail.date = Time.now mail.mime_version = '1.0' mail.set_content_type('text', 'plain', {'charset' => 'iso-2022-jp'}) mail.encoding = '7bit' mail.body = 'test msg' Net::SMTP.start('localhost', 25) do |smtp| smtp.send_mail(mail.encoded, 'me@bar.com', mail.destinations) end
このとき宛先不明などで、MAILER-DAEMONさんから戻ってくるメールをerror@bar.comで取得したい場合、以下のように設定する。
(略) Net::SMTP.start('localhost', 25) do |smtp| smtp.send_mail(mail.encoded, 'error@bar.com', mail.destinations) end
メールが正常にtest@foo.comに配送された場合、error@bar.comはReturn-Pathに設定される。
Return-PathはMTAで管理されるべきものなので大抵のメーラーは無視する。ただしSPAM判定などで利用される事例もあるようなので妥当なものを設定する必要はある。