サーバーは「作ってから」が本番
こんにちは!「リナックス先生」です。
全5回のメールサーバー構築講座、本当にお疲れ様でした。これであなたの手元には、Gmailとも対等に渡り合える最強のメールサーバーがあるはずです。
- 第1回:設計・DNS編 – 初心者でもGmailに届くインフラ作り
- 第2回:送信編 (Postfix) – 不正中継を防ぐSMTP-AuthとSubmissionポート
- 第3回:受信編 (Dovecot) – 盗聴不可能なIMAP環境とSSL/TLS
- 第4回:信頼性編 – SPF・DKIM・DMARCフル装備
- 第5回:防衛編 – SpamAssassin + ClamAV + Fail2Ban
- 付録(今回):トラブルシューティング&運用テクニック総まとめ
先生、サーバーは快調です!
でも、もし明日急にメールが送れなくなったらどうしよう…って少し不安です。
エラーが出た時、どこを見ればいいのか、どうやって直せばいいのか、プロの技を教えてください!
いい心がけね。
メールサーバーはWebサーバー以上に繊細で、DNSの些細な変更やディスク容量不足で簡単に止まってしまうわ。
今回は、私が現場で実際に使っている「トラブルシューティングの極意」と「運用自動化のスクリプト」を全部伝授するわ。
これをブックマークしておけば、深夜の障害対応も怖くないわよ!
1. ログ解析の極意:エラーメッセージを解読せよ
何かあったら、まずはログです。メールサーバーのログは非常に饒舌で、原因のすべてを語ってくれます。
ログの場所と見方
AlmaLinux / RHEL系: /var/log/maillog
Ubuntu / Debian系: /var/log/mail.log
# リアルタイムで監視する(基本中の基本) tail -f /var/log/maillog
よくあるエラーキーワード集
ログの中に以下の単語が出てきたら、それが原因です。
| キーワード | 意味と対処法 |
| Relay access denied | 不正中継拒否: 認証設定(SMTP-Auth)が間違っているか、mynetworks の設定ミスです。スマホ側のパスワード設定も再確認を。 |
| Connection timed out | 接続タイムアウト: 相手サーバー(Gmail等)に繋がりません。25番ポートがブロックされている(OP25B)か、相手がダウンしています。 |
| Certificate verification failed | 証明書エラー: SSL証明書が期限切れか、設定パスが間違っています。 |
| Helo command rejected | ホスト名拒否: 相手サーバーから「お前の名乗り(HELO)は怪しい」と拒否されました。DNSの逆引き設定を確認してください。 |
| Over quota | 容量オーバー: メールボックスがいっぱいです。不要なメールを削除してください。 |
2. 通信テストの極意:OpenSSLを使え
「メールソフトの設定が悪いのか、サーバーが悪いのか分からない」という時は、サーバー内部からコマンドで接続テストを行います。
昔は telnet を使いましたが、今は暗号化(SSL/TLS)が必須なので openssl コマンドを使います。
SMTP(送信)のテスト
587番ポート(Submission)に接続し、STARTTLSが機能しているか確認します。
# 接続コマンド openssl s_client -connect mail.example.com:587 -starttls smtp # 成功すると証明書情報が表示され、最後にこう出ます 250 DSN
ここでエラーが出る場合、Firewallでポートが閉じているか、PostfixのTLS設定(証明書のパスなど)が間違っています。
IMAP(受信)のテスト
993番ポート(IMAPS)に接続してみます。
# 接続コマンド openssl s_client -connect mail.example.com:993 # 成功すると証明書情報が表示され、最後にこう出ます * OK [CAPABILITY...] Dovecot ready.
3. メールキューの管理:詰まりを解消せよ
メールサーバーは、送信に失敗してもすぐには諦めず、一旦「キュー(待ち行列)」に保存して再送を試みます。
しかし、トラブル時やスパム攻撃を受けた時、このキューが数千件溜まってしまい、正常なメールまで届かなくなることがあります。
キューの状態確認
# キューの一覧を表示 postqueue -p # 末尾に件数が表示されます -- 25 Kbytes in 5 Requests.
キューの強制再送と削除
「設定を直したから、今すぐ再送させたい」という場合。
# 全てのキューを即時再送 postqueue -f
「スパムでキューが溢れた! 全部消したい!」という場合(※正常なメールも消えるので注意)。
# 全てのキューを削除
postsuper -d ALL
# 特定のドメイン宛てのみ削除(上級テクニック)
# 例:gmail.com 宛てを削除
mailq | tail -n +2 | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ($8 == "gmail.com") print $1 }' | tr -d '*!' | postsuper -d -
4. 証明書更新の自動化:期限切れを防ぐ
Let’s Encryptの証明書は90日で切れます。certbot renew コマンドで更新自体はされますが、「更新した後にPostfixとDovecotを再読み込み」しないと、古い証明書を使い続けてしまい、ある日突然エラーになります。
Deploy Hookの設定
Certbotには「更新成功時にスクリプトを実行する」機能があります。/etc/letsencrypt/renewal-hooks/deploy/ ディレクトリにスクリプトを置きます。
vi /etc/letsencrypt/renewal-hooks/deploy/reload_mail_services.sh
内容:
#!/bin/bash # 証明書が更新されたらメールサーバーをリロード systemctl reload postfix systemctl reload dovecot
実行権限を付与します。
chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload_mail_services.sh
これで完全自動運用が可能になります。
5. ログローテーション:ディスクを守る
メールサーバーのログは膨大です。放置するとディスクがいっぱいになり、サーバーが停止します。logrotate の設定を確認・調整しましょう。
設定ファイル: /etc/logrotate.d/syslog (またはrsyslog)
/var/log/maillog
/var/log/messages
/var/log/secure
{
daily # 毎日ローテーション
rotate 30 # 30日分保存
compress # 圧縮する
missingok
sharedscripts
postrotate
/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
endscript
}
もしログが多すぎる場合は、rotate 30 を rotate 7 に減らすなどの対策をとります。
6. 便利な運用テクニック集
エイリアス(転送)の設定
「root 宛のメールを自分のGmailに転送したい」「info@ を作って kou-kun@ に転送したい」という場合、ユーザーを増やさずにエイリアスで対応できます。
ファイル: /etc/aliases
# 追記例 root: kou-kun@example.com info: kou-kun contact: kou-kun
編集後は必ずコマンドを実行して反映させます。
newaliases
Dovecotのインデックス破損修復
稀に、メールはあるのにメーラーで見られない(インデックスが壊れる)ことがあります。
その場合は、ユーザーのMaildir内のインデックスファイルを削除して再構築させます。
rm -f /home/kou-kun/Maildir/dovecot.index*
次回アクセス時に自動で再生成されます。
講座完結:あなたはもう「プロ」です
全5回と付録、これにてメールサーバー構築講座は完全終了です。
DNSの設計から始まり、Postfix/Dovecotの構築、セキュリティ強化、そしてトラブルシューティングまで。
あなたが手に入れたこの知識は、Linuxエンジニアとして非常に価値の高いものです。
先生、長い間ありがとうございました!
この付録記事、プリントアウトしてモニターの横に貼っておきます。
トラブルが起きても、まずは「ログを見る」ことから始めますね。
自分で作ったサーバー、大切に育てていきます!
ええ、頼もしくなったわね。
メールサーバーを運用できれば、WebサーバーやDBサーバーの運用なんて怖くないわ。
もしまた新しい技術が出てきたら、いつでもここに戻ってきなさい。
Good Luck!
▼長期安定運用に最適なVPS
メールサーバーは一度作ると数年は使い続けるものです。OSのサポート期間が長く、ハードウェアの信頼性が高い、長期運用に最適なVPSを選びましょう。


コメント