45
67

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

postfixでのメール送信環境を自力構築する

Last updated at Posted at 2017-02-14

はじめに

 私物WindowsPCでのHyper-V+DockerでのPHP開発環境構築がうまくいったので、業務で使っているMacの開発環境もVagrantからDockerに移行させようと画策していました。
私物PCでのHyper-V+Docker環境構築で散々苦しめられたので、構築そのものは全然楽だったのですが。。

 なんとDocker公式のCentOS7イメージにはsendmailはおろかpostfixも入っていない!!
Vagrantには入っていたのに!!
PHPMailerのsend()が失敗するので、なんでだろうとログを調べてみて判明したことでした。

というわけで、postfixでのメール送信環境(受信は今回やらない)構築のまとめを。
…sendmailは面倒そうなので、postfixで。。

一応Dockerタグ付けてはいますが、Dockerに限らず汎用的に使えるかと思います。

※以下はCentOS7を前提とします。

postfix導入まで

http://www.unix-power.net/centos7/postfix.html
めちゃくちゃここにお世話になりました。

インストール

作業ユーザーはもちろんroot。
docker execしてる場合は最初からrootかと思います。

標準リポジトリからinstall可能なので、yum install。

# yum -y install postfix

# ls /etc/ | grep postfixしてpostfixが表示されていればインストール完了。
インストール完了したかどうかの確認には、# rpm -qa | grep postfixの方が良いですね。
ご指摘頂いた@miyuさん、有難うございます。

設定

 /etc/postfix/にあるmain.cfというファイルが設定ファイルです。
こいつに編集を加えていきます。

上記のサイトから編集箇所を引用させて頂きます。
引用注: 下記の項目を検索して、都度下記のように書き換えていきます。

/etc/postfix/main.cf
myhostname = mail.unix-power.net
mydomain = unix-power.net
myorigin = $myhostname
#inet_interfaces = localhost
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.0.0/16, 127.0.0.1
home_mailbox = Maildir/

引用元: http://www.unix-power.net/centos7/postfix.html

※もちろんmyhostnameや、mydomainなどは自分の値に書き換えてあげてください。
自分の場合は、私物で持っているドメインを設定してみました。

 smtpd_recipient_restrictionsは、既存のmain.cfには記載がありません。
ただ、明示的に設定しなくても、上記サイトに掲載されているルールが適用されるらしいので、今回は記載しませんでした。

ディレクトリの作成

メールの保存形式はMaildir形式が主流です。
Maildir形式では各ユーザのホームディレクトリに1通づつメールが溜まっていきます。
引用元: http://www.unix-power.net/centos7/postfix.html

ということなので、指定のフォルダを作成します。

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/

postfixを有効化して開始する

# systemctl enable postfix
# systemctl start postfix

テスト送信

 ここまでで送信自体は出来るようになっているはずなので、テスト送信をしてみます。
※ちなみに、Dockerの場合は予め25番ポートをexposeしておきます。

# sendmail 送信先メールアドレス

そうすると、#が消えて自由入力になります。
FromやToなどを設定します。

From: 送信元として設定したいメールアドレス
To: メールを送信したい先のメールアドレス
Subject: 件名
本文
本文
.

最終行の.を入力しEnterすると、メールが送信されます。
(.を打つまではメールの本文を入力出来る)

これが成功していれば、PHPMailerもちゃんと動きます。(確認済み)

最後に

 postfixやsendmailがそもそもCentOSの標準機能だと思っていたので、結構メール送信1つ取っても大変なのだと思いました。。。
Vagrantはわざわざ入れてくれているのか。。。?

45
67
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
45
67

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?