2018年10月24日

CentOS7 メールの設定

システムからの重要なメールが時折送られてきたりするが、デフォルトではログインしないと来ているかどうかがわからない。
システムの重要なメールをGmailなどで受信し、すぐに確認できるようにする。


ツールのインストール


メール送信のテストを気軽に行うため、mailxパッケージをインストールする。
yum -y install mailx
こいつを行うと下記のような感じでメールが送れるようになる。
echo 本文 | mail 宛先
とか
mail 宛先
Subject: 件名
本文
.
最後の.(ピリオド)は本文の終わりに指定する。


メールの転送設定


  1. エイリアスの修正
    vi /etc/aliases
    
    ファイル内
    一番下のPerson who should get root's mailと書かれてるあたりを修正する。
    root:centsys #rootに来たメールをcentsysに転送
    centsys:xxxxx@gmail.com #centsysに来たメールは最終的にgmailに転送する
    
    周りくどい設定をしているようだが、rootのメールは外部ネットワークに流さない、というルールがデフォルトで設定されてるらしい。
    設定をオフにすることも出来るが、非推奨。
    というわけでrootから一般管理者(以前作成したcentsys)に流す。

  2. エイリアスの反映
    newaliases
    

  3. postfix修正
    vi /etc/postfix/main.cf
    
    ファイル内
    一番下に追記
    relayhost = smtp.gmail.com:587
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/isp_auth
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    smtp_sasl_mechanism_filter = plain
    smtp_use_tls = yes
    smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
    smtp_tls_security_level = may
    smtp_tls_loglevel = 1
    
    Gmailのsmtpに接続できるように修正。

転送設定はいったんここまで。
次はGmail側の設定。


Gmailの設定


ブラウザでgoogleアカウントにログインしておく。
gmailへの外部からの接続を許可するため、

googleアカウントの設定 - ログインとセキュリティ - 安全性の低いアプリのアクセス

をONにする。

ただし、2段階認証を設定している場合、上記の設定は許可されない。
この場合は

googleアカウントの設定 - ログインとセキュリティ - アプリパスワード

と進み、外部アプリ用のパスワードを作成する。

アプリを選択:メール
端末を選択:その他(適当に名前を入力)

あたりを入力するとパスワードが表示される。
このパスワードをメモっておいて、サーバ側の設定に戻る。


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


  1. パスワードファイルを作成
    vi /etc/postfix/isp_auth
    
    ファイルの中身
    smtp.gmail.com:587 アカウント名@gmail.com:パスワード
    
    パスワードの部分は2段階認証をしていない場合はそのままgoogleアカウントのパスワードを、2段階認証している場合は上記で作成したアプリパスワードを入力する。

  2. 設定適用
    chmod 600 /etc/postfix/isp_auth
    postmap /etc/postfix/isp_auth
    systemctl restart postfix
    


ファイアウォールの設定


Gmailに接続するのに使用する587番ポートを設定する。
firewall-cmd --list-services --zone=public --permanent #smtp-submission(587番ポート)が存在しないことを確認。
firewall-cmd --list-ports --zone=public --permanent #念のためポート指定でも存在していないことを確認
firewall-cmd --add-service=smtp-submission --zone=public --permanent #smtp-submission(587番ポート)を追加
firewall-cmd --reload #設定反映


テスト


設定はここまでで完了なのでテストメールを送ってみる
echo testmail | mail root
とかやってgmail宛てにrootのメールが来ていれば完了。


備考


  1. メール送信が失敗する場合は下記のような感じでメールログを確認する。
    ls -l /var/log/maillog* #ログの出力を確認
    -rw------- 1 root root 9999 月 日 時:分 /var/log/maillog
    -rw-------. 1 root root 9999 月 日 時:分 /var/log/maillog-年月日
    vi /var/log/maillog #目的の日付のログを確認
    

  2. メール送信とかテストして失敗するとメールがキューにたまったりする。
    キューにたまったメールの確認方法は下記の通り。
    postqueue -p #キューの確認
    postcat -q キュー番号 #キューのメール内容を確認
    postsuper -d キュー番号 #キューの削除
    postsuper -d ALL deferred #失敗したキューの全削除
    postqueue -i キュー番号 #キューの再送
    

  3. 外部に送信せずローカル内でメールを送受信した場合、サーバにログインすると
    「You have new mail」
    みたいなことを言われる。
    こいつを確認するときは下記のようにする。
    mail
    "/var/mail/centsys": 1 messages 1 new 1
    メッセージ種別 メール番号 送信者 曜 月 日 時:分 行数/文字数 件名
    &
    入力待ち状態になり、メールに対しての操作を入力する。
    メール番号:指定のメールの表示
    d メール番号:指定のメールの削除
    q:変更を保存してmailコマンドを終了
    x:変更を破棄してmailコマンドを終了
    などなど。

終わり


Gmail側の設定とかが入るので、ちょっと面倒。
posted by Ren at 22:00 | Comment(0) | TrackBack(0) | PC サーバ CentOS
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/184742528
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック