Vagrantで構築したCentOSで開発する メール送信テスト環境設定

  • このエントリーをはてなブックマークに追加

メール送信のテストする為の環境構築した際にてこずったので、同じミスをしないようにブログに投稿します。

Vagrantについては、昨日書いたエントリーの通りとなります。

suusuke – blog – Vagrantで構築したCentOSで開発する.

目次

  1. Postfixインストール・設定
  2. Dovecotインストール・設定
  3. 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.inisendmail_pathを変更するだけで使えるようになるようです。
※未検証

追記2

試してないけど、synced_folderの書き込めない件は、Vagrantfileの設定のグループを変更するれば出来そう。もしくは、dmode(ディレクトリのパーミッション?)は777になってましたが、fmode(ファイルのパーミッション?)が666なのでそこを変えても出来そうです。
※未検証

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

ads

コメントを残す

*