none
【VB.net】「既存の接続はリモート ホストに強制的に切断されました」エラーでSMTPメール送信ができないことがある RRS feed

  • 質問

  • VB.net で Webアプリケーションを稼働させているのですが、
    そのアプリケーションの中で、メールサーバーへSMTPでメールを転送する部分があります。

    その処理は基本的には問題なく動いているのですが、
    不定期に以下のエラーでメール送信ができないことがあります。

     System.Net.Mail.SmtpException: メールを送信できませんでした。
     ---> System.IO.IOException: 転送接続にデータを書き込めません: 既存の接続はリモート ホストに強制的に切断されました。。
     ---> System.Net.Sockets.SocketException: 既存の接続はリモート ホストに強制的に切断されました。

    このアプリケーションは、Windows Server 2008 R2 上の IIS で実行しており、
    当初はメッセージにある通り、転送先のSMTPサーバーが切断しているものと思っていましたが、
    そのSMTPサーバー側で調査しても、SMTP接続自体の痕跡がないことがわかりました。
    そこで、このWin 2008 R2サーバー側でパケットキャプチャーしたところ、
    このサーバーからSMTPパケット自体が出されていないことが分かりました。

    基本的には正常に処理されるので、ロジック的な問題は感じておらず、
    エラーが発生するようになったのが、
    このサーバーをWindows Server 2003 から 2008 R2にリプレイスして以降だったことから、
    Win 2008 R2(やIIS)に起因した問題ではないかと調査し、
    ひとまず有効になっていた SNP(Scalable Networking Pack) を無効にして様子を見ていましたが、
    再発してしまいました。

    ただ、あと何を疑えばよいのかわからない状態にあります。

    原因として考えられるもの、対処法等をご存知の方がいらっしゃいましたら
    ご教授いただけませんでしょうか?

    よろしくお願いいたします。

    2016年9月6日 7:37