Skip to content

GmailのSMTPサーバを使ってメール送信

pjmtdw edited this page Jan 30, 2014 · 2 revisions

はじめに

自前でpostfixとか使ってメールサーバ用意するのは結構面倒なのでGmailのSMTPサーバを使って送信する方法を解説する

ソフトウェアの選択

sendmailと互換性のあるSMTPの使えるMTAは下記のものがある

  • esmtp … 公式サイトによるとメンテナンス終了とのこと
  • ssmtp … システム全体で一つのSMTPサーバしか使えない
  • msmtp … ユーザごとにSMTPサーバ切り替えられる

という訳で msmtp 一択となった

CentOSでのインストール

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を使う上での注意

GmailはGeoIPとかを使ってIPからこちらの居場所を判断し,普段使っている場所とあまりにも違うところから送信しようとした場合エラーを出す.

それを防ぐには https://security.google.com/settings/security/activity にアクセスして送信しようとしているサーバのIPを承認すれば良い