開発用のメールサーバ mocksmtpd を gem にしてみた。

(2014/6/3 追記) MailCatcher がおすすめです。

(追記おわり)

が評判よかったので、気をよくしてgithubでgemを作ってみました。

インストール方法

$ gem sources -a http://gems.github.com
$ sudo gem install koseki-mocksmtpd

gem本体を最新版にしといたほうがいいかもしれません。

使い方

一番簡単な使い方。

# 設定ファイル、ディレクトリを作成。
$ mocksmtpd init

# コンソールモードで起動。
$ cd ./mocksmtpd
$ sudo mocksmtpd

initで設定ファイル(mocksmtpd.conf)と、log、inboxディレクトリを作成します。initの後ろにディレクトリを指定できます。

$ mocksmtpd init path/to/configdir

デーモンとして起動・終了する場合は、start・stopをつけてください。

# デーモンとして起動・停止。
$ sudo mocksmtpd start
$ sudo mocksmtpd stop

デフォルトではカレントディレクトリの ./mocksmtpd.conf を読み込みます。-fで設定ファイルを指定できます。

$ mocksmtpd -f /path/to/config/file start

initコマンドで生成される mocksmgtpd.conf の中身は以下のようになっています。YAML形式。

ServerName: mocksmtpd
Port: 25
RequestTimeout: 120
LineLengthLimit: 1024
Loglevel: INFO

LogFile: ./log/mocksmtpd.log
PidFile: ./log/mocksmtpd.pid
InboxDir: ./inbox
Umask: 2

LogFile、PidFile、InboxDirが相対パスの場合、設定ファイルが置かれたディレクトリを基準にします。

ポートがデフォルトの25の場合、root権限が必要です。メール受信時に生成されるHTMLファイルは、設定ファイルと同じuid/gidになります。

TODO

tmailに依存することにして、添付ファイルに対応しようかなと思ってます。

ライセンス

Rubyライセンスです。

sendmail.rb は、とみたまさひろさん、バリケンさん(id:muscovyduck)によって書かれたものです。素晴らしいライブラリをありがとうございます。

github

github初めて使いました。超べんり!gemとかzipとか勝手に作ってくれて。めんどくさいことが減るせいで更新が楽しくなる仕組みだった。

ローカルのCygwinにOpenSSHが入ってなくて苦労したのと、公開鍵の形式変換でちょっと詰まったかなー。あんまりgithubと関係ない。

鍵変換は毎回どれが正しいのかわからなくて悩みます。

あと、gemspecファイルの生成で何を使ったらいいのかでもかなり悩みました。最終的に、

を参考にcutagemで作成しました。ありがとうございましたー。