何年か前に借りていたVPSがソフトウェア的にも古くなってきたので、新しいサーバを構築して移転することにした。
いつものようにさくらのVPSを借りる。
さくらのVPSには申し込んでから2週間の無料お試し期間があるんだけど、その間は利用制限があり、ネットワークが外部の25番ポートへ接続できないよう(OP25B設定)になっている。
ご利用上の注意 | VPS(仮想専用サーバ)「さくらのVPS」
メール送信用のポート番号となる外向きの25番ポートを閉じた設定でのご提供です。
つまり、外部のメールサーバの25番ポートに接続できないのでメールの送信ができないということだ。
無料期間中に大量の迷惑メール配信をする輩がいたのだろう。記憶ではサービス開始当初は無料期間中もメール送信できていたと思う。
この利用制限があるとSMTPのテストやメールを送信する機能のあるプログラムのテストがやりにくいのが難点。
これまで何度か利用した際には、すぐにクレジット決済をして無料期間を強制的に終了させることで本番環境と同じ状態にしていた。
今回は、「外部への587番ポートだったら通るんじゃない?」と思い立ち、telnetコマンドで調べてみたら問題なかったので、他に利用しているサーバを経由して無料期間中でもメール送信することを試してみた。
概要
さくらVPSも外部の経由用メールサーバもCentOS, Postfixで運用しているとする。
そして、外部メールサーバはすでにOP25B対策に対応しており587番ポートでメールを受信できることを想定している。
その設定についてはここでは説明しない。
- 無料期間のさくらVPS
vps.example.com 192.0.2.1 (Postfix) - 外部メールサーバ
mail.example.com 192.0.2.2 (Postfix)
587番ポートは既に使用可能とする
外部メールサーバ側の設定 さくらVPSからのメールのリレー(中継)を許可
mail.example.comにおいて、/etc/postfix/main.cfを編集してmynetworksにvps.example.comのIPアドレス 192.0.2.1を追加する。Postfixをリロードして設定を反映させる。
# vi /etc/postfix/main.cf -------------------------------------- mynetworks = 127.0.0.1/32, 192.0.2.1 -------------------------------------- # /etc/init.d/postfix reload
さくらVPS側の設定 メールのリレー先を指定
vps.example.comにおいて、/etc/postfix/main.cfを編集してメールのリレー先として外部メールサーバを指定する。
“[ホスト名]:ポート番号”もしくは”[IPアドレス]:ポート番号”と記述する。
ちなみに、[]を外した場合はそのMXレコードをルックアップして送信される。
# vi /etc/postfix/main.cf -------------------------------------- relayhost = [mail.example.com]:587 -------------------------------------- # /etc/init.d/postfix reload
通常であれば587番ポートへのメール送信には認証が必要だが先の設定により、このサーバからのメールは認証無しに中継してくれることになる。
おわり
これで、自ホスト向けのメールは受信しつつ、外部へのメール送信は外部メールサーバを中継して、インターネットへ抜けることができる。
あくまでも一時的な設定なので本番環境として利用するときには設定を戻すことを忘れないようにしよう。