- PR -

postfixのセッションについて

投稿者投稿内容
y-ono
会議室デビュー日: 2006/06/21
投稿数: 6
投稿日時: 2006-06-21 17:53
postfixのSMTPセッションについてお聞きしたいことがあります
有識者のみなさまからご教授いただければと思います。

<構成>
現在ウイルスチェックサーバをメールゲートウェイに設置し2台同じコンフィグにて冗長化し、前段LBにて振り分けるという構成にしています。
このサーバのMTAにpostfixを使用し、受け付けるメールはexample.co.jpと*.example.co.jpのみ内部ドメインサーバへ配送し、内部からのメールはすべての宛先へ配送する設定になっています。またSPM対策にアドレス検証の問い合わせの際に遅延を30秒入れています。

<経緯>
ある日1台を止めて残りの1台のみで稼動しているときメールが1時間ほど遅延していると言われ調査を実施、原因を切り分けるためpostfix,LBのログを調査、前段LBのヘルスチェックのログから頻繁にdownステータスがでていることが判明(downの際はsmtpセッションを転送しなくなる、ヘルスチェックは25番ポートへ実行)しかしなぜセッションが張れなくなるのかという根本的な問題が解決しません。

<お聞きしたいこと>
原因はセッション関係のパラメータかSPM対策のパラメータにあると考えているのですが今回の現象に関係がありそうなパラメータをご存知のかた教えていただけますでしょうか

長文で申し訳ありません
有識者のかたのご教授をお願いいたします。
zume
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 93
投稿日時: 2006-06-21 20:52
こんばんは。

postfixのバージョンは?
ウィルスチェックには何をお使いですか?
postfixのコンフィグを提示できますか?(postconf -nの結果)

引用:

<経緯>
ある日1台を止めて残りの1台のみで稼動しているときメールが1時間ほど遅延していると言われ調査を実施、原因を切り分けるためpostfix,LBのログを調査、前段LBのヘルスチェックのログから頻繁にdownステータスがでていることが判明(downの際はsmtpセッションを転送しなくなる、ヘルスチェックは25番ポートへ実行)しかしなぜセッションが張れなくなるのかという根本的な問題が解決しません。


この時に、postfixのログには何か普段と違うログは出力されてませんでしたか?
y-ono
会議室デビュー日: 2006/06/21
投稿数: 6
投稿日時: 2006-06-22 15:20
to:zume様 返信ありがとうございます

postfixバージョン postfix-2.2.8-4.rhel3
ウイルスチェック TrendMicro社 InterScanMessagingSecuritySuite
postconf -nの出力

2bounce_notice_recipient = d-bounce@(FQDN)
address_verify_poll_delay = 30s
alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
bounce_queue_lifetime = 3d
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = ****:localhost:10025
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
default_process_limit = 200
disable_vrfy_command = yes
fallback_relay = ****@**.**.**:25                       #←エラーメールの配送先
html_directory = /usr/share/doc/postfix-2.2.8-documentation/html
inet_interfaces = all
mail_owner = postfix
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
maximal_backoff_time = 14400
maximal_queue_lifetime = 7d
message_size_limit = 51380224
minimal_backoff_time = 900
mydestination = (FQDN), localhost.**.**.**
mydomain = **.**.**
myhostname = (FQDN)
mynetworks = ***.***.0.0/16, ***.**.0.0/16, 127.0.0.0/8, ***.***.0.90/32
newaliases_path = /usr/bin/newaliases.postfix
notify_classes = resource,software
queue_directory = /mqueue/postfix
readme_directory = /usr/share/doc/postfix-2.2.8-documentation/readme
relay_domains = $内部ドメイン1, $内部ドメイン2, $内部ドメイン3, $内部ドメイン #←リレーを許可するドメイン
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = (FQDN) ESMTP
smtpd_helo_required = yes
smtpd_recipient_limit = 1000
smtpd_sender_restrictions = permit_mynetworks, check_sender_access hash:/etc/pos
tfix/sender_access, reject_unknown_sender_domain, reject_unverified_sender
smtpd_timeout = 600s
unknown_local_recipient_reject_code = 550

長文で申し訳ありません。追加でmaillogを調査しているところでございますが
ひとつ気になる箇所が見つかりましたのでご報告させていただきます。

lost connection after CONNECT from unknown[***.***.***.***]

という出力が頻繁にでているような気がします。通常正常に配送しているログですと
connect from unknown[***.***.***.***]

disconnect from unknown[***.***.***.***]
と出力されるのですがlost connection〜の意味をぐぐってみたのですがなかなかでてきませんでした。やはりコネクション関連に原因があると思っているのですが.....
ご存知のかたいらっしゃいましたら教えていただけますでしょうか



かつ
ベテラン
会議室デビュー日: 2006/04/04
投稿数: 56
投稿日時: 2006-06-23 15:33
>lost connection after CONNECT from unknown[***.***.***.***]

これはSMTPセッションを張った後、QUITでは無い何かの原因でコネクションを切った場合に出ます。

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
(Ctrl+]で抜ける)
telnet> quit

とやると、上記ログが出ます。
PortScan とかですかね。

LBからのヘルスチェックとかPortScanとかでTIME_WAITなセッションが多く残っている可能性もあると思います。

OS側のセッション保持時間を短くするとかを試してみてはいかがでしょう。
(OSが書いてないので、やり方までは書けませんが…)


[ メッセージ編集済み 編集者: かつ 編集日時 2006-06-23 15:35 ]
zume
ベテラン
会議室デビュー日: 2003/06/05
投稿数: 93
投稿日時: 2006-06-23 20:51
こんばんは。

postconf -nの出力結果からは、postfixが1時間も延滞させるような設定は
されてませんね。
という事で、疑えるのはやはりLBかInterScanMSSですかね。

で、(メールが延滞とあるので、違うとは思いますが)可能性として。。。

InterScanMSSで自動アップデートを利用されてませんか?
Linux+InterScanの組み合わせだと、その自動アップデート後にサービスが上手く
リロード出来ずにSMTPのセッションが張れない状態に陥る事が結構ありました。
※手動でアップデートしても駄目な時は駄目ですけど

※この現象はpatch4で解消されたようです
 http://esupport.trendmicro.co.jp/supportjp/viewxml.do?ContentID=11379
y-ono
会議室デビュー日: 2006/06/21
投稿数: 6
投稿日時: 2006-06-30 10:38
遅くなり大変申し訳ありません。

引用:

InterScanMSSで自動アップデートを利用されてませんか?


確認したところPatch4を適応していました。情報ありがとうございます。

引用:

これはSMTPセッションを張った後、QUITでは無い何かの原因でコネクションを切った場合に出ます。



ありがとうございます。現在Spamなどが大変多く、lost connection after ****
という出力が頻繁にログに出ています。本当はPostfixの受け側でなにか対策を考え
なくてはいけないのですが...。(spamは以前からも頻繁に来ていたので今回のセッションのことにはあまり関係がないのでしょうか?)

引用:

LBからのヘルスチェックとかPortScanとかでTIME_WAITなセッションが多く残っている可能性もあると思います。


TIME_WAITやその他CLOSE_****などのセッションが残っていると影響があるのでしょうか?(セッションを受付ずらくなるとか)またnetstat -an | grep :25などで確認すると
受信の:25のソケット数が100前後あることがわかりました。未熟で申し訳ありませんがデフォルトの default_process_limit = が100だったと認識しておりますが、その数はソケットの開ける数とイコールなのでしょうか?もしその場合、ソケットを100開いた状態で次のセッション要求が届くとソケットが空くまで:25で待たされ、時間がすぎるとタイムアウトし、一定時間後再送→同じく待たされタイムアウトの繰り返しで遅延しているのではと自分では考えています。かなり妄想の域をでないのですがこの場合、default_process_limitの値を少しずつ高くしていき様子をみたいと思っています。

上記の考え方について有識者の方々のご指南をいただければ幸いです。
かつ
ベテラン
会議室デビュー日: 2006/04/04
投稿数: 56
投稿日時: 2006-07-07 14:01
>TIME_WAITやその他CLOSE_****などのセッションが残っていると影響があるのでしょうか?
あると思います。OS側のパラメータで同じプロセスで受け付ける事の出来るセッションは上限が設定されていると思います。

TCP通信では、セッションを開始する際の負荷が結構高いので、なるべくその負荷を軽減する為にTIME_WAIT状態を数分維持して再利用しようとします。
これがトラフィックの多いサーバ(Webサーバとかメールサーバとか)だと悪影響となり、新規接続が出来なく事があります

IMSSだと、トレンドマイクロ社からの資料でこの辺のOSパラメーターを変更する様に書いてありませんか?(何の資料だったかな?)
前にも書きましたが「y-onoさんのOS環境が書いていない」ので、変更方法が書けません。
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2006-07-08 20:02
引用:

y-onoさんの書き込み (2006-06-30 10:38) より:
TIME_WAITやその他CLOSE_****などのセッションが残っていると影響があるのでしょうか?


TIME_WAIT状態は、「漂流するパケット」への対策として設けられて
いるものです。先にTCP接続を終了した側(サーバ側・クライアント側
という役割とは関係ない)は一定時間、必ずこの状態に入ります。
とりあえず、「使用禁止期間」とでも思っておけばいいでしょう。
「使用中」というわけではないので、(何千も溜まっている、という
ようなことが無い限り)ほとんど影響はありません。

引用:

(セッションを受付ずらくなるとか)またnetstat -an | grep :25などで確認すると
受信の:25のソケット数が100前後あることがわかりました。


TIME_WAIT以外でその数だとすると、かなり多いですね。
IMSSのせいかな?
・そもそも秒間接続数が多い
・接続元が遅い
・自サーバの処理速度不足で、処理待ちが溜まっている
のどれなのか、突き止めることが先決でしょう。

引用:

ソケットを100開いた状態で次のセッション要求が届くとソケットが空くまで:25で待たされ、時間がすぎるとタイムアウトし、一定時間後再送→同じく待たされタイムアウトの繰り返しで遅延しているのではと自分では考えています。


そういうことは起こります。
ですが、単にプロセス数の上限を上げればいいというものではなく
(下手をすると現在より更に悪くなる可能性もある)、まずは
現状を把握することです。

スキルアップ/キャリアアップ(JOB@IT)