OSX
postfix
letter_opener
post_office

開発環境から外部へテストメールが飛ばないようにする

More than 1 year has passed since last update.

OSX/Linux の開発環境などからメール送信のテストをしたい場合などに、

rails なら letter_opener とか post_office が有名ですが、 gem が使えない環境(rails プロジェクト以外など)で、

どうしてもテストでメール送信せざるおえない場合に、 postfix の設定を書き換えて外部へのメールをすべてテスト用メールアカウントに送信する方法です。

例) hoge@example.co.jp 宛のメールを全て test@example.com 宛として送信する


前提条件

Postfix 2.2 以上

example.com と example.co.jp は、実際に使ってるドメインに変更する。


Postfix の設定

@example.com 以外のメアドをすべて test@example.com に置換して送信する

sudo vim /etc/postfix/allmails_to_example.txt

!/.*@example.com$/ test@example.com

sudo vim /etc/postfix/main.cf

mail.cf に下記を追記する

local_header_rewrite_clients = static:all

# envelope_recipient: 実際に使用される送信先
# header_recipient: 見た目の送信先(送信先に使用されるわけではない)
canonical_classes = envelope_recipient, header_recipient
# メール表示上の宛先(header_recipient)だけは、置換しないで偽装する場合
#canonical_classes = envelope_recipient
canonical_maps = regexp:/etc/postfix/allmails_to_example.txt


再起動

sudo postfix stop

sudo postfix start


送信テスト

sendmail でローカルから hoge@example.co.jp 宛に送信してみる。

$ sendmail hoge@example.co.jp

From: info@example.co.jp
To: hoge@example.co.jp
Subject: test

test
.

hoge@example.co.jp -> test@example.com に置換されて届いているか確認する。

届いて居なかったら /var/log/mail.log あたりに、fail が出ていないか確認する。