LoginSignup
4
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-11-15

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

↑の正規表現で、@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 が出ていないか確認する。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4