ICTSC2025 本戦 問題解説: [9416] メールループ

問題文

概要

トラコン太郎は [email protected] でメールを送受信できるサーバーを運用している。

今回新しく監視サーバーを構築し、アラートメールを [email protected] に送信することにした。

しかし、監視サーバーから試しに送信したメールが、[email protected] に届かず監視サーバー自身に届いてしまった。

原因が分からず困っているトラコン太郎はあなたにトラブルシューティングを頼みました。

制約

  • ネットワークインターフェースの設定を変更してはならない
  • メール通信の送信元アドレスまたは宛先アドレスとして、接続用 IP アドレス (192.168.16.1, 192.168.16.2) を使用してはならない

初期状態

終了状態


解説

この問題は、作者が自宅などの環境で Postfix のメール配送を試みた際に遭遇したトラブルをベースに作成したものです。

想定解法として、メール送受信時のログやキューの確認、telnet や nc コマンドによる TCP 25 番ポートおよびその他のポートへの疎通確認を行い、以下の設定変更を順に適用することでメールを正常に送受信できるようになります。

  1. mydestination の修正
    • monitor-ictsc-internal の /etc/postfix/main.cf で mydestination から $mydomain を除くか、mydomain を ictsc.internal 以外に明記する
    • 初期状態では mydomain となっている ictsc.internal が mydestination に含まれているため
  2. 名前解決方式の変更
    • Postfix の /etc/postfix/main.cf で smtp_host_lookup = native を記述する
    • /etc/hosts で名前解決するようにするため
  3. 送信先ポートの変更
    • 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 相当の動作」と説明するチームもおり、意図を正確に読み取ってもらえたのは嬉しかったです。