メール送信のテストする為の環境構築した際にてこずったので、同じミスをしないようにブログに投稿します。
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です。
参考サイト
全てのドメイン宛のメールを受信する – ngの日記.
追記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なのでそこを変えても出来そうです。
※未検証