CentOS7でmailコマンドでgmailにメール送信できるようにする


概要

CentOS7で、mailコマンドでgmailにメール送信できるようにする手順です。

メールが送信できない理由

送信できない理由は、以下の3つでした。

  • 送信ポートを587番にしなければならない
  • SMTP認証が必要
  • googleが信頼性の低いアプリからのメールを受け付けない

gmailの送信ポートを確認

gmailのsmtpサーバーの空いているポートを調べてみます。

25番を確認

$ telnet smtp.gmail.com 25
Trying 74.125.204.109...

587番を確認

$ telnet smtp.gmail.com 587
Trying 64.233.189.109...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP w21sm23015592pfl.50 - gsmtp

確認した結果、587番ポートしか空いていないことが分かりました。

localhost

localhostの開いているポートを確認してみる

25番

$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix

587番

$ telnet localhost 587
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

localhostは25番しか空いていないので、postfixの送信ポートを変更する必要があります。

postfixの設定変更

postfixで587番ポートで、SMTP認証が使用できるように設定変更をします。

Cyrus SASLライブラリのインストール

まず、PostfixのSMTP認証で利用するCyrus SASLライブラリをインストールします。

$ sudo yum install cyrus-sasl-plain cyrus-sasl-md5

postfixの設定ファイルを編集

$ sudo vi /etc/postfix/main.cf

以下を末尾に追記

# gmail
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

SMTP認証の設定

以下のファイルにgmailのアカウントを記述します。

$ sudo vi /etc/postfix/sasl_password

中継先SMTPアドレス:ポート 認証ユーザ名:パスワード の書式で記述します。

[smtp.gmail.com]:587    <gmail_address>:<password>

パーミッションの変更

$ sudo chmod 600 /etc/postfix/sasl_password

dbファイルの生成

$ sudo postmap hash:/etc/postfix/sasl_password

postfix再起動

$ sudo systemctl restart postfix

mailコマンドのインストール

$ sudo yum -y install mailx

メールを送信してみる

$ echo hogehoge | mail [email protected]

送信できなかったのでログを確認すると、以下のようなものが出力されています。

/var/log/maillog

Please log in via your web browser and?534-5.7.14 then try again.?534-5.7.14

googleの設定変更

googleで安全性の低いアプリを許可しないと、送信することが出来ないようです。
https://myaccount.google.com/lesssecureapps

これで送信できるようになりました。

$ echo hogehoge | mail [email protected]

参考