開発用メールサーバーMailSlurperをmacにいれる


開発用メールサーバーMailSlurperをmacにいれる

Macには最初からpostfixが入ってますが開発時に本当にメール送られても困るので、メールが送ったことにされるけど実際のメールアドレスには送られない開発用のSMTPサーバーをいれたいと思います。
今回は適当に検索したら一番上にでてきたGo製の MailSlurper というのを入れてみます。
Windows、Mac、Linux対応でライセンスはMITとなっています。

感謝感謝

追記
メールの本文にマルチバイト文字が入っているとうまく表示されないっぽいです。。。
ツライ。

ダウンロード

こちらが公式サイト。

MailSlurper

こちらからダウンロードします。

ダウンロード

今回はMacに入れますのでMac用をダウンロード。
自分がダウンロードしたversionは 1.14.1 でした。

解凍

zipなので解凍します。

それだけ

設定の編集

readmeを読むとconfig.jsonを編集しろと書いてあるので開きます。

{
    "wwwAddress": "localhost",
    "wwwPort": 8080, // WEBページで送信されたメールを確認するためのポート
    "serviceAddress": "localhost",
    "servicePort": 8085,
    "smtpAddress": "localhost",
    "smtpPort": 2500, // メール送信に使うポート。普通は25だけど初期値は大きな値になってます
    "dbEngine": "SQLite",
    "dbHost": "",
    "dbPort": 0,
    "dbDatabase": "./mailslurper.db",
    "dbUserName": "",
    "dbPassword": "",
    "maxWorkers": 1000,
    "autoStartBrowser": false,
    "keyFile": "",
    "certFile": "",
    "adminKeyFile": "",
    "adminCertFile": "",
    "authenticationScheme": "",
    "authSecret": "",
    "authSalt": "",
    "authTimeoutInMinutes": 120,
    "credentials": {}
}

今回は特にいじる必要ないのでスルー。
ローカルで何かをあげていて、ポートがぶつかる場合は適宜ずらしてくださいね!

起動

ターミナルで起動します。

$ cd /path/to/解凍したディレクトリ
$ ./mailslurper

これで起動します。
ターミナルが開きっぱなしになり、ログなどが流れていきます。
終了したい場合は control + C で普通に落とせます。

確認ページをひらいてみる

ではmailsplurperを起動した状態で画面を確認してみましょう。
ブラウザに下記のような感じでアドレスを入力して開きます。

http://<wwwAddress>:<wwwPort>/

config.jsonを何も変更してなければ下記のアドレスでアクセスできるはずです。

http://localhost:8080/

ひらけましたかね?

メールの送信テスト

開発しているアプリでSmtpサーバーの設定をconfig.jsonに設定した感じにして送信してみてください。うまくいけばブラウザの確認画面をリフレッシュすると送ったメールが表示されているはずです。また、その際に本当の宛先にはメールは送信されてないことが確認できると思います。

もし何度リフレッシュしてもメールが確認できない場合はメールの送信に失敗している可能性があります。
起動時に使用したターミナルにエラーログが出ています。
ターミナルになんのログも出てない場合はそもそもmailsplurperのSmtpに到達できてないので開発しているアプリのSmtp設定を確認してください。

エラーのサンプル

fromを kotolingo_test にしたらメールアドレスの形式じゃないと怒られてしまいました。
(おなじプログラムでもpostfixだと送信できちゃうんだけども。。。)

ERRO[26798] Problem executing command                     command=SEND error="The provided email address, '<kotolingo_test>', is invalid" input="MAIL FROM:<kotolingo_test>" who="SMTP Worker 2"
ERRO[26798] Error executing command                       error="The provided email address, '<kotolingo_test>', is invalid" who="SMTP Worker 2"

こんな感じにエラーが出るのでもしうまくいかない場合はエラーログをチェックしてみましょう!

おわり

これで開発時に間違ってメールボムしなくてすみますね!
開発の最後には実際のSMTPサーバーで送信テストはしましょう〜