30
34

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 1 year has passed since last update.

vagrant postfix設定 ローカルからメール送信 (備忘録)

Last updated at Posted at 2015-07-20

vagrant postfix設定 ローカルからメール送信

◆やりたいこと
vagrantのローカル環境からgmail経由でメールを送信したい
ついでにmailtrap使っちゃおう

◆使用ツール

・vagrant
・postfix
・gmail
・mailtrap

mailtrapのアカウント取得

ここにアクセス、sign upしてアカウントを取得する。

image.png

何でも良いと思うがGoogleアカウントがあればそちらで取れる。
image.png

アカウントが取得出来たら「SMTP Setting」>「Integrations」で「postfix」を選択する。
一番下に表示される。

image.png

こんな感じ
image.png

とりあえずここまで設定したら次はvagrant側を調整

vagrant側の設定方法

※すでにvagrantでいろんなツールをインストールしている状態からスタート
※バックアップは取得した状態

現在のpostfixの確認

確認1
sudo rpm -qa | grep postfix

現在のpostconfの確認

確認2
/usr/sbin/postconf -a

現在のcyrus-saslの確認
(3つくらいしかないはずなので↓をインストールする)

インストール1
sudo rpm -qa | grep cyrus-sasl

その他必要なツールのインストール

インストール2
sudo yum -y install cyrus-sasl-md5 cyrus-sasl-plain

◆/etc/postfix/main.cfファイルの編集

vim
sudo vim /etc/postfix/main.cf

116行目 inet_interfaces = localhostを編集

vim
inet_interfaces = all

119行目 inet_protocols = allを編集

vim
inet_protocols = ipv4

mailtrapを使う場合

表示された設定を追加していく。
image.png

※なお、最後の起動方法はOSによって異なるので注意
自分の環境の場合は下で起動、再起動ができる。

Terminal
sudo systemctl start postfix.service
sudo systemctl restart postfix.service
sudo systemctl status postfix.service
sudo systemctl enable postfix.service

Gmailを使う場合

318行目 以下を追加

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

vim sasl_passwdファイル作成

設定2
[smtp.gmail.com]:587 example@gmail.com:パスワード
※Gmailパスワードは2段階認証のパスワードを使用

※/etc/postfixにて以下コマンド実行→sasl_passwdファイルをdb化
postmap sasl_passwd

※上記のmain.cfで余計な半角スペースなどが入っているとうまくビルドされない。

service postfix start(root権限で実行)

linux
service postfix start

mailコマンドでテストメールを送信

mailコマンド
[root@vagrant-centos65 postfix]# mail メールアドレス
Subject: test
test
.
EOT
[root@vagrant-centos65 postfix]#

送信結果

maillog
◆ログに「status=sent」と出ており送信OK

Jul 20 14:47:36 vagrant-centos65 postfix/smtp[4148]: 7348665CEE: to=<taiti@stone-rise.com>, relay=smtp.gmail.com[74.125.23.109]:587, delay=4.3, delays=0.05/0.28/2.2/1.8, dsn=2.0.0, status=sent (250 2.0.0 OK 1437371256 a10sm19321215pdn.57 - gsmtp)
Jul 20 14:47:36 vagrant-centos65 postfix/qmgr[4142]: 7348665CEE: removed

エビデンス

2015-07-20_145542.png

今後の課題

avastが警告を出しているので今後はそちらを外すようにする。

◆ハマったところ

postfix main.cfファイルの設定で
余計な部分を編集してしまったのだと思いますがメールが送信できませんでした。
おそらくinet_interfacesこの部分の設定が余計だったのかと。。。
詳細はわかりませんが。。。

※念のため以下ログを添付しておきます。

maillog
Jul 18 14:00:59 localhost postfix/pickup[21524]: 4BFB920060E: uid=0 from=<root>
Jul 18 14:00:59 localhost postfix/cleanup[21529]: 4BFB920060E: message-id=<20150718140059.4BFB920060E@localhost.localdomain>
Jul 18 14:00:59 localhost postfix/qmgr[21525]: 4BFB920060E: from=<root@localhost.localdomain>, size=447, nrcpt=1 (queue active)
Jul 18 14:00:59 localhost postfix/error[21531]: 4BFB920060E: to=<test@hoge.com>, relay=none, delay=0.03, delays=0.02/0/0/0, dsn=5.0.0, status=bounced ([smtp.gmail.com]:587)
Jul 18 14:00:59 localhost postfix/cleanup[21529]: 505B0200631: message-id=<20150718140059.505B0200631@localhost.localdomain>
Jul 18 14:00:59 localhost postfix/qmgr[21525]: 505B0200631: from=<>, size=2248, nrcpt=1 (queue active)
Jul 18 14:00:59 localhost postfix/bounce[21532]: 4BFB920060E: sender non-delivery notification: 505B0200631
Jul 18 14:00:59 localhost postfix/qmgr[21525]: 4BFB920060E: removed
Jul 18 14:00:59 localhost postfix/local[21534]: 505B0200631: to=<root@localhost.localdomain>, relay=local, delay=0.01, delays=0/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Jul 18 14:00:59 localhost postfix/qmgr[21525]: 505B0200631: removed

php.iniの編集箇所

php.ini
336行付近:expose_php = On → expose_php = Off

※phpの使用メモリ設定
396行付近:memory_limit = 126M → memory_limit = 2M

※エラーLevelの設定 
453行付近:error_reporting = E_ALL 追加

※確かエラーの表示
469行付近:display_errors = Off → display_errors = On

※エラーログの出力(apacheの設定も必要のようです)
577行付近:error_log = syslog → error_log = /var/log/php.log

※画像の一時アップロードディレクトリ指定
789行付近:upload_tmp_dir = /var/www/html/php/tmp/

※画像ファイルアップロードマックサイズ
791行付近:upload_max_filesize = 2M → upload_max_filesize = 2000M

※画像ファイルのアップロード設定 複数アップの設定が可能(とりあえず50ファイルとしてみます。)
794行付近:max_file_uploads = 20 → max_file_uploads = 50

※時刻合わせ(タイムゾーンの設定)
869行付近:date.timezone = Asia/Tokyo

※postfixとの連携設定(gmail経由)
950行付近:SMTP = localhost → SMTP = smtp.gmail.com

※ポート変更
952行付近:smtp_port = 25 → smtp_port = 587

※送信するメールアドレスの設定(メールアドレスは任意で設定)
959行目付近:sendmail_from = hoge@hoge.com 追加

※メールログの設定はなし(/var/log/maillogを確認すればよい)

※自動でセッションを取得する設定(任意で設定 1 にすると自動的にセッションを取得する)
1376行付近:session.auto_start = 0 

※文字コードの設定 基本的にコメントアウトをはずす(UTF8が基本)
1632行目付近:mbstring.language = Japanese
1638行目付近:mbstring.internal_encoding = UTF-8
1642行目付近:mbstring.http_input = auto
1647行目付近:mbstring.http_output = UTF-8
1655行目付近:mbstring.encoding_translation = On
1660行目付近:mbstring.detect_order = auto
1665行目付近:mbstring.substitute_character = none;
1676行目付近:mbstring.func_overload = 0

以下参考担った記事

PHPの使用メモリに関して資料

expose_phpの設定について説明

errorlogの出力について参考

errorlogのLevel設定

errorLevelの種類

30
34
0

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
30
34

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?