Linuxを日常的に使う実験ブログ

Debian 9にMailCatcherを導入する

 2018-11-29

 Debian

こんにちは。今回のテーマは『Debian 9にMailCatcherを導入する』です。筆者は現在とあるwebサービスを開発中でして、その際にローカルネットワークでDebian 9(strech)にてサーバーを立てて作業をしています。今回はDebian 9にmailcatcherを導入しtelnetを用いてテストするところまでを記事にしたいと思います。 [adsense02] 【目次】 MailCatcherとは? 準備 mailcatcherのインストール 起動スクリプトの作成 送信テスト

MailCatcherとは?

今回導入するmailcatcherはメールの送信テストを行うためのツールです。web系のサービス開発で「実際にはメール送信したくないけど、送信したことにして内容を確認したい!」という場面は多くあると思います。mailcatcherはそんな要求に答えてくれる擬似smtpと送信メールを表示するwebインターフェースを兼ね備えた優れものです。ruby製でありgemからインストールすることが出来ます。公式ページはコチラです。 mailcatcherをデフォルトの設定で起動すると疑似smtpサーバーと参照用のweb画面が以下のポートで機能するようになります。

smtp: port 1025 ウェブ画面: port 1080

尚、ポートやIPは起動オプションで変更可能です。以下はmailcatcherのhelpオプションで出力されるUsageです。

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

準備

rubyとgemの準備

まずはrubyが入っていることを確認します。最小限のパッケージしかインストールしていない環境ですとrubyが入っていない場合もあります。以下コマンドで確認しておきましょう。

ruby —version

バージョンが表示されればOKです。 rubyのパッケージマネージャーgemを用いてインストールしますが、このgemが機能しているかここで確認しておきます。既にgemを用いてライブラリ等をインストール出来ている方は飛ばして下さい。

gem search mailcacher

mailcatcherが見つかればOKです。

ビルドに必要なパッケージの導入

次にmailcatcherを導入するのに必要なパッケージをインストールします。以下コマンドを実行します。

sduo apt-get install ruby-dev libsqlite3-dev

これで準備は終わりました。ではいよいよmailcatcherのインストールに入っていきます。

mailcatcherのインストール

前述の通りmailcatcherはgemでインストールしていきます。以下のコマンドを実行します。

$ sudo gem install mailcatcher

筆者の場合は管理権限で実行するためsudoをつけて実行しました。root権限で実行する場合にはsudo不要です。 インストール後、以下コマンドで起動することが出来ます。

$ mailcatcher —ip=0.0.0.0

mailcatcherをインストールするという本題は終えてしまったので残りはオマケですが、少々お付き合い下さい。

起動スクリプトの作成

debianで現在採用されているinitシステムはsystemdなのでsystemdでmailcatcherを起動を管理出来るようにします。/etc/systemd/systemディレクトリ下に起動スクリプトを配置します。

$ sudo vim /etc/systemd/system/mailcatcher.service

上記ではエディタとしてvimを使用していますが、お好みのエディタで編集して下さい。 以下のようなスクリプトを作成しました。

\[Unit\]
Description=Mailcatcher service

\[Service\]
ExecStart=/bin/bash -c 'mailcatcher -f --ip=0.0.0.0'

\[Install\]
WantedBy=multi-user.target

ではsystemdで起動してみましょう。

$ sudo systemctl enable mailcatcher.service $ sudo systemctl start mailcatcher.service

enableにしておくとシステムの起動時に自動でmailcatcherが起動されます。単順に起動したいだけであればsystemctlでstartするだけでOKです。 では、起動したmailcatcherをウェブブラウザで確認してみましょう。mailcatcherのweb画面は1080ポートを使用するのでhttp://localhost:1080にウェブブラウザでアクセスします。以下の図のような画面が出ていればOKです。

送信テスト

せっかくインストールしたのでmailcatcherにて立てた疑似smtp(ポート番号1025)に送信したメールがmailcatcherで受信できるか確認してみましょう。 モダンなメールソフトを使い慣れている方は驚かれるかも知れませんが、シンプルにtelnetコマンドを使用してメール送信テストをしてみます。 以下はtelnetを使用してポート1025の疑似smtpにメールを送信している際のコンソール出力内容です。あくまでテストなので他の方法でもメールが送信できれば問題ありません。

kuro@debian:~$ telnet localhost 1025
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^\]'.
220 EventMachine SMTP Server
helo localhost
250 Ok EventMachine SMTP Server
mail from: kuro@example.com
250 Ok
rcpt to: siro@example.com
250 Ok
data
354 Send it

subject: TEST        

this mail is test.
.
250 Message accepted
quit
221 Ok
Connection closed by foreign host.
kuro@debian:~$ 

ではメールが送信できたか参照画面で確認してみましょう。

最後に

メール送信を擬似的に行うことができて、送信内容をwebブラウザで手軽に確認することが出来るmailcatcherは多くのweb開発者に福音をもたらしたのではないでしょうか。今回はオンプレミス環境への導入でしたが、docker化しておいて手軽に立ち上げて使うという使い方も有用だと思います。docker化もrubyベースで簡単に作れると思います。 本記事が皆様のお役に立てれば幸いです。 【関連記事】 Debian 8 JessieをCUIで起動する方法 [adsense]