Chienomi

簡易的なOP25B対応

ネットワーキング

様々な仕事が滞っている中なので、先行してメールを送れるようにだけはしておいた。

OP25Bとは、SMTPサーバーポートである25をISPが中継しない、というものだ。スパム対策だというのだが、実際は自由にメールを使わせない、メールをISPで一元化するものとなっている。

メールアカウントが提供するサーバーをそのまま使っていれば特に不自由は感じないという人もいるだろうが、近年のSMTPサーバーサービスはかなり複雑に認証され、フィルタされることもあって使い勝手は著しくよくない。以前ならそれに対する対応としてローカルなメールサーバーを使えばよかったのだが、今度はそれがISPによって蓋をされた格好になる。

各家庭でMTAから出す、ということそのものが特殊な要求と見るのかもしれないが、今はそもそもSMTPサーバーを提供しないメールアカウントも珍しくないので、やはりの必要だし、自宅でのメールサーバー公開もできない。

とりあえずシンプルな方法として、セキュアで確実にリレーしてくれるMTAが欲しい、ということで工夫してみた。

まず、VPSにPostfixを導入する。そして、次のように設定する。

inet_interfaces = localhost mynetworks_style = host

これ以外についても適切に設定するが、これで外部からメールを受けとらないためセキュアな設定となる。もちろん、外部からメールを受けとるように設定する場合には、より広く適切な設定が求められる。

この状態ではSMTPを用いてメールを送信することができるのはVPS自身だけだ。しかし、VPSのループバックインターフェイス経由ならば送信できるため、SSHのポートフォワーディングを用いることで他のホストからのメールを中継してもらうことができる。

これには次のコマンドを使用する。

$ ssh -x -L 2500:localhost:25 remorthost.example.com

「ローカルの1024以下のポートを転送する場合、ローカルのroot権限が必要」なのであり、ここでは2500番ポートをリモートの25番ポートに転送することでroot権限なしに実現している。なお、リモートホストの名前はlocalhostにしないと、loインターフェイス経由での接続にならないので注意が必要。インターフェイスを気にしなければFQDNで指定しても接続できてしまうことがあるから、理解していないことがある。

-Lオプションのまんなかのargは、後で指定するhostが名前解決をし、接続するための名前だ。つまり、localhostを解決するのは、リモートホストで、リモートホストにとっての::1/127.0.0.1に接続される。

-nオプションを使えばバックグラウンド接続が可能なはずだが、ServerMans@VPSではそれができなかった。接続そのものが切られてしまう。タイムアウトして接続は切られてしまうし、不要なターミナルセッションが生まれてしまうが、通常通りのログインとした。

あとはMUAのSMTPサーバーとしてlocalhost:2500を指定すれば、MUAはVPSのPostfixとやりとりをしてメールを送信することになる。通信はssh(通常は22番ポート)を経由するため、25番ポートをブロックするOP25Bにはひっかからない。

VPSの活用方法としては一般ユーザーでも意味のある方法になるのではなかろうか。もっとも、セキュリティ管理などを考えれば一般ユーザーに進められる方法ではないが。