IMAP経由でメールを取得しているコードのテストしたい

postfix version 2.11.0
ruby 2.2.3p173

テスト実行時に実際にlocalhostのログインユーザ宛へメールを送信してIMAPで取得する、という流れです。

doveoct

smtpにはpostfixを、imapにはdovecotを使います。
dovecotのインストール手順は下記へ。
https://github.com/jiikko/dovecot-install-manual-for-OSX

dovecotは、↑のREADMEのように設定するとログインユーザのホームディレクトリに掘られたMaildirを取りに行ってくれます。static認証なので楽ちん。

postfix

postfixは、ログインユーザへの配送をホームディレクトリに書き込んでくれるように設定をします。

mydestination = $myhostname, localhost.$mydomain, localhost
home_mailbox = Maildir/

このままだと /var/spool/mailあたりにMailbox形式で配送するらしく、上記で設定しているdovecotが取りに行くホームディレクトリに配送するようにお願いします。
home_mailbox がコメントアウトされているのでアンコメントするとホームディレクトリに配送してくれます。

spec

`echo 'test_body' | mail -s test_subject koji@localhost`
sleep(5)
# メール取得処理
expect(mail).to eq foo

Mailライブラリ経由だとconfig/environmetens/test.rbの影響で実際にはメールが送信されないはずなのでshellから送信しました。(雑)
smtpが実際に配送が終わるまで待機しないとメールを確認できないのでsleep入ってます。

です。