ローカル環境で開発してる時に
VirtualBox から Gmail を使ってお手軽にメール送信を行う設定。
用意するもの
- Gmail アカウント
- Postfix と openssl などはインストール済みを前提
postfix が起動しているか確認
$ systemctl status postfix.service -l
MTA (Mail Transfer Agent) が postfix でなければ postfix に設定する
# 確認
$ alternatives --display mta
# 設定
$ alternatives --config mta
選択 コマンド
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
openssl で smtp.gmail.com に繋がるか確認する
username & password のそれぞれの base64 エンコード結果をコピーする
# username
$ echo "sample@gmail.com" | openssl enc -e -base64
# password
$ echo "your_password" | openssl enc -e -base64
接続
$ openssl s_client -starttls smtp -connect smtp.gmail.com:587
・
・<中略>
・
# 下記表示されればおk
250 SMTPUTF8
# 下記入力
EHLO localhost
# 下記表示される
250-smtp.gmail.com at your service, [220.100.22.61]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
# 下記入力
AUTH LOGIN
# 下記表示される
334 abcdefg
base64 でエンコードした username を貼り付けてエンター
# 下記表示される
334 abcdefg
base64 でエンコードした password を貼り付けてエンター
# 下記表示されればおk
235 2.7.0 Accepted
ctl + c で抜ける
- 「Username and Password not accepted」 が出たら、 VirtualBox + Postfix + Gmail で Username and Password not accepted が出た場合の対応
Postfix の設定
コピーをとっておく
$ cd /etc/postfix/
$ cp main.cf main.cf.origin
$ vi main.cf
main.cf
# main.cf の最終行に下記追加
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail_sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
sasl の設定
$ cd /etc/postfix/
# /etc/postfix/
$ vi gmail_sasl_passwd
# メールとパスワードを記述
[smtp.gmail.com]:587 xxxx@gmail.com:パスワード
# /etc/postfix/gmail_sasl_passwd.db が生成される
$ postmap /etc/postfix/gmail_sasl_passwd
# 権限の変更
$ chown root:root /etc/postfix/gmail_sasl_passwd
$ chmod 600 /etc/postfix/gmail_sasl_passwd
$ chown root:root /etc/postfix/gmail_sasl_passwd.db
$ chmod 600 /etc/postfix/gmail_sasl_passwd.db
# 再起動
$ systemctl restart postfix.service
メールを送ってみる
$ echo test | mail 宛先@xxxx.com
送信できているか確認
# メールを送信できず、溜まっている場合はそのリストとエラー内容が表示される
$ postqueue -p
# 溜まっているメールを削除する
$ postsuper -d ALL deferred