CentOS6.x

メールサーバを移行(引っ越し)する際、ネックとなるのはDNSが浸透する間、引っ越し前のサーバ(旧サーバ)に配送されてくるメールや旧サーバにアクセスしてくるPOP3クライアントです

ここではPOP3クライアントについて、旧サーバにアクセスしてきたものを新サーバにポート転送することでこの問題を解決したいと思います

問題の整理

下の図のように、メールサーバを移行(引っ越し)しても、DNSが浸透するまではPOP3クライアントは旧サーバにアクセスしてきます


これだと、せっかく届いたメールが受信できず困ってしまいます

iptablesのポート転送を使って新サーバに向ける

旧サーバにアクセスにきたものを新サーバにポート転送することによりこの問題を解決してみたいと思います

ポート転送はiptablesに設定を行うことで実現させます

設定してみる

それでは、実際にポート転送の設定を行ってみたいと思います

設定は旧サーバ(引っ越し前のサーバ)に対して行います

旧サーバはCentOS6.xとして話を進めます

IPv4フォワーディングを有効にする

ポート転送を行う為、IPv4フォワーディングを有効にしておく必要があります

IPv4フォワーディングを有効にするには、 /etc/sysctl.conf に以下の設定を行います

net.ipv4.ip_forward = 1

変更後はネットワークを再起動する必要があります

# service network restart 

iptablesの設定

iptablesの設定ファイルは、 /etc/sysconfig/iptables ですので、このファイルに対して以下の設定を行います

   :        :
   :        :
   :        :
# 以下が定義されていた場合、POP3アクセスを別サーバに転送する場合はコメントにする
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

# ※以下を追記し、ポート転送の設定を行う
# また、旧サーバへのアクセスがなくなったことが確認できる様に、ログを出力するようにする
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 引越し前サーバIP -p tcp --dport 110 -j LOG --log-prefix "POP3_NAT_LOG : "   --log-level=info
-A PREROUTING -d 引越し前サーバIP -p tcp --dport 110 -j DNAT --to 引越し後サーバIP
-A POSTROUTING -d 引越し後サーバIP -p tcp --dport 110 -j SNAT --to 引越し前サーバIP
COMMIT

変更後はiptablesを再起動します

# service iptables restart 

これで、旧サーバへのPOP3アクセスがすべて新サーバに転送されるようになります

確認

適当なメールクライアントで旧サーバに対してPOP3メール受信してみてください

新サーバのメールボックス内のメールが受信できれば成功です

関連ページ