メール送信のテストする為の環境構築した際にてこずったので、同じミスをしないようにブログに投稿します。
Vagrantについては、昨日書いたエントリーの通りとなります。
suusuke – blog – Vagrantで構築したCentOSで開発する.
目次
- Postfixインストール・設定
- Dovecotインストール・設定
- Hostから送受信テスト
Postfixインストール・設定
Postfixをインストールして、設定ファイルを変更します。
開発環境なので、メールが送れているかチェックしたいだけなので、全てのドメイン宛のメールをローカルの配送する用に設定します。
$ yum -y install postfix $ cp /etc/postfix/{main.cf,main.cf.org} $ vi /etc/postfix/main.cf # 全てのメールを受け取る inet_interfaces = all # ローカル配送で不明なユーザを拒否しない local_recipient_maps = # Maildir形式として保存するディレクトリを /usr/local/mail/ の下にユーザー毎に作成する mail_spool_directory = /usr/local/mail/ # ローカル配送で不明なユーザへのメールは maildev へ送る luser_relay = maildev # トランスポートマップを指定 transport_maps = hash:/etc/postfix/transport
トランスポートマップの設定
$ vi /etc/postfix/transport # 全てローカルに配送 * local: $ postmap /etc/postfix/transport
設定反映
$ /sbin/service postfix reload
Maildirの場所ですが、通常であれば、~/Maildir/となるのですが、/home/ディレクトリをホストにマウントしており、何度メールを送ってもnot permittedになってしまい、配送に失敗していたため、変更しました。
ただ、Vagrantfileでマウントの設定でユーザーは root パーミッションは 777 にしているつもりなのですが、ここは今後の課題ですね。
Nov 30 19:50:20 localhost postfix/local[5922]: 7D5656F026C: to=<maildev@mail.vagrant-centos59_64.localdomain>, relay=loc al, delay=0.17, delays=0.14/0/0/0.03, dsn=5.2.0, status=bounced (maildir delivery failed: create maildir file /home/mail dev/Maildir/new/1385808620.V15I7c25M679327.vagrant-centos59_64: Operation not permitted)
配送先ユーザーmaildevは予め追加しておきます。
$ useradd maildev $ passwd maildev
元々、sendmailもpostfix入っていないサーバーだったので、mtaの変更は必要ないですが、一応確認だけします。
$ /usr/sbin/alternatives --config mta 1 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/sbin/sendmail.postfix Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
Dovecotインストール・設定
Dovecotをインストールし、設定します。
各プロトコルを使えるようにと、PostfixでMaildirのパスを変更しているのでそこを設定します。
$ yum -y install dovecot $ cp /etc/{dovecot.conf,dovecot.conf.org} protocols = imap imaps pop3 pop3s mail_location = maildir:/usr/local/mail/%u
Dovecotは、本番環境に合わせて、1系をyumでそのままインストールしました。
Hostから受信テスト
telnetコマンドでメールを送ります。
$ telnet localhost 25 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.vagrant-centos59_64.localdomain ESMTP Postfix helo localhost 250 mail.vagrant-centos59_64.localdomain mail from: k.suke.suzuki@gmail.com 250 2.1.0 Ok rcpt to: test@test.com 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> subject: test てすとです。 . 250 2.0.0 Ok: queued as 6E27E6F026E quit 221 2.0.0 Bye Connection closed by foreign host.
HostにThunderbirdをインストール、アカウントを設定して受信確認できればOKです。
参考サイト
追記1
Mailcatcher for Drupal and other PHP-applications – The simple version.
vagrant mail で検索してたら、MailCatcherという、ruby製のSMTPサーバーが有ることを知りました。
これを使うと、メールを送信した内容がWEBブラウザで簡単に確認できるようになるようです。
PHPの場合は、php.iniのsendmail_pathを変更するだけで使えるようになるようです。
※未検証
追記2
試してないけど、synced_folderの書き込めない件は、Vagrantfileの設定のグループを変更するれば出来そう。もしくは、dmode(ディレクトリのパーミッション?)は777になってましたが、fmode(ファイルのパーミッション?)が666なのでそこを変えても出来そうです。
※未検証