mailcatcher をインストールして PHP で使うまで

mailcatcher

「開発環境とかでメール送信テストしたいけど、実際に送信するのはちょっと・・・」*1

そんなときにこの MailCatcher

ダミーのSMTPサーバーと、そのWEBメールインターフェースを提供してくれる。詳細はぐぐって、どうぞ。

今回はこいつをインストールして PHP で使うまでをメモった。

インストール手順

Ruby gem の環境を作る

今回の例は CentOS + yum だが、各自お好きな方法でかまわない。rbenv とか。

# yum install ruby ruby-devel rubygems sqlite sqlite-devel
# gem install mailcatcher

PHPの設定変更

※php.ini直接でもいいけど
# vi /etc/php.d/mailcatcher.ini    

sendmail_path = "/usr/bin/env catchmail"

※WEBサーバー再起動
# /etc/init.d/httpd restart

mailcatcher起動

# mailcatcher

Vagrant等で使う場合、mailcatcher の WEBインターフェースを使うには明示的にIPアドレスを指定してやらないと都合が悪い。

# mailcatcher --http-ip 192.168.33.10

仕上げ

mailcatcher で使うポート(1080, 1025)を開ける。自分の環境に合った方法で。

【例:コマンドで直接変更する場合】
# iptables -A INPUT -p tcp --dport 1080 -j ACCEPT
# iptables -A INPUT -p tcp --dport 1025 -j ACCEPT
# /etc/init.d/iptables save
# /etc/init.d/iptables restart
【例:chef-cookbook iptables のテンプレートに追記する場合】
# mailcatcher
-A FWR -m tcp -p tcp --dport 1080 -j ACCEPT
-A FWR -m tcp -p tcp --dport 1025 -j ACCEPT

あとは、PHPアプリ側で使うメール送信ポートに 1025 (mailcatcherのデフォルト設定)を指定すれば OK 。

WEBインターフェースは

http://localhost:1080

にアクセス。またはIPアドレスを明示的に指定した場合は以下のようになる。

http://192.168.33.10:1080

以上

注意

mailcatcher コマンドを叩くたびに新しいプロセスで起動しちゃうので、オプションを指定しなおしたい時などは、プロセスを探して kill してから。

*1:2017-05-01 追記: 現在も結構参照されているこの記事ですが、用途によっては mailtrap.io を使うのがより簡単でオススメです。