【Linux】開発用SMTPサーバ ~ MailCatcher編 ~

■ はじめに

MailCatcher について設定する

【1】MailCatcher

* 開発などのダミーSMTPサーバ

1)公式サイト

https://mailcatcher.me/

【2】設定手順

0)設定環境

 * OS : CentOS7

1)MailCatcher のインストール

[1] 必要なライブラリをいれておく

sudo yum update

sudo yum install -y gcc gcc-c++
sudo yum install -y ruby-devel rubygems
sudo yum install -y sqlite-devel

[2] MailCatcher をインストール

sudo gem install mailcatcher

# アンインストールは、
#  => sudo gem uninstall mailcatcher

[3] 確認

mailcatcher --help

Usage: mailcatcher [options]
        --ip IP                      Set the ip address of both servers
        --smtp-ip IP                 Set the ip address of the smtp server
        --smtp-port PORT             Set the port of the smtp server
        --http-ip IP                 Set the ip address of the http server
        --http-port PORT             Set the port address of the http server
        --no-quit                    Don't allow quitting the process
    -f, --foreground                 Run in the foreground
    -b, --browse                     Open web browser
    -v, --verbose                    Be more verbose
    -h, --help                       Display this help information

2)MailCatcher の起動

[1] 起動コマンドを実行する

mailcatcher ip 【IPアドレス】 --http-port 【ポート番号】 --smtp-port 【SMTPポート番号】」を実行

~【例】~~~~~~~~
mailcatcher ip 192.168.XX.XX --http-port 28080 --smtp-port 20025
~~~~~~~~~~~~

※ 「mailcatcher」だと、smtp「1025」http「1080」で起動される

==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080

[2] 確認

# テストメールを送る
echo "This is a test mail." | mail -s "[Title] Test Mail" -S "smtp=smtp://localhost:20025" -r from@confirm.com to@confirm.com

# HTTPサーバにアクセス
curl http://192.168.XX.XX:28080

# GUIであれば、ブラウザで「http://192.168.XX.XX:28080」にアクセスし
# MailCatcherのサイトが表示されればOK

3)【任意設定】 外部アクセス可能にする

# ポート 28080 Open
sudo firewall-cmd --add-port=28080/tcp --zone=public --permanent
# ポート 20025 Open
sudo firewall-cmd --add-port=20025/tcp --zone=public --permanent

sudo firewall-cmd --reload

# 確認
sudo firewall-cmd --list-all

4)【任意設定】Mailcatcherの自動起動

* systemd を使って、Mailcatcherを自動起動させる

[1] /etc/systemd/system 配下に、以下のMailCatcher.service を新規作成

sudo vi /etc/systemd/system/MailCatcher.service

[2] 以下のコマンドを入力し、サービスの自動起動ONにし、OS再起動

# 「which mailcatcher」で、mailcatcherのパスを調べる
which mailcatcher

# 今回は、「/usr/local/bin/mailcatcher」
# 以下『/etc/systemd/system/MailCatcher.service』の『ExecStart=/usr/local/bin/mailcatcher・・・』で使う

systemctl enable MailCatcher.service
systemctl is-enabled MailCatcher.service

# OS再起動
reboot

/etc/systemd/system/MailCatcher.service

[Unit]
Description=Mailcatcher Service
After=network.service

[Service]
Type=simple
ExecStart=/usr/local/bin/mailcatcher --foreground --ip 0.0.0.0 --smtp-port 20025 --http-port 28080

[Install]
WantedBy=multi-user.target

参考文献

https://wiki.rookie-inc.com/development/mailcatcher
https://erorr.org/217/
https://laravel10.wordpress.com/2015/02/23/mailcatcher%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E3%83%86%E3%82%B9%E3%83%88/
http://rriifftt.hatenablog.com/entry/2014/09/09/155055
http://tech.respect-pal.jp/mail_debug_with_mailcatcher/
http://www.d-wood.com/blog/2013/05/22_3674.html
gem について
http://qiita.com/pb_tmz08/items/269c43418894071dc0b1
Mailcatcherの自動起動
https://gist.github.com/jamiejackson/a195a97a1b9f20b2d179

関連記事

WindowsWindowsでの開発用SMTPサーバー ~ ダミーSMTPサーバ構築 ~
LinuxLinuxでの開発用SMTPサーバー [1] ~ FakeSMTP編 ~
Email送信に関する単体試験について
Java で、 Email を送るには... [1] ~ JavaMail / テキストメール編 ~