前回まで ConoHa の VPS に RHEL9 をインストールし、そこにメールサーバーを構築しました。

今回はその環境に MTA-STS ポリシーを設定していこうと思います。
MTA-STS(Mail Transfer Agent-Strict Transport Security)は STARTTLS をより堅牢にする仕組みです。
DNS で MTA-STS を使用するように宣言したうえで、Web サイト上にポリシーファイルを設置することで設定できます。
ディレクトリの準備
ポリシーファイルを配置する場所は https://mta-sts.ドメイン名/.well-known/mta-sts.txt と定められています。
メールのドメインが増えたとしても、参照するファイル(指定する MX のドメイン)は同じなので、mta-sts というディレクトリを作成して、ドメインが増えてもそこを共通で参照するようにします。
mkdir -p /var/www/mta-sts/.well-known
chown nobody. -R /var/www/mta-stsドメインごとにルールを変える場合は、サブディレクトリで管理するのも良いでしょう。
OpenLiteSpeed の設定
OLS の管理画面にログインし、バーチャルホストを作成します。
- バーチャルホスト名:mta-sts
- Virtual Host Root:/var/www/mta-sts/
- 設定ファイル:$SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf
- シンボリックリンクを許可する:いいえ
- スクリプト/外部アプリを有効にする:いいえ
- 抑制された:はい
続いて作成したバーチャルホストの一般のタブからメールサーバーのドメインを指定します。
ドメイン名には頭に mta-sts のサブドメインを付けて指定します。
- Document Root:$VH_ROOT
- ドメイン名:mta-sts.example.com
- ドメインエイリアス:(複数のメールドメインがあれば記載)
MTA-STS ポリシーファイルの配置
続いて mta-sts.txt ファイルを作成します。
version: STSv1
mode: enforce
max_age: 31557600
mx: mail.example.com- version:STSv1(固定値)
- mode:STARTTLS に失敗したときの送信サーバーの挙動
- enforce:メールを送信しない
- testing:メールは通常通り送信し、レポートを送信
- none:MTA-STS を利用しない
- max_age:86400(1 日)〜 31557600(約 1 年)
- mx:許可するメール受信サーバーのホスト名
DNS の設定
ConoHa の管理画面から DNS を開き、対象のドメインに下記を設定していきます。
MTA-STS の設定
DNS のテキストレコードに _mta-sts を設定することで、MTA-STS が有効化されます。
- タイプ:TXT
- 名称:_mta-sts
- 値:v=STSv1; id=任意の英数字;
id は 1 ~ 32 文字の英数字で、外部サーバーは前回と id が変わっていればポリシーをチェックします。値に古い新しいの順序はありませんが、更新日を絡めたものにしておくのが一般的なようです。
TLS レポートの設定
ポリシーで指定した mode が testing の場合に、レポートを送信する宛先を設定します。
- タイプ:TXT
- 名称:_smtp._tls
- 値:v=TLSRPTv1; rua=mailto:レポート送信先のメールアドレス
レポートを複数のメールアドレスで受信するには、各アドレスをカンマで区切って指定します。メールではなく、HTTPS レポート配信オプションもあるようです。
逆引き DNS の設定
ConoHa 管理画面のサーバーから VPS 設定を開き、IPv4 の PTR レコードを mail.example.com に変更しておきましょう。

逆引きホスト名を修正して、保存します。
すぐには反映されないので、暫く経ってから確認を行っておきましょう。
dig -x サーバーの IP アドレス
(out)
(out) ; <<>> DiG 9.16.23-RH <<>> -x xxx.xxx.xxx.xxx
(out) ;; global options: +cmd
(out) ;; Got answer:
(out) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41647
(out) ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
(out)
(out) ;; OPT PSEUDOSECTION:
(out) ; EDNS: version: 0, flags:; udp: 4096
(out) ;; QUESTION SECTION:
(out) ;xxx.xxx.xxx.xxx.in-addr.arpa. IN PTR
(out)
(out) ;; ANSWER SECTION:
(out) xxx.xxx.xxx.xxx.in-addr.arpa. 3600 IN PTR mail.example.com.
(out)
(out) ;; Query time: 5 msec
(out) ;; SERVER: ooo.ooo.ooo.ooo#53(ooo.ooo.ooo.ooo)
(out) ;; WHEN: Thu Jan 25 13:09:57 JST 2024
(out) ;; MSG SIZE rcvd: 81確認
More Options を開いて「Check MTA-STS」にチェックを入れ、Run Test を行います。

MTASTS の項目が OK になっていれば、正しく設定されています。
MTA-STS を解除する場合
- MTA-TLS を解除する場合は、ポリシーで mode を none に指定し、mx の指定を削除します。また、max-age は最も短い 86400 に設定します。
version: STSv1
mode: none
max_age: 86400- DNS のテキストレコードで、_mta-sts のバージョンを更新します。
- ポリシーの以前のバージョンがキャッシュに保存されている可能性があるので、以前に指定していた max_age の期間を空けてからテキストレコードを削除します。

コメント