変更要約: 初版(主題1.09・副主題1.09.1〜1.09.3に対応)
4.3メール配送エージェント(MTA)の基本
ホスト上のメール配送の基本を学びます。MTA の役割と代表的な実装(postfix・exim)、システム全体の転送先を定める /etc/aliases と反映コマンド newaliases、ユーザー単位の転送 ~/.forward、送信・確認コマンド(mail・mailq)を押さえます。
cron の実行結果やシステム警告は、昔からローカルメールで root 宛てに届く設計です。これを受け持つのが MTA(メール配送エージェント)。本副主題は「本格的なメールサーバー構築」ではなく、ホスト内の配送とエイリアス(転送)設定という運用の基礎だけが範囲です。
4.3.1MTA と配送の基本
- MTA=メールを受け取り、宛先へ配送するサーバーソフト(SMTP・25番ポート)。代表=postfix(現在の事実上標準)・exim(Debian 系で伝統的)。存在と役割を知っていればよく、詳細設定は範囲外(公式範囲の明記)。
- 送信テスト=mail コマンド(
echo "本文" | mail -s "件名" root)。配送待ちキューの確認=mailq(詰まりの発見)。
4.3.2エイリアスと転送
- /etc/aliases=システム全体の別名・転送表(
root: admin@example.com=root 宛てを管理者の実メールへ)。編集後は newaliases を実行してデータベースへ反映(忘れると効かない)。 - ~/.forward=ユーザー自身が置く転送設定(ホームに
別宛先を書いたファイルを置くだけ・root 権限不要)。 - 使い分け=全体・役割アカウントの転送は aliases(管理者作業)/個人の転送は .forward(本人作業)。
「/etc/aliases を編集したら newaliases(実行しないと反映されない)」 が本副主題いちばんの頻出ポイントです。「システム全体=aliases・ユーザー個人=~/.forward」「キュー確認=mailq」「代表的 MTA=postfix・exim」 もセットで覚えます。
実運用での典型設定はこうです。サーバーの cron ジョブが失敗すると root 宛てにメールが飛びますが、誰も root のメールボックスなど見ていません。そこで /etc/aliases に root: ops-team@example.com と書き、newaliases で反映——これで全サーバー警告が運用チームの実メールに届くようになります(外部配送には MTA のリレー設定が要る点は範囲外の実務知識)。newaliases が必要な理由は、MTA が参照するのがテキストの aliases ではなく高速化のためのデータベース(aliases.db)だからで、「編集したのに転送されない」トラブルの原因第1位です。個人レベルでは、退職前のメンバーが ~/.forward に後任のアドレスを書いておく、といった本人完結の転送ができます。詰まりの調査は mailq でキューを見て、宛先不達(DNS・ネットワーク)や MTA 停止を疑う、が一次対応の型です。
| 設定/コマンド | 対象 | 要点 |
|---|---|---|
| /etc/aliases | システム全体 | 編集後に newaliases 必須 |
| ~/.forward | ユーザー個人 | 本人がホームに置くだけ |
| mail / mailq | 送信テスト/キュー確認 | 詰まり調査の入口 |
| postfix / exim | 代表的な MTA | 詳細設定は範囲外 |
ひっかけ: 「/etc/aliases は保存した時点で即座に反映される」は誤りです。MTA が参照するデータベースの再構築=newaliases の実行が必須です。また「~/.forward の設置には root 権限が必要」も誤り=ユーザー本人がホームディレクトリに置くだけで機能します。postfix を「Web サーバー」とするような役割すり替えにも注意(MTA です)。
4.3.3この節のまとめ
- MTA=postfix/exim(役割の理解まで)。テストは mail・キューは mailq
- 転送=全体 aliases(→newaliases 必須)/個人 ~/.forward(本人設置)
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. /etc/aliases に「root: admin@example.com」を追記したが、root 宛てメールが転送されない。実行し忘れているコマンドは?
Q2. 一般ユーザー suzuki が root 権限を使わず、自分宛てのメールを別アドレスへ転送したい。適切な方法は?
Q3. 送信したメールが相手に届いていないようだ。MTA の配送待ちキューを確認するコマンドは?

