はじめに
AlmaLinuxを利用したメール中継サーバーの構築を仕事で行うので、勉強も兼ねてPostfixを使ったSMTPサーバーを構築してみました。
今回はSMTPサーバーの基本動作を確認し、SMTPプロトコルの流れを実際に体験するところまで実施します。
検証環境
| 項目 | 内容 |
|---|---|
| OS | AlmaLinux 9 |
| 仮想環境 | VirtualBox |
| メールサーバー | Postfix |
Postfixのインストール
まずはPostfixをインストールします。
sudo dnf install postfix -y
インストール後、サービスを起動します。
sudo systemctl enable postfix
sudo systemctl start postfix
サービスの状態を確認します。
systemctl status postfix
active (running)と表示されれば正常に起動しています。
SMTPの待ち受け確認
SMTPは通常25番ポートを使用します。
待ち受け状態を確認します。
ss -lntp | grep :25
初期状態では
127.0.0.1:25
となっていました。
これはローカルホストからの接続のみ受け付ける設定になっています。
Postfixの設定変更
設定ファイルを編集します。
sudo vi /etc/postfix/main.cf
今回は外部からも接続できるように、以下の設定を変更しました。
inet_interfaces = all
設定ファイルに問題がないか確認します。
sudo postfix check
問題がなければPostfixを再起動します。
sudo systemctl restart postfix
再度待ち受け状態を確認すると、
0.0.0.0:25
となり、外部からの接続も受け付けるようになりました。
SMTP通信を手動で実行してみる
SMTPサーバーへ接続します。
telnet localhost 25
接続すると次のようなメッセージが表示されます。
220 localhost.localdomain ESMTP Postfix
ここからSMTPコマンドを入力していきます。
まずは接続先へ自分の情報を通知します。
EHLO localhost
続いて送信者を指定します。
MAIL FROM:<test@gmail.com>
次に宛先を指定します。
RCPT TO:<daichi>
メール本文を送信します。
DATA
Subject: SMTP Test
This is TestMail
MailServer
.
最後の「.(ピリオド)」はメール本文の終了を意味します。
正常に受信されると
250 2.0.0 Ok: queued as XXXXXXXX
と表示され、メールがキューへ登録されます。
最後に接続を終了します。
QUIT
Postfixログを確認
別ターミナルでログを確認しました。
journalctl -u postfix -f
ログには以下のような処理が記録されます。
- SMTP接続
- メール受信
- メールキュー登録
- ローカル配送
- キュー削除
特に
status=sent (delivered to mailbox)
というログが表示されれば、メールが正常に配送されたことが分かります。
メールキューの確認
現在のメールキューを確認します。
mailq
配送完了後は
Mail queue is empty
と表示され、メールキューが空になっていることを確認できました。

メールボックスを確認
ローカルメールを確認します。
mail
実際にSMTPで送信したメールが受信されていることを確認できました。

SMTPの流れを理解する
今回実際に入力したSMTPコマンドには、それぞれ役割があります。
| コマンド | 役割 |
|---|---|
| EHLO | SMTPサーバーへ接続したことを通知する |
| MAIL FROM | 送信者を指定する |
| RCPT TO | 宛先を指定する |
| DATA | メール本文を送信する |
| QUIT | SMTP接続を終了する |
普段はOutlookやThunderbirdなどのメールソフトが自動的に実行していますが、今回は手動で入力することでSMTPプロトコルの流れを理解することができました。
まとめ
今回はPostfixをインストールし、SMTPサーバーとして基本動作を確認しました。
実施した内容は以下の通りです。
- Postfixのインストール
- サービス起動
- SMTP待ち受け確認
- Postfix設定変更
- SMTPコマンドによるメール送信
- Postfixログ確認
- メールキュー確認
- ローカルメールボックス確認
実際にSMTPコマンドを入力しながら動作を確認したことで、メールソフトが内部で行っている処理を理解することができました。
次回は、Postfixをメール中継サーバー(SMTP Relay)として構成し、relayhostやSMTP認証(SASL)、STARTTLSの設定を行い、外部メールサーバーへの中継を試してみたいと思います。

