メール送信不具合の初期調査方法

■メール送信不具合の初期調査方法
相手先にメールが適切に届かないケースにおける初期調査手法。
ここではCommuniGate Proをベースに説明するが他のMTAでも同様。

「メールが適切に届かない」とは、SMTPでUser unknowとか明示的なエラーが帰って来るケースではなく、セッションがリセットされたり再送を繰り返してしまうようなケースを想定する。
以下手順。

1)STMP送信の詳細なログを取得する
 CommuniGate Proの管理画面に入り、「設定」>「メール」>「SMTP」>「送信」タブを開き、「ログレベル」を「全情報」にして「更新」ボタンを押す。これで設定した直後からほぼSMTP通信(送信/outgoing)のみがTCPダンプレベルでログに記録される。この設定をして問題の発生している相手先にメールを送信してみる。
 CommuniGate Proを使っていない場合には、素直にWireSharkとかtcpdumpを利用する。また、送信時にSMTP Proxy経由で送り出すようなケースはMTAでダンプ取得するのではなく、相手先と最終的に通信している機器で取得することを推奨する。

2)相手先のIPアドレスやMTAをログに記録された内容のバナー情報等から読み取る
 TCPダンプレベルのログが記録されるので、相手先MTAのSMTP応答も全て読み取ることができる。バナーがフェイク設定されていなければおよそ相手先のMTAが判断できる。

3)digコマンドで宛先ホストが正しいか確認する(サーバとは別マシンで行うのがよい)
 $ dig 先方ドメイン MX

4)digコマンドででホスト情報を確認する(サーバとは別マシンで行うのがよい)
 $ dig 先方MX宛先 A

5)ホスト情報から得られたIPアドレスの所有者をANSI WHOIS等で確認する
 3,4,5のこれらを確認することで、メールASPサービスを利用しているのか、自社設置しているのか、おおよそ判断することが可能になる。自社IP、自社サーバで運用している場合はメールサーバ管理者と直接コンタクトできる可能性が経験上高い。自社持ちでも運用を委託しているケースはあるので必ずではない。

6)メールASP等を利用している場合にはASPのサービスを調査する
 MXやIPネットワークが別ドメインだったり別会社名義だったりする場合には、他社委託やASPサービスを利用している可能性が高く、このケースはメールサーバ管理者とコンタクトできない率が多少高い。大手ASPなどは特定メールのトラブルにはほとんど取り合ってくれないので、世の中の事例検索に頼ることになる。

※ここまでの情報で、発生した応答メッセージ等で検索して類似事例を探す
 先方に問い合わせしないでできる範囲はここまで
 以下は相手先メールサーバ管理者と連絡が取れた場合。

7)相手先のメールサーバ管理者に状況を報告する
 起きている事象を的確に、できればログを添えて相手方に伝える。特に複数回確認できていること、取引上の支障になっていることなどを添えると効果は高い。ログを提出するのはタイムスタンプ等を比較して先方の調査を容易にするため。

8)可能であれば先方のメールサーバログを調査していただく
 自社持ちでも外部に管理を委託しているケースもあるので、あくまで調査可能か伺いを立てた上で依頼する。この時にこちらのログを提出しているとスムーズにやってもらえることが多い。ただし経験上外資系はほとんどダメ。調査はしてくれても結果を教えてもらえないとか…結構あった…。

9)先方のメール受信構成(SPAM対策など)をできるだけ詳しく聞く
 問題がMTAなのかSMTP proxyやロードバランサ等中継している経路にあるのか可能性を広げて検討を行うため、可能な限り構成についてヒアリングを行う。これも大手になればなるほど教えてもらえない率が高い。

10)同じアドレスに別サーバから同じメールを送信してTCPダンプした結果を比較する
 相手先と協調して、複数パターンで送信テストを行い、受信可能なパターンと不可能なパターンを洗い出す。この時双方でTCPレベルのダンプデータを突き合わせると意外なことがわかったりする。(TCPのダンプを行うのは、大抵SMTPレベルで解決しないから)

※再度、発生した応答メッセージ等で検索して類似事例を探す
 ここまでしてわからないケースはお手上げなのだが、そういうレベルのトラブルはMTAそのものではなく、OSのTCP設定やFirewall/ロードバランサなど複数の要因が関わっていることがあるので、構成がヒアリングできていると構成機器のバグ情報を探すことで原因が判明したりする。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (まだ評価されていません)
Loading...

CentOSサーバの負荷試験中の記録取得方法

■CentOSサーバの負荷試験中の記録取得方法
iowaitに大きな影響を与えるファイルシステムの負荷試験の最中に実マシンだけでCPUの負荷状況の記録をできるだけiowaitに影響しない形式で記録取得する方法。

CPUの稼動状況を2秒おきにn回取得する (英語で)
# LANG=C sar -u 2 n > /dev/shm/cpu.log

ロードアベレージを2秒おきにn回取得する (英語で)
# LANG=C sar -q 2 n > /dev/shm/cpu.log

取得した値をグラフツールなどで加工すればより見やすく比較できる。

tmpfs(オンメモリに書くためディスクのiowaitの影響を受けない)に書き込むため、再起動するとデータが消えてしまう。注意。メモリの少ないマシンではオススメしない。

sarコマンドは -oオプションでログを書き出すことができるが、バイナリログでサイズもかなり大きくなるので、その方法は取らず上記のやり方を選択した。

, ,
とりあえず付けておく無駄ではなかったなまぁまぁ読めたちょっと役に立ったかなかなり良かったかも (1 投票, 平均値/最大値: 5.00 / 5)
Loading...