こんにちは。もともと別の仕事をしていたのに某サイトのネットワーク管理をまかされて「掛け持ち管理者」をやってます。掛け持ちなので、どうしてもネットワーク管理に身が入りません。といっても、ネットワークがちゃんとしていないと自分も困りますから、「最小限の労力で最大の効果」を探る日々が続いてます。
ここではそんな日々の中で、ちょっと覚えておきたいことをメモ代わりにまとめたいと思います。
OP25B(Outbound Port 25 Blocking)って何?
最近スパムメール対策の一環として多くのインターネットプロバイダが導入している「OP25B」。ご存じの方も多いと思います。メール送信(SMTP)には25番のポートを使うのですが、プロバイダのネットワークから外に出て行く通信のうち、この25番ポートを使ったデータを遮断することで、プロバイダが用意したメールサーバを経由したメール以外は通さなくします。
現在スパムメールのほとんどは、「ボット(Bot)」と呼ばれる機器から発信されていると言われています。ボットとは、ウィルスに感染したり、インターネットを通してクラッキングされて、遠隔操作プログラムを埋め込まれたPCや情報機器のことです。ボットとなった機器は一見正常に動いているように見えますが、その裏ではクラッカーの意のままにあやつられています。もしかしたらあなたが今使っているPCが、いつの間にかボットになっているかも知れないのです。
ボットは数千台~1万台以上が連携して「ボットネット」と呼ばれる、いわば裏のネットワークでつながっていて、これらからスパムメールが一斉に送信されるので、たとえ1台のスパム送信元を割り出したとしても、それこそ氷山の一角にも満たないのです。
話がそれてしまいましたが、OP25Bは、これらボットから送信されるスパムメールを止めるのに効果的です。ボットは自身の中にメール配信の仕組みを持っているため、プロバイダのメールサーバ経由でメールを送信しません。プロバイダのメールサーバを通さないメールをブロックすることで、ボットからのスパムはほぼ防ぐことができるのです。
止まるのはスパムだけじゃない
OP25Bによって困ってしまう人もいます。自宅(自前)でメールサーバを立てているプロバイダのユーザや、自宅/出先から会社のメールサーバを使ってメールを送ろうとする人は、25番ポートを塞がれるとメールが出せなくなります[1]。
このうち前者-つまり自宅でメールサーバを立てている人は、そのメールサーバから出すすべてのメールが、プロバイダのメールサーバを経由するように設定しなおすしかありません。
では後者、会社のメールサーバを利用したい人はどうでしょう? こうした人のためにまさに「抜け穴」があります。つまり、25番の代わりに別のポートを使ってメールを出すのです。このために[587番ポート=Submission Port]というのが用意されています。別に何番でも良いわけですが、RFC2476 "Message Submission"で決められている由緒正しいポートが587番なのです。
ではこのSubmissionポートを使うにはどうするか? メールソフトの設定は、お使いのプロバイダの説明やら、いろいろなところで目にすると思いますので、そちらをご覧ください。今回は、これに対応するメールサーバのお話。
「自分に影響あるか?」が行動基準
ここからがやっと本題です。
会社のメールサーバを使って自宅からメールを送っている社員が、ある日「使っているプロバイダがOP25Bをはじめたのでメールが使えない」と言ってきました。続けて言うには「プロバイダによると、58なんちゃらのポートなら開いているので、それを使ってメールを出せるようにして欲しい」とのこと。OP25Bの話は知ってて、500番台のポートで回避するようなことは何となく読んでいたんですが、そのときはあまり乗り気ではなくて、「ふーん。ヒマになったらやっとくわ」。…だって自分に関係ありませんから。
ところが、その人が行ってしまってからハタと気づきました。「待てよ? そういえば最近俺も家からメール送るのに失敗するようになってた…」。調べてみると、確かに自分の入っているプロバイダが、この春からBP25Bを始めています。ちょうどそのころ旅行に行って、旅行先からメールを出すのに失敗したので、その設定が残っているせいだと勝手に思いこんでいたのです。思いこみはいけませんね。
というわけで、さっそくOP25BのSubmissionポートに対応するための方法を調べて、設定することにしました。今や最優先事項です。だって自分が不便だから。
Postfixはスバラシイ!
ウチのサイトのメールサーバはPC UNIX、サーバソフトはPostfixという、ごくありきたりな構成です。調べてみると、超簡単でした。
OP25B対策ではPostfixの設定ファイルmaster.cfを変更します。ふつうPostfixの設定はmain.cfという設定ファイルをいじるので、ちょっと変わってますね。私はmaster.cfというファイルを初めて開きましたよ[2]。
submissionで始まる行の頭にコメント用の # がついていたのを外す。これだけでSubmissionのサービスが有効になるのです。この設定を変えてPostfixに設定ファイルを再読込させる(postfix reload)と、Submissionポートの587番のメールを受け付けるようになります[3]。
「しかし待てよ…」あまりにも順調な展開に不安になりました。master.cfにも、他のどこのファイルにも、submissionという文字はあるのに、そのポート番号587がまったく出てこないのです。Postfixは、いったいどこでSubmissionポートが587だと知ったのでしょうか?
答はPostfixとは違うところにありました。/etc/servicesというファイルです。ここには、UNIXで使う各種通信プロトコルとポート番号の変換表が入っています。Postfixもここを見ていたのでした。
たしかに587が「submission」になっていますね。
この/etc/servicesというのも、日ごろあまり開いてみることがないファイルです。…ひょっとして私だけ?
さいごに
ファイアウォールを固めているサイトの場合は、587番ポートを開ける設定を忘れないでください。私もしばらくそれで「なんで設定したのに通らないんだろう」と悩みました。