GmailのSMTPサーバを使ってメール送信
pjmtdw edited this page Jan 30, 2014
·
2 revisions
自前でpostfixとか使ってメールサーバ用意するのは結構面倒なのでGmailのSMTPサーバを使って送信する方法を解説する
sendmailと互換性のあるSMTPの使えるMTAは下記のものがある
- esmtp … 公式サイトによるとメンテナンス終了とのこと
- ssmtp … システム全体で一つのSMTPサーバしか使えない
- msmtp … ユーザごとにSMTPサーバ切り替えられる
という訳で msmtp 一択となった
msmtpはEPELリポジトリにあるのでまずはEPELの設定をしておく.その上で
# yum install --enablerepo=epel msmtp
する. alternatives --config mta
の中に msmtp はなかったので手動でシンボリックリンクを張る
# ln -s /usr/bin/msmtp /usr/sbin/sendmail
sendmailはあまり使い勝手が良くないのでmailxコマンド経由で送るのが便利だが,
少なくともWEBKEEPERSのCentOSではHeirloom mailxがデフォルトでインストールされていて,なおかつ
/bin/mail
は /bin/mailx
へのシンボリックリンクになっているのでmailxをインストールする必要はない.
msmtpパッケージの中には設定ファイルの例が載っているのでコピーしてきて適当に編集する. あと自分以外が読めるとエラーになるのでパーミッションも設定しておく
$ cp /usr/share/doc/msmtp-1.4.31/msmtprc-user.example ~/.msmtprc
$ chmod 600 ~/.msmtprc
結果こんな感じになった.
# Set default values for all following accounts.
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-bundle.crt
logfile ~/.msmtp.log
# gmail service
account gmail
host smtp.gmail.com
port 587
from <MY_USER_NAME>@gmail.com
user <MY_USER_NAME>
password <WRITE_PASSWORD_HERE>
# Set a default account
account default : gmail
echo 'this is a test' | mail -v -s 'test mail' 'hogefuga@gmail.com'
GmailはGeoIPとかを使ってIPからこちらの居場所を判断し,普段使っている場所とあまりにも違うところから送信しようとした場合エラーを出す.
それを防ぐには https://security.google.com/settings/security/activity にアクセスして送信しようとしているサーバのIPを承認すれば良い