
たった一つのちょっとした問題でメールが遅い。。。
ヘッドライン
昨日、DNSのレコード設定のミスからメールの受信が変である。という問題に直面した。
今日はその問題が解決されたにもかかわらず、メール受信にやたら時間がかかっているという問題に直面した。
外部サーバーからメールを送信しても10分以上経過しないと受信できない。
今までそこまで細かく検証してこなかったし、10分程度の遅れは気になっていなかった。
しかし、今日、ある外部のお客様から、【うちのホームページからの問い合わせフォームって誰にメールが届くの?】と聞かれました。
こちらの回答はその会社の社長様に届くよう設定してあり、ご用命があれば変更できますと答えました。
しかし、急に怖くなったので、一応テストでフォームから私に向けて送信してみました。
問い合わせの控えが問い合わせ主に届くようフォームを作ってあるので、私に届くはずでした。。
しかし、届かない。。。。
もしかして、プログラムミスってて、フォームが機能していないのではないか。。と。
その疑いを解消するために、今度は管理者として私のメールにメールが届くよう設定して送信。
やはり届かない。
やっぱりプログラムがおかしいのかもしれない。と思いつつも、そのお客様がご利用なさっているサーバーのメールキューを確認。
見事に、当方のメールだけがメール遅延ということで、キューに残っていた。
フォームは全く問題がなく、当方が利用しているサーバーへのメール送信が”遅い”ということが判明してしまった。
昨日の問題だけなら、そのドメインだけが遅いはず
なので、同じサーバーだけど、別のドメインに向けてメールを送信。やはり届かない。。。
そうこうしているうちに10分程度経過したのちにメールが届いた。
やはりおかしい。
届くには届くが遅延しているのだ。
フォームではなく、Yahooや、Gmailでこのサーバーに向けてメールを送信。
やはり、10分程度経過しないとメールが届かない。
こうなってしまうと、ログを漁ってみるしかない。
ログは送信直後に受信したログが残っていた
不思議なことに、メールがメーラーで受信されるのに10分かかっているのに、サーバー自体では即時メールを受け取っているのだ。
メールログを見ると、送信して数秒後にはメールを受信しクローズしている。
ではなぜそうなるのか。。。正直皆目見当がつかなかった。
メールサーバーが原因ではないのではないか?
こう疑い始めた。
どういうことかというと、メールサーバーに到達してそれからメールを受信できる状態になるまでに10分という経過時間があるということなので、その間に何かが遅いものがあるということなのではないかと。
当サーバーにはメールウィルスチェックは行わせておらず(メモリばかり食うことを知っているのでクライアント側で処理することにした)、結論として、SPAMチェックが原因ではないかと感じた。
RBLは使っていないので、内部サーバーのSPAMフィルタだ。
結論でいうと、この推測が大当たり。
サーバー全体ではなく、個別にSPAMフィルタの利用可否を決めるよう設定した結果即時受信できるようになった。
原因は一つのアカウント
10年来使い続けているアカウントがある。
また、10年来のメールをIMAP受信、要は、サーバーにメールを残している。
結果、総勢1万通近くのメールをサーバーに残している状態だ。
当サーバーは残念ながらext3でフォーマットされたHDDなので、この1万通のメールはパフォーマンスに影響してくるだろう。
もちろん、INBOXには数百数しかたまっておらず、そこまで影響しないとは思っていたが、SPAMフィルタの仕様なのか、全体のメール数が増えれば増えるほど重い。
なので、このアカウントのスパムフィルタは消すことにした。
それで早くなった。
まとめ
今回はSPAMフィルタを入れると遅いという原因だが、
これには理由がある。
どれだけのSPAMメールをサイレントに削除しているのか、など理解せず利用していると、目に見えないだけで実はガンガンメールを削除していて負荷がかかっている可能性もある。
また、SPAM認識されたメールに大きな容量の添付ファイルがついていたらそのメールの処理をするのに負荷がかかる。
その間、メール系のシステムが止まっている可能性もある。
そういった要素も含んでいるから遅かったのかもしれない。
メールに限らず、自分が全容を把握できず利用するのはやはり怖いものがある。
SPAMやウィルスに関してはできればクライアントのソフトで対応させた方が確実だろう。