先日来、職場教室内からメール送信できないという報告が相次ぎ、自分の授業でも、実際にメールを送信させてみたところ全員ができないでいた。同僚と話し合っている中で、契約プロバイダが表題の25番ポートブロックを実施していることに気づき、これが原因とわかった。
詳しい内容は多くのプロバイダの広報ページに記述されているので省くが、このOP25Bはインターネットポートのうち、メール送信に標準的に使われている25番のポートを587番や10025番に変更することにより、機械的にポートスキャンして脆弱な送信サーバーを探して不正な大量迷惑メールの踏み台にする輩を撃退する効果があるのだ。外部プロバイダから不正利用されるのを防ぐのが主目的ではあるが、内部から外部の送信サーバーを利用されるときにもブロックされてしまう。職場では教室での契約プロバイダとサーバー設置のプロバイダが違うため、影響を受けてしまったようである。問題は十分な周知なく仕様を変更された点である。
原因がわかってから対策に乗り出したが、25番以外のポートでサービスを提供するにはサーバーアプリケーションの設定変更が必要である。職場設置のサーバーはFreeBSDで作ったCUI(Character User Interface)のサーバーであるため、ポート欄の数字をカチャカチャとキーボードで書き換えて「OK」と押して変更できるほど生易しくはない。かつてのMS-DOSのころのように、コマンドで設定ファイルを調べ、スクリーンエディタで該当箇所をサーチし、置き換えたらバイナリをMakeし、kill -HUPしなくてはならないのだ。
ようやくポートの書き換え箇所がわかるが25を587に変更したものの、ポートの開放方法がわからない。設定ファイルが二重、三重の構造になっているのだ。送信メールサーバーのアプリケーションであるSendmailの設定ファイル/etc/sendmail.cfは書き換えが難解なことが有名なファイルであり、それを書き換えるためのツールが何種類も存在する。有名なのはm4やCFだが、ネットで情報を探してみるとポート書き換えの方法は主にm4ベースで紹介されている。うちで使っているのはCFなのに。英語の文献などあちこちやって試してみるがなかなかうまくいかず。職場にいない時間も含め三日間くらい時間を費やした。
そしてなんとかポート開放もでき、スキャンツールで確認しても587が開くに至った。しかし肝心のメールが送達されないでキューにたまっていくのである。ほとほと疲れてしまった。もういいか。教室からメールを送るのはあきらめてもらって、送信は事務局や自宅からやってもらうか…と、書き換えたファイルを元に戻していった。そして最後にルーターのポート設定を元に戻そうとしたとき、ひらめいたのである。NATである。NATはローカルIPとグローバルIPを変換して、外と内でのアドレスをだましあうシステムなのだが、IPだけではなくポートもだませるのだ。内では25番ポートで動いているメールサーバーを、ルーターの外では587にだませばよいのだ! 実際そうしてみたらすべてうまくいった。そしてさらに、今までどおりの25番ポートを使っているソフトウェアからも、それはそれでNATを通してやれば、それもエラーは出ない。
全部解決した。三日間の苦労は何だったのだろう。でもこの問題解決のおかけで、sendmail.cfや/etc/servicesやm4,CFなどネットワーク関連のスキルがまたひとつ上がったと思う。これまでもいろいろなネットワーク問題が持ち上がるたびに、形はどうあれ解決してきたのは事実だ。これらの経験から「解決しない試練は来ない」と断言できるのがうれしい。