vagrant postfix設定 ローカルからメール送信
◆やりたいこと
vagrantのローカル環境からgmail経由でメールを送信したい
ついでにmailtrap使っちゃおう
◆使用ツール
・vagrant
・postfix
・gmail
・mailtrap
mailtrapのアカウント取得
ここにアクセス、sign upしてアカウントを取得する。
何でも良いと思うがGoogleアカウントがあればそちらで取れる。
アカウントが取得出来たら「SMTP Setting」>「Integrations」で「postfix」を選択する。
一番下に表示される。
とりあえずここまで設定したら次はvagrant側を調整
vagrant側の設定方法
※すでにvagrantでいろんなツールをインストールしている状態からスタート
※バックアップは取得した状態
現在のpostfixの確認
sudo rpm -qa | grep postfix
現在のpostconfの確認
/usr/sbin/postconf -a
現在のcyrus-saslの確認
(3つくらいしかないはずなので↓をインストールする)
sudo rpm -qa | grep cyrus-sasl
その他必要なツールのインストール
sudo yum -y install cyrus-sasl-md5 cyrus-sasl-plain
◆/etc/postfix/main.cfファイルの編集
sudo vim /etc/postfix/main.cf
116行目 inet_interfaces = localhostを編集
inet_interfaces = all
119行目 inet_protocols = allを編集
inet_protocols = ipv4
mailtrapを使う場合
※なお、最後の起動方法はOSによって異なるので注意
自分の環境の場合は下で起動、再起動ができる。
sudo systemctl start postfix.service
sudo systemctl restart postfix.service
sudo systemctl status postfix.service
sudo systemctl enable postfix.service
Gmailを使う場合
318行目 以下を追加
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ファイル作成
[smtp.gmail.com]:587 example@gmail.com:パスワード
※Gmailパスワードは2段階認証のパスワードを使用
※/etc/postfixにて以下コマンド実行→sasl_passwdファイルをdb化
postmap sasl_passwd
※上記のmain.cfで余計な半角スペースなどが入っているとうまくビルドされない。
service postfix start(root権限で実行)
service postfix start
mailコマンドでテストメールを送信
[root@vagrant-centos65 postfix]# mail メールアドレス
Subject: test
test
.
EOT
[root@vagrant-centos65 postfix]#
送信結果
◆ログに「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
エビデンス
今後の課題
avastが警告を出しているので今後はそちらを外すようにする。
◆ハマったところ
postfix main.cfファイルの設定で
余計な部分を編集してしまったのだと思いますがメールが送信できませんでした。
おそらくinet_interfacesこの部分の設定が余計だったのかと。。。
詳細はわかりませんが。。。
※念のため以下ログを添付しておきます。
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の編集箇所
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