ICTSC2025 本戦 問題解説: [9416] メールループ
問題文
概要
トラコン太郎は [email protected] でメールを送受信できるサーバーを運用している。
今回新しく監視サーバーを構築し、アラートメールを [email protected] に送信することにした。
しかし、監視サーバーから試しに送信したメールが、[email protected] に届かず監視サーバー自身に届いてしまった。
原因が分からず困っているトラコン太郎はあなたにトラブルシューティングを頼みました。
制約
- ネットワークインターフェースの設定を変更してはならない
- メール通信の送信元アドレスまたは宛先アドレスとして、接続用 IP アドレス (192.168.16.1, 192.168.16.2) を使用してはならない
初期状態
- [email protected] から
echo "test message" | mail -s "test subject" [email protected]でメールを送信後、[email protected] のmailで受信を確認できない
終了状態
- [email protected] から
echo "test message" | mail -s "test subject" [email protected]でメールを送信後、[email protected] のmailで受信を確認できる
解説
この問題は、作者が自宅などの環境で Postfix のメール配送を試みた際に遭遇したトラブルをベースに作成したものです。
想定解法として、メール送受信時のログやキューの確認、telnet や nc コマンドによる TCP 25 番ポートおよびその他のポートへの疎通確認を行い、以下の設定変更を順に適用することでメールを正常に送受信できるようになります。
- mydestination の修正
- monitor-ictsc-internal の /etc/postfix/main.cf で mydestination から $mydomain を除くか、mydomain を ictsc.internal 以外に明記する
- 初期状態では mydomain となっている ictsc.internal が mydestination に含まれているため
- 名前解決方式の変更
- Postfix の /etc/postfix/main.cf で smtp_host_lookup = native を記述する
- /etc/hosts で名前解決するようにするため
- 送信先ポートの変更
- TCP 25 番ではなく、2525 番などの別のポート宛にメールを送信するように設定を変更する
- ルーターで 10.128.1.1, 10.128.2.2 間の TCP 25 番ポート宛に転送されるパケットがドロップされているため
採点基準
- すべての制約と終了条件を満たしている + 100 点
講評
この問題は半数のチームが正解していました。3 つのトラブルが複合しており、問題文には動作環境のソフトウェアやネットワーク構成の説明がなかったため、メールサーバーや Postfix を触ったことのない方にとっては、概要や周辺知識から調べる必要があり、難しかったかと思います。
別解として ictsc.internal 宛のメールを 10.128.1.1 へ中継するよう relayhost を設定するチームもいました。想定解法でなくとも、制約と終了条件を満たしていれば満点としています。
また、10.128.1.1 の TCP 25 番ポート宛の通信のみが選択的にドロップされていることに対して、tcpdump や nc コマンドで気付いているチームがいました。この問題は作者が実際に遭遇した OB25B の事象を再現したものですが、報告書の中で 「OP25B 相当の動作」と説明するチームもおり、意図を正確に読み取ってもらえたのは嬉しかったです。