PostfixでVagrantのWordPressからメールを送信できるように設定する Ubuntu14.04


前回WordPressをLAN内の別のパソコンから確認できるように設定しましたが、これだけだと設置したWordPressからメールが届きません。

メールの動作確認もしたいので、今回はPostfixをインストールしてVagrantに設置したWordPressからメールを送信する方法をまとめていきます。

postfixをインストール

Vagrantにログインして、まずはpostfixをインストールしていきます。

vagrant ssh
sudo apt-get install postfix

Postfix Configurationの画面が出てくるので、No configrationを選択し、OKします。

SASL2をインストールする

次にsmtp認証を実装するためsaslをインストールします。

sudo apt-get install sasl2-bin

master.cfを編集

次にpostfixのmaster.cfを編集していきます。

sudo vi /etc/postfix/master.cf

master.cfの一番下に記述を追加します。

submission inet n - n - - smtpd
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_etrn_restrictions=reject

main.cfを編集

次にmain.cfを編集していきます。

sudo vi /etc/postfix/main.cf

もしmain.cfが見つからない場合は、以下のコマンドでmain.cf.distをコピーして設定していきます。

sudo cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf

myhostnameにはメールサーバーのFQDN名を指定します。
mydomainにはドメイン名を指定します。

僕はmyhostnameを「mail.example.jp」mydomainを「example.jp」のように設定しました。

ただしすでに存在するドメインと重複は避けたほうが良いようなので独自ドメインを持たない場合は 「hogehoge」 などピリオドがないドメイン名を指定したほうが良いようです。

default
myhostname = mail.example.com
mydomain = example.jp

次に以下の行を書き換えます。

#inet_interfaces = all

以下のようにコメントアウトし「local」に書き換えます。

inet_interfaces = localhost

mydestinationを以下のように設定。

mydestination = $myhostname,localhost.localdomain, localhost.$mydomain, localhost

各path等が空なので以下のように設定。

sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /etc/postfix
readme_directory = /usr/share/doc/postfix

さらに末尾に以下の記述を追加します。

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp-auth-passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_use_tls = yes
relayhost = [smtp.gmail.com]:587

smtp-auth-passwdファイル作成

SMTP送信をするための設定ファイルをviで作成していきます。
GmailのSMTPとアカウント名パスワードを設定します。
二段階認証を設定している場合はアプリ固有のパスワードを生成し設定していきましょう。

アプリ固有のパスワードは4文字毎にスペースが入った状態で表示されますが、スペースは不要です。

vi /etc/postfix/smtp-auth-passwd

viで開いたら以下を記述して保存します。アカウント名、パスワードは個別で指定して下さい。

[smtp.gmail.com]:587 Googleアカウント名@gmail.com:パスワード

postfixで認識できるようにハッシュ形式に変換していきます。

sudo postmap /etc/postfix/smtp-auth-passwd

パスワードの情報が記述されているので、smtp-auth-passwdにroot権限がないとアクセスできないように設定していきます。

sudo chown root:root /etc/postfix/smtp-auth-passwd
sudo chmod 600 /etc/postfix/smtp-auth-passwd
sudo chown root:root /etc/postfix/smtp-auth-passwd.db
sudo chmod 600 /etc/postfix/smtp-auth-passwd.db

設定ができたらpostfix再起動します。

sudo service postfix restart

これで、メールが送信されるように設定できました。
設置したWordPressからパスワードの再発行などを行いメールが送信されるか確認してみましょう。

作業中にはまったエラー

うまくいかない時は以下のコマンドでpostfixのログを確認しましょう。
ログにUsername and Password not accepted などとログに記載されてれば、ユーザー名とパスワードの設定が誤っています。

cat /var/log/mail.log

postfix start 時に以下のようなエラーが出る場合は、sendmail_pathを指定してねという意味

string length 0 < 1: sendmail_path =

参考サイト

FQDNなどについては以下のサイトが参考になりました。
Postfix から Gmail 経由でメールを送る
SMTP-AUTHを使って上位メールサーバへ転送する

[wiki.princo.org]
Postfixでsmtp-authの外部smtpにメールをリレーする方法(OP25B対策)

Postfixで、GMAIL経由でメールを送る(OP25B対策)

送信サーバー(Postfix)の構築

UbuntuでGmailを使ってメール送信してみる

[Ubuntu]メールサーバ構築(Postfix)

メールサーバー構築(Postfix Dovecot)

関連記事

VagrantにLAN内の別のパソコンからSSHでアクセスする方法

NFSを使ってLAN内の別のパソコンからウェブページやWordPressを確認できるようにする

コメントを残す