CentOS7上のpostfixからgmailを使ってメールを送信

面倒な割には手順が一箇所にまとまってないので、ここに記載します。

rpmのインストール

テストと認証に必要なrpmを入れます:

sudo yum install -y mailx cyrus-sasl-plain

gmailの2段階認証の有効可

Sign in - Google Accounts

gmailのアプリパスワードの作成

postfixからgoogleに対して認証する際、いつものgmailパスワードではなく、 postfix用の「アプリパスワード」なるものを作成します:

Sign in - Google Accounts

f:id:thebaker:20171125121547p:plain

「アプリ」はメール、「端末を選択」はCentOS7とかホスト名とかを記述します。 すると16桁のパスワードが発行されるのでメモしておきます。

postfixの設定変更

/etc/postfix/main.cfを開き、次を追記します:

relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/saslpass
smtp_sasl_mechanism_filter = plain

パスワードファイルの作成

sudo vi /etc/postfix/saslpass

中は次のように記載します:

[smtp.gmail.com]:587 ユーザ名@gmail.com:16桁のパスワード

そして次を実行します:

sudo chown root:root /etc/postfix/saslpass
sudo chmod 600 /etc/postfix/saslpass
sudo postmap /etc/postfix/saslpass
sudo systemctl restart postfix

最後にテストです:

echo "hoge" | mail -s "test email" メールアドレス@gmail.com