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 を使うのがより簡単でオススメです。