PR TIMESデザイナー&エンジニアブログ BREAK TIMES

PR TIMES Developer Blog(デザイナー&エンジニアによる開発者ブログ)

PR TIMES Developer Blog

当ブログは下記URLに移転しました。
https://developers.prtimes.jp/

Chefでメール送信開発環境をサクッと作る

こんにちは!エンジニアの落合です。

前回の記事で、メール送信機能における開発環境について書かせていただきました。
開発環境なので、基本的に毎回同じものを使います。chefのようなプロビジョニングが有効的です!
具体的な詳細は、前回の記事で確認していただければと思います。
今回は、Chefで簡単に送信開発環境をできるレシピを紹介したいと思います。

fileの配置

まずは、設定ファイルをあらかじめ取得しておいて、設定変更を行い、
files/default内に配置しておきます。
今回使用するファイルは以下の通りです。

  • aliases.regexp
  • transport_maps
  • main.cf
  • dovecot.conf
  • 10-mail.conf
  • 10-auth.conf

recipeの作成

それでは、recipeを作成したいと思います。
まずは、postfixを起動できる状態にして、postfixの設定を変更します。

service "postfix" do
    supports :status => true, :restart => true, :reload => true
    action [ :enable, :start ]
end

#postfixの設定を変更
cookbook_file "/etc/aliases.regexp" do
  source "aliases.regexp"
  mode "0644"
end
cookbook_file "/etc/postfix/transport_maps" do
  source "transport_maps"
  mode "0644"
end
cookbook_file "/etc/postfix/main.cf" do
  source "main.cf"
  mode "0644"
end

次にユーザーを作成して、受信できる状態にします。

## ID   catchall
## PASS catchall
user "catchall" do
    comment "catchall"
    home "/home/catchall"
    shell "/bin/bash"
    password "$1$ks.iXsX.$tTErfotf/Zg2n.0zZlFxl1"
    supports :manage_home => true
end

bash "catchallsetup" do
  cwd catpath
  code <<-EOH
    sudo su
    usermod -s /bin/false catchall
  EOH
  notifies :reload, 'service[postfix]'
end

最後に受信できるように受信サーバーの設定を設定を行います。

yum_package "dovecot" do
  action :install
end
cookbook_file "/etc/dovecot/dovecot.conf" do
  source "dovecot.conf"
  mode "0644"
end
cookbook_file "/etc/dovecot/conf.d/10-auth.conf" do
  source "10-auth.conf"
  mode "0644"
end
cookbook_file "/etc/dovecot/conf.d/10-mail.conf" do
  source "10-mail.conf"
  mode "0644"
end
directory "/home/catchall/mail/.imap/INBOX" do
  recursive true
  owner "catchall"
  group "catchall"
  action :create
end

最後に、dovecotを再起動すれば完璧です!

service "dovecot" do
  supports :status => true, :restart => true, :reload => true
  action [ :enable, :restart ]
end

これを行ったら、rainloop等のWEBメーラーツールを使用して、受信できるような環境を用意しましょう!
それに関しての手順は、前回の記事を参照して下さい!

メール送信機能における開発環境