【保存版Vol.3】メールが届かない・SSL更新失敗・DB起動不能…Ubuntuサーバー「アプリ&セキュリティ」トラブルシューティング

Linux

【深淵】「動いているはず」が一番怖い

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
これまで「接続トラブル(Vol.1)」「リソース不足(Vol.2)」と解説してきましたが、今回がいよいよ最終章です。

サーバー構築のゴールは、OSを動かすことではなく、その上で「Webサイトやメールなどのサービスを安定提供すること」ですよね。
しかし、アプリケーション層のトラブルは、エラーメッセージが複雑で、原因の切り分けが非常に難しいのが特徴です。

コウ君

先生…またまた事件です。
一生懸命作ったメールサーバーからGmailにテストメールを送ったんですが、待てど暮らせど届かないんです。
エラーメールも返ってこないし、完全に「虚空」に消えてしまいました。
それに、WebサイトのSSL証明書も「更新失敗」のメールが来ていて…もうパニックです!

リナックス先生

アプリケーションのトラブルへようこそ(笑)。
メールが届かない原因は「設定ミス」か「相手に拒否されている」かのどちらかね。
今回は、中級者が必ず直面する「メール」「SSL」「データベース」「セキュリティ」の4大トラブルを解決していくわよ。

これでトラブルシューティングシリーズは完結です。
この知識があれば、あなたはもう「サーバーの管理人」として胸を張って良いレベルです。


第1章:メールサーバー(Postfix)の闇

「メールサーバー構築」はLinux管理者にとっての鬼門です。
Webサーバーと違い、メールは「相手(GmailやOutlook)」がいるため、自分だけ設定が正しくても届かないことがあります。

1-1. ログの確認(mail.log)

メール関連の全ての記録は /var/log/mail.log にあります。

# リアルタイムでログを監視しながら送信テストをする
sudo tail -f /var/log/mail.log

ログの中に以下のキーワードがないか探してください。

  • status=sent:相手サーバーまでは届いた(相手の迷惑メールフォルダに入っている可能性大)。
  • status=bounced:相手に拒否された。直後に理由(Reason)が書かれています。
  • status=deferred:一時的なエラー(相手が混んでいるなど)。再送待ち状態。

1-2. 「Deferred」でメールが詰まっている時

「送ったはずなのに届かない」場合、メールがサーバー内の「送信待ちキュー」に溜まっていることがあります。

# 送信待ちメールの一覧を表示
mailq

# 溜まっているメールを強制的に再送トライ
sudo postqueue -f

もし Network is unreachable などのエラーで溜まっている場合、VPSプロバイダが「25番ポート(メール送信ポート)」をブロックしている可能性があります。
多くのVPS(ConoHaなど)では、スパム対策として初期状態で25番ポートを閉じています。サポートへの解除申請が必要です。

1-3. Gmailに届かない(SPF/DKIM/DMARC)

近年、Gmailのセキュリティ基準が非常に厳しくなっています。
DNS設定(SPFレコードなど)が1文字でも間違っていると、容赦なくブロックされます。

【チェックすべきDNSレコード】

  • SPF: 「このIPアドレスから送りますよ」という宣言。
  • DKIM: メールの改ざん検知(秘密鍵での署名)。
  • DMARC: 「SPF/DKIMに失敗したらどうするか」の指示。

これらの設定が正しいかどうか、Googleが提供している「Admin Toolbox」などの外部ツールでドメイン診断を行うのが最短の解決策です。

第2章:SSL証明書(Let’s Encrypt)の更新失敗

「Certbotからの有効期限通知メール」を見て慌てて更新コマンドを打っても、エラーになることがあります。

2-1. 80番ポートの競合問題

Let’s Encryptの更新(certbot renew)には、一時的にWebサーバー機能を使って認証を行う方式(Standalone)と、Webサーバーの公開フォルダを使う方式(Webroot)があります。

よくあるエラーは、「Nginxが80番ポートを使っているから、Certbotがポートを使えなくて起動できない」というものです。

Problem binding to port 80: Could not bind to IPv4 or IPv6.

【解決策:Nginxを一時停止する】

# 1. Nginxを止める
sudo systemctl stop nginx

# 2. 更新を実行
sudo certbot renew

# 3. Nginxを再開(忘れるとWebサイトが見られなくなるので注意!)
sudo systemctl start nginx

2-2. DNS認証での失敗

ワイルドカード証明書(*.example.com)を使っている場合、ファイル認証ではなく「DNS認証」が必要です。
この場合、DNSレコード(TXTレコード)を自動で書き換えるプラグインの設定が正しいか、APIキーの権限が切れていないかを確認してください。

第3章:MySQL/MariaDBが起動しない

「Error establishing a database connection」。
WordPress管理者の悪夢ですが、再起動(systemctl start mysql)しても失敗する場合は重症です。

3-1. エラーログの特定

MySQLのエラーログは /var/log/mysql/error.log にあります。
よくある原因は以下の通りです。

  • PIDファイルエラー: 権限がおかしくなり、プロセスIDファイルが作れない。
  • ディスク容量不足: バイナリログが肥大化してディスクが100%になっている(Vol.2参照)。
  • メモリ不足: OOM Killerに殺された(Vol.2参照)。

3-2. 壊れたテーブルの修復(リカバリモード)

強制終了などでデータ整合性が取れなくなると、MySQLは安全のために起動を拒否します。
この場合、設定ファイル(my.cnf)に「リカバリモード」を記述して強制起動させます。

# /etc/mysql/my.cnf などに追記
[mysqld]
innodb_force_recovery = 1

数字は1〜6まであり、徐々に上げていきます。
起動できたら、速やかにダンプ(バックアップ)を取り、MySQLを再インストールしてデータを戻すのが安全です。

第4章:見えない攻撃との戦い(セキュリティ)

サーバーを公開している以上、あなたのサーバーは24時間365日、世界中から攻撃を受けています。

4-1. SSHへの総当たり攻撃(Brute Force)

/var/log/auth.log を見てみてください。
知らないIPアドレスからの Failed password for root が秒単位で記録されていませんか?
これが攻撃です。

【最強の盾:Fail2ban】

これを防ぐには、「Fail2ban(フェイル・トゥ・バン)」というツールを導入します。
「5回パスワードを間違えたら、そのIPを1時間ブロックする」といった処理を自動で行ってくれます。

# インストール
sudo apt install fail2ban

# ステータス確認(何個のIPをブロックしたか見える)
sudo fail2ban-client status sshd

「Currently banned: 50」などと表示されたら、Fail2banが50人の攻撃者からあなたを守ってくれている証拠です。

4-2. 謎の通信を可視化する(tcpdump)

「サーバーが重いけど、どの通信が多いのか分からない」
そんな時は、サーバーに出入りするパケットを盗聴(キャプチャ)します。

# 80番ポートへの通信をリアルタイム表示
sudo tcpdump -i eth0 port 80

画面に流れるテキストを見ることで、「特定のIPから異常なアクセスが来ている(DDoS攻撃の可能性)」などの判断がつきます。

まとめ:トラブルこそが最高の教材

全3回にわたるトラブルシューティング講座、お疲れ様でした!
SSH接続からメール、DB、セキュリティまで、Ubuntuサーバー運用の「ハマりどころ」は網羅できたはずです。

トラブルに直面した時、焦る必要はありません。
「ログを見る」→「原因を仮説する」→「検証する」
このサイクルを回せるようになったあなたは、もう立派なサーバーエンジニアです。

もし、どうしても復旧できない致命的なエラーが起きた時は…?
そう、私たちには最後の切り札「サーバー再構築」があります。

何度でも壊して、何度でも作り直せる。
その試行錯誤の数だけ、あなたのスキルは確実に向上しています。
恐れずに、Linuxの深淵を楽しんでくださいね!

▼何度失敗しても大丈夫!ワンクリックで再構築できるVPS

【2026年最新】Linuxサーバー構築におすすめのVPS比較3選!現役エンジニアが速度とコスパで厳選
Linuxの勉強、まだ「自分のPC」でやって消耗していませんか?「Linuxを覚えたいけど、環境構築でエラーが出て先に進めない…」「VirtualBoxを入れたらパソコンが重くなった…」これは、Linux学習を始める9割の人がぶつかる壁です...

コメント