電気ウナギ的○○

About Home

久々の tcpserver 起動設定変更

shinoda (2016年11月22日 18:59)
いやあ、まあ、今時?な話なんで、こんなところに書いてもあんまり参考になりませんが、俺の備忘録代わりに。

もうずっと(サーバは乗り換えつつも基本的な環境は変更せず)動いてるシステムがあって、そのメールサーバが、tcpserver(ucspi-tcp)+qmail という形で構築されている。

今回、このメールサーバを某プロバイダのロードバランサー(以降 LB)の下に移動することになった。
MX にロードバランサーの IP を指定して、外部からのメールは LB の 25番ポートに届くんで、それをネットワーク内部にいるメールサーバの 25番に振り分ける・・・っていう運用ね。

これが上手くいかないの(^^;

/etc/tcp.smtp には LB の IP も登録し、実際、/var/log/messages を見ると、LB からメールサーバの 25番ポートには接続に来ている。
実際、メールサーバ側の /usr/local/bin/tcpserver も起動するしね。
しかし、送り元に 220 コード(正常に接続できたという意味のコードNo)は返ってこない。

$ telnet smtp.exsample.co.jp 25
Trying 202.XXX.XXX.116...
Connected to smtp.exsample.co.jp.
Escape character is '^]'.
Connection closed by foreign host.

と切れちゃう。

正常に接続できれば、

$ telnet smtp.exsample.co.jp 25
Trying 202.XXX.XXX.116...
Connected to smtp.exsample.co.jp.
Escape character is '^]'.
220 smtp.exsample.co.jp ESMTP
QUIT
221 smtp.exsample.co.jp
Connection closed by foreign host.

と、こんな感じなんだけど。

なんじゃあ???
送った側の /var/log/maillog 見てみると、

Nov 22 16:02:12 smtp qmail: 1479798132.340284 delivery 1015263: deferral: Connected_to_202.XX.XX.116_but_connection_died._(#4.4.2)/

だって。
接続後数秒してから切れるので、タイムアウトくさい。tcpserver が答えを返さない?あるいは tcpserver が必要としている情報が LB から来ない?(直接インターネットから接続すると上手くいくので、LB 独自の何か・・・なんだろうけど)

結論から言うと、tcpserver が TCPREMOTEINFO を取得しようとするが、LB からは取得できず待ちにはいっちゃって、LB側がセッションを切ってる感じかな?
LB 側のセッション切れた後も、しばらく tcpserver は起動しているからそういうこと?

結局、tcpserver の起動オプションに「接続元ホストから $TCPREMOTEINFO を取得しない」という意味の R をつければよかった。

/usr/local/bin/tcpserver -v -u ~(以下略)
 ↓
/usr/local/bin/tcpserver -vR -u ~(以下略)

という感じ。

これで、問題なく LB 経由で内部のメールサーバにメールが届くようになった。

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/4180

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE