--> -->
メール配信する処理を作成するときに困るのが配信先です。
通常は自分宛にメールしますが、それだと自分のメールボックスがゴミだらけになりますし、自分宛にしか送れませんし、開発中のバグで他の(本番用の)メールアドレスに送ってしまうと大変です。
そこで欲しくなるのが、SMTPのモックです。
MailDevはそんな悩みを一気に解消してくれます。
SMTP機能とWEBメーラーの機能を持っているので、完全に閉じた環境でメール配信をテストすることができます。
MailDevはnodejs上で動きます。
まずはnodejsのインストール。
こちらのページの通りにインストールします。
$ curl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -
$ sudo yum -y install nodejs
そしたら次はMailDev。
$ sudo npm install -g maildev
これでもう完了。設定ファイルも何もありません。
早速起動。
$ maildev
MailDev app running at 0.0.0.0:1080
MailDev SMTP Server running at 0.0.0.0:1025
^Z
デフォルトではローカルでポートをlistenします。
外からブラウズできるよう、HTTPのアドレスを指定します。
ついでに実際の配信も出来るように本当のsmtp(下記ではlocahost)も指定しておきます。
$ maildev --outgoing-host localhost --web-ip IPアドレス
smtpで話しかけてみます。
$ telnet localhost 1025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 dns.hogehoge.jp ESMTP
HELO example.jp
250 OK: Nice to meet you [127.0.0.1]
MAIL FROM: test@example.jp
501 Error: Bad sender address syntax
MAIL FROM:<test@example.jp>
250 Accepted
RCPT TO:<address@example.jp>
250 Accepted
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: hello maildev
This is a test mail.
.
250 Message queued as yn8NHZd4
^]
telnet> quit
Connection closed.
ブラウザでWeb UIへアクセスしてみます。
アクセス先は http://IPアドレス:1080/
おおー、なんか来てますね。
早速メールを開いてみると、
中身も見れた(あたりまえ(笑))。
リレー用SMTPの引数も指定しているので、Relayアイコンが有効です。クリックすると確認ダイアログが出ます。
[OK]を押すと配信完了のダイアログが出て配信完了。
本当にメールが来ているので、メーラーで確認すればOKです。
このWeb UIの白眉はテスト用のメニューがちゃんと揃っているところ。
Displayメニューでは、HTML形式、テキスト形式、ヘッダー、元データを確認できます。
Viewportメニューでは、スマホ用、タブレット用、PC用の見栄えを確認できます。
さて、遊んでばかりいてもしょうが無いので(笑)、自動起動設定を行います。
init.dに起動ファイルを作成。
#!/bin/sh # # maildev init file for starting up the maildev daemon # # chkconfig: - 20 80 # description: Starts and stops the maildev daemon. # Source function library. . /etc/rc.d/init.d/functions name="maildev" exec="/usr/bin/$name" pidfile="/var/run/maildev/maildev.pid" MAILDEV_OPTIONS="--outgoing-host localhost --web-ip IPアドレス" lockfile=/var/lock/subsys/maildev start() { [ -x $exec ] || exit 5 echo -n $"Starting $name: " daemon "$exec $MAILDEV_OPTIONS" & retval=$? echo [ $retval -eq 0 ] && touch $lockfile [ $retval -eq 0 ] && ps ax | grep node.*maildev | awk '{print $0}' | tail -n 1 > $pidfile return $retval } stop() { echo -n $"Stopping $name: " killproc -p $pidfile $name retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { stop start } reload() { false } rh_status() { status -p $pidfile $name } rh_status_q() { rh_status >/dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 restart ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}" exit 2 esac exit $?
chkconfigで登録。
$ sudo chkconfig --add maildev
$ chkconfig maildev on
これで完了〜。
念のためiptablesなどで1080へアクセス出来る人を絞ってくださいね。
紹介するまでもないぐらい超カンタンです。
config/mail.phpのポートを1025にするだけ。
こんな素敵なソフトなのに日本語の情報ってこれしか無いんじゃないだろうか。感謝。
maildev (SMTP mock server) を使ってハイパーメール開発
このmaildevはnodejsベースですので、Windowsでもnodejsが入っていれば動きます。
nodejsのインストールはググればいくらでも出てくるので適当に。
まずはnpmが入っていることを確認。
C:\Users\atsumi>npm Usage: npm <command> where <command> is one of: access, add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, dist-tag, dist-tags, docs, edit, explore, faq, find, find-dupes, get, help, help-search, home, i, info, init, install, issues, la, link, list, ll, ln, login, logout, ls, outdated, owner, pack, ping, prefix, prune, publish, r, rb, rebuild, remove, repo, restart, rm, root, run-script, s, se, search, set, show, shrinkwrap, star, stars, start, stop, t, tag, team, test, tst, un, uninstall, unlink, unpublish, unstar, up, update, upgrade, v, verison, version, view, whoami npm <cmd> -h quick help on <cmd> npm -l display full usage info npm faq commonly asked questions npm help <term> search for help on <term> npm help npm involved overview Specify configs in the ini-formatted file: C:\Users\atsumi\.npmrc or on the command line via: npm <command> --key value Config info can be viewed via: npm help config npm@2.14.4 C:\Program Files\nodejs\node_modules\npm
ちゃんと入っています。
早速インストール。
C:\Users\atsumi>npm install -g maildev npm WARN deprecated mimelib@0.2.19: This module is deprecated C:\Users\atsumi\AppData\Roaming\npm\maildev -> C:\Users\atsumi\AppData\Roaming\npm\node_modules\maildev\bin\maildev maildev@0.14.0 C:\Users\atsumi\AppData\Roaming\npm\node_modules\maildev ├── open@0.0.5 ├── async@1.5.1 ├── smtp-server@1.4.0 ├── commander@2.9.0 (graceful-readlink@1.0.1) ├── simplesmtp@0.3.35 (xoauth2@0.1.8, rai@0.1.12) ├── smtp-connection@2.3.1 (nodemailer-shared@1.0.4) ├── express@4.13.4 (escape-html@1.0.3, array-flatten@1.1.1, cookie-signature@1.0.6, utils-merge@1.0.0, merge-descriptors@1.0.1, vary@1.0.1, content-type@1.0.2, methods@1.1.2, fresh@0.3.0, cookie@0.1.5, range-parser@1.0.3, content-disposition@0.5.1, path-to-regexp@0.1.7, parseurl@1.3.1, etag@1.7.0, depd@1.1.1, qs@4.0.0, on-finished@2.3.0, finalhandler@0.4.1, debug@2.2.0, proxy-addr@1.0.10, send@0.13.1, type-is@1.6.15, accepts@1.2.13, serve-static@1.10.3) ├── mailparser@0.5.3 (mime@1.3.6, mimelib@0.2.19, uue@3.1.0, encoding@0.1.12) ├── wildstring@1.0.8 └── socket.io@1.4.5 (debug@2.2.0, has-binary@0.1.7, socket.io-parser@2.2.6, socket.io-adapter@0.4.0, engine.io@1.6.8, socket.io-client@1.4.5)
なにやらワーニングが出ていますがとりあえず入ったようです。
そして起動。
C:\Users\atsumi>maildev MailDev app running at 0.0.0.0:1080 MailDev SMTP Server running at 0.0.0.0:1025
あとは前述の通り1025にtelnetして、1080にブラウザで接続して動作確認すれば完了〜。
Tweet