開発用メールサーバでBCCが受け取れなくて悩む

Jamesで作った開発用メールサーバで、BCCが受け取れなくて悩みました。

原因は、受信した全てのメールを1つのアドレスにフォワードしているため、RCPTで複数のアドレスが指定されても1通にまとめられてしまうんじゃないかなと思います(たぶん)。


最初RailsのActionMailerを疑っていたので、BCCが設定される過程を追いました。せっかく調べたのでメモ。

  • base.rb perform_delivery_smtp(mail)
    • destinations = mail.destinations # このmail.destinationsにTO/CC/BCCが含まれる
  • tmail/facade.rb destinations(...) # destinationsの実装。
  • net/smtp.rb
    • sendmail → send_message → send0( from_addr, to_addrs ) # to_addrsでループ
    • getok(...) # ここらへんにプリント文をいれてSMTPのやり取りを出力した → Rails側には問題なさそう