カテゴリー
Linux

Sendmail で送受信が全く不可能になったときに調べたこと。いつの間に、ナンデ止まってしまったのでしょう。

たったったっ大変だ!どっどっどっどうしよう!いつの間にか Linux サーバのメール送受信がまったくできなくなったことに気づいてしまいました。アイェェェェェェエ!ナンデ! Sendmail ナンデ!

ということで、昨日まで動いていた Sendmail が突然止まったときに行ったことをや考え方を記録に残します。そなえよう。

大事

  • 落ち着く。そのために、画面を見てわなわなしないで、深呼吸、体を動かす、外を見て自分の小ささを知り平静を保つよう、がんばる。
  • エディタを開き、「Sendmail メール送受信できない復旧メモ」など、適当でいいのでまず保存し、すべての記録をこのファイルに残していく
    コマンドも、ログも、気になった部分はここに張っていく。一番のお勧めはテキストファイル。早いし、軽い。メモ帳は使い勝手が悪いのでお勧めしない。私のお勧めは、サクラエディタ。無料!行数表示!検索結果ハイライト!矩形選択!ワードや、Evernote には、後でコピペすればよい。

ここまでが準備です。次からは具体的に実践していったことです。

具体的に見るべき箇所、視点

  • 本当に送受信ができなくなったか、確かめる。サーバのドメインがついたメールから外部のドメインのメールへ、外部からサーバへ、サーバからサーバへ。本当に動かなくなったか確認しよう。
  • いつからメール送受信ができなくなったか、周りの人やソフトの記録を見ておかしくなった大体の時期を突き止めよう
    ウェブアプリがメールを送信するなら最後の送信はいつか?管理画面で確認!いつからおかしくなり始めたか周りにヒアリング!
  • ウェブアプリなら、ログを集める。管理画面やヒアリングで大体のおかしくなり始めた時点がわかったのでそこより大分前のログ以外、すべて手元にコピーし、いつでもあっちこっち見て回れるようにする。
  • Sendmail のログを集める。
    /var/log/maillog
  • ウェブアプリのログや /var/log/maillog をいつでも見られるように tail しておく。
    tail -100f /var/log/maillog などなど。
  • システムのログを集める。/var/log/boot.log /var/log/message が今回役に立ちそうだった。
    どうやって役に立ちそうか見極めるかは、これからいろいろ試す中で、パッケージの停止、起動などでタイムスタンプが更新されていくログに注目すればよい。
    ll -t /var/log で OK 。
  • Sendmail の今の状態を確認する。service sendmail status と、ps ax | grep sendmail とこれを広範囲した ps ax も見て、くどいくらいきっちり確認しよう。
  • Sendmail を再起動してみる。VPS などでブラウザからアクセスできる管理画面があるなら、そこから試すのと、SSH 接続してコマンドで再起動するのと両方試す。動きが違うこととか、よくある。コマンドも、2種類ある。 /etc/init.d/sendmail restart か、service sendmail restart だ。
  • 外部からポート開放を確認しよう。http://www.cman.jp/network/support/port.html メールは25番だ。
  • telnet で25ポートに接続してみよう。
    telnet localhost 25
  • iptables -L -nv を確認しよう。
  • netstat -nl を確認しよう。
  • ログを確認していて気になった箇所はそのままコピーして検索しよう。
  • メール送受信ができなくなった時あたりに変更されたファイルを探そう。
    find /etc -type f -mtime -3
    で3日前から今までに変更されたファイルを /etc 配下を対象に検索することができる。
  • Sendmailバージョンやコンパイル状況やドメイン名など確認しよう。
    sendmail -bv -d0.1
  • SELinux を念のため確認しよう。getenforce と、さらに ll /selinux/ で確認しよう。できない場合は、OS とバージョンを確認して、それに合った方法を調べよう。cat /etc/redhat-release などで調べられる。
  • メールキューを確認しよう。mailq -v
  • Sendmail が起動できない場合は、pid ファイルがあるから起動できていない可能性を確かめよう。ll /var/run/
  • Sendmail が起動できない場合は、lock ファイルがあるから起動できていない可能性を確かめよう。ll /var/lock/subsys/
  • お試しでファイルを修正してみるときは、バックアップファイルを作ろう。
    cp -a /etc/rc.d/init.d/sendmail /etc/rc.d/init.d/sendmail.201206262121 など。
  • /etc/rc.d/init.d/sendmail を編集して止まる箇所を調べることも検討しよう。
    vim /etc/rc.d/init.d/sendmail に echo “zzz67” などなど入れて、どこで動きが止まっているか、突き止めよう。
  • ディスク容量を圧迫していないか調べよう。df -h
  • 起動コマンドにオプションをいろいろつけて試そう。起動ファイルを解析して、次のコマンドを試した。
    cd /etc/rc.d/init.d/
    export SENDMAIL_OPTARG=”-d0-99.9″;./sendmail start
  • Sendmail の起動時ログを /var/log/boot.log を見て確認しよう。
    環境によっては別のファイルに出力されるかもしれない。/var/log/ 配下を意識しよう。意識していれば意外な場所に出力されても拾うことができる。
  • ここまでやってみてだめなら、サーバ業者にお問い合わせ、同僚、先輩、上司、友人にこれまでの記録を見せながら相談しよう。試したことの記録があれば、みなさまが親身に協力してくれるはずだ。
  • 終わったら、お試しで変更したファイルは元に戻そう。

おわりに

結局、解決できませんでした。しかし、こうやって書き起こして残すことで、次に変なことがおきてもまずはこれだけささっと試せます。そなえよう。

「Sendmail で送受信が全く不可能になったときに調べたこと。いつの間に、ナンデ止まってしまったのでしょう。」への1件の返信

コメントを残す