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入ってます。
です。
-
category:
- ruby