エラーメールを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判定などで利用される事例もあるようなので妥当なものを設定する必要はある。