はじめに
前回はPostfixをインストールし、SMTPサーバーとしてローカルユーザーへメールを配送するところまで確認しました。
今回はSMTP認証(SASL)とTLSを利用して、Gmailを中継先としたメール中継サーバーを構築してみます。
最終的な構成は以下の通りです。
SMTPクライアント
│
▼
Postfix(AlmaLinux)
│
SMTP AUTH + STARTTLS
▼
smtp.gmail.com
│
▼
Gmail
検証環境
| 項目 | 内容 |
|---|---|
| OS | AlmaLinux 9 |
| 仮想環境 | VirtualBox(NAT) |
| メールサーバー | Postfix |
| 中継先 | Gmail SMTPサーバー |
Gmail側の準備
まずGoogleアカウントで2段階認証を有効にしました。
その後、「アプリパスワード」を発行し、PostfixからGmailへSMTP認証できるようにしました。
通常のGoogleアカウントのパスワードではなく、アプリパスワードを利用することで安全に認証できます。
SASL認証情報の作成
SMTP認証情報を保存するファイルを作成します。
sudo vi /etc/postfix/sasl_passwd
以下のように記述しました。
[smtp.gmail.com]:587 Gmailアドレス:アプリパスワード
データベース化します。
sudo postmap /etc/postfix/sasl_passwd
認証情報なので権限を変更します。
sudo chmod 600 /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd.db
Postfixの設定
/etc/postfix/main.cfへ以下を追加しました。
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
設定を確認します。
sudo postfix check
問題がなければ再起動します。
sudo systemctl restart postfix
SMTP通信でテスト
SMTPサーバーへ接続します。
telnet localhost 25
以下のSMTPコマンドを入力しました。
EHLO localhost
MAIL FROM:<自分のGmailアドレス>
RCPT TO:<自分のGmailアドレス>
DATA
Subject: Relay Test
Postfix Relay Test
.
QUIT
今回は送信元・宛先ともに自分のGmailアドレスを指定しました。
Gmailへメールが届いた
送信後、Gmailの受信トレイを確認すると、送信したメールが正常に届いていました。
また、Postfixのログでも
status=sent
と表示され、中継が正常に完了していることを確認できました。
ローカル配送との違い
前回はSMTPで受信したメールをローカルユーザーへ配送していました。
SMTP
│
▼
Postfix
│
▼
/var/spool/mail/daichi
今回は配送先がGmailになっています。
SMTP
│
▼
Postfix
│
SMTP AUTH + TLS
▼
smtp.gmail.com
│
▼
Gmail
Postfix自身がメールを配達するのではなく、GmailのSMTPサーバーへ中継している点が大きな違いです。
メール中継サーバーは何のためにあるのか
今回の検証では、自分のGmailから自分のGmailへ送信しました。
実際には、自分だけで利用するのであればメール中継サーバーは必要ありません。
企業では以下のような構成で利用されます。
監視サーバー
業務システム
Webサーバー
│
▼
Postfix
│
▼
Microsoft 365
│
▼
利用者
各サーバーはPostfixへメールを渡すだけでよく、SMTP認証や暗号化などはPostfixがまとめて処理します。
そのため、
- SMTP認証情報を一元管理できる
- ログを一括管理できる
- メール送信設定を各サーバーへ持たせる必要がない
といったメリットがあります。
まとめ
今回はPostfixをSMTPサーバーからメール中継サーバーへ発展させました。
実施した内容は以下の通りです。
- Gmailのアプリパスワード作成
- SASL認証設定
- STARTTLS設定
- relayhost設定
- GmailへのSMTPリレー
- Gmail受信確認
- Postfixログ確認
SMTPサーバーではローカル配送を行っていましたが、今回は外部SMTPサーバー(Gmail)へ中継する仕組みを構築することができました。
次回
次回は、今回追加した設定項目を1つずつ掘り下げ、
- relayhostとは何か
- SMTP認証(SASL)の役割
- STARTTLSの仕組み
- なぜ587番ポートを利用するのか
など、「動いた理由」を理解することを目的に学習していきたいと思います。
