WebサイトはもともとIIS 6の下で開始され、サイトはそこでうまく機能しました。W2K8Sを実行する新しいサーバーに移動した後、Webサイトからのメール配信以外はすべてIIS 7。
誰かが良い解決策を持っているかどうかを確認するためにWebで簡単に調査しましたが、役に立ちませんでした... Microsoft自身のサポートサイトでの希望のちらつきさえありませんでした。
新しいW2K8Sボックスでこれまでに実行した手順は次のとおりです。
これらの基本的なセットアップに失敗した後、ポート25のサーバーと実際に通信できることを確認しました。問題のサーバーとの間で、ポート25のテスト電子メールに正常にTelnetで接続して、HELOなどを取得できます。だから私はそれがファイアウォールの設定の問題だとは思わない。
IIS 7セットアップテストは、匿名認証とWindows認証の両方で実行されましたが、どちらの方法でも運がありませんでした。
手動でチェックしたWeb構成ファイル。サーバーがlocalhostを使用するための正しいエントリを反映しています。
マニュアルを読んで、そこにも運がない...:-/
私も同じ問題に直面しました。
私はこのリンクに出くわしました http://www.frontpagewebmaster.com/m-215289/tm.htm
そして私は問題を解決することができました。このリンクの最後の投稿に移動します。
私の場合、「ネットワークサービス」ユーザーに「ピックアップ」フォルダへの権限を与えることで問題を解決します。
これが役立つことを願っています...
イベントID 4006がメールサーバーのIPではなくドメインコントローラーのIPを参照していることに気付きました。私はiis 6管理ツールを使用して、メールサーバーを指すスマートホストと出来上がりを設定しました!問題は解決されました。
OK、"NETWORK USERにピックアップフォルダーへの書き込み権限を与える"と言った投稿に、最終的に機能します。私がしたことは:
Exchangeサーバーを実行している場合を除き、"スマートホスト"を使用する必要があります。 Gmailアカウントを使用していますが、GmailではSMTP転送が許可されています。
SMTPサーバーのセキュリティおよびIIS7構成設定にWindows認証を使用できます。
まず、Webページで配信方法= "network"を設定し、SMTPサーバーとは別にスマートホストを構成します。
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false; // use your smart Host login client.Credentials = new NetworkCredential("[email protected]", "password");
client.EnableSsl = true;
これにより、電子メールが直接送信され、SMTPサーバーをバイパスします。
2番目のステップでは、それが機能するようになったら、Webページとは独立してSMTPサーバーを使用するサンプルWindowsアプリを作成し、それを機能させます。
SmtpClient client = new SmtpClient("your server ip", 25);
client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
client.EnableSsl = false; // you can't use ssl with a pickup folder
client.UseDefaultCredentials = true; // use windows credentials
これにより、Webページがバイパスされ、SMTPサーバーが正しく構成されていることを確認します。
最後に、ピックアップフォルダーの共有を設定してNETWORK_SERVICE
への書き込みアクセスを許可することにより、Webページを機能させます。手順3のログイン情報をSMTP設定に転送し、認証を統合セキュリティに設定し、手順4のコードをWebページに使用します。
この古い質問で説明したのとまったく同じ問題がありました。最後に私はそれに対する解決策を見つけました。私の場合、オペレーションシステムはW2008 R2で、IIS 7.5ですが、これは問題ではないと思います。
根本的な問題は、W2008 R2のSMTPサービスがIISのレガシー部分であるように見えることです。 IIS 6.0管理ツール、IIS 7.Xサーバーと並んでインストールされます。これにより、2つの派生問題が発生します。
IIS 7.Xは、SMTPサービスについて何も認識していません。 ASP.NETでSMTPを構成してPickupDirectoryFromIisを使用すると、例外が発生します。 したがって、このSMTP構成は使用できません:
<smtp deliveryMethod="PickupDirectoryFromIis" />
しかし、SpecifiedPickupDirectoryを使用してSMTPを構成することは可能ですこの構成を使用できます:
<smtp deliveryMethod="SpecifiedPickupDirectory">
<specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup" />
</smtp>
この方法でピックアップディレクトリを構成すると、IIS6とIIS7.Xのセキュリティシステムが異なるという2番目の種類の問題が発生する可能性があります。 IIS 7.XはアプリケーションプールIDとの統合セキュリティを導入します。IIS 6.0とそのSMTPサービスはこれを認識していません。そのため、書き込み権限を付与する必要がありますピックアップフォルダーへのIIS_IUSRSの場合。私の構成では、ピックアップフォルダーはC:\ inetpub\mailroot\pickupです。
これは、偶然にも、古い「クラシック」ASPアプリがCDONTSに依存してメールを送信しているのでしょうか?
もしそうなら、おそらく これらのリンク の1つが役に立ちますか?
編集:元の投稿のメモに気付く前に返信しました。無視...
この診断ツールがより多くの洞察を提供できるかどうかはわかりませんが、
http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1308
このツールはx86用です。
IIS6からIIS7に移行するASP.NetアプリでSMTPを実行する方法を調べているときに、この投稿に遭遇しました。私が見つけたのは、SMTPサーバーをまったくセットアップする必要がないことです。SMTP電子メールをセットアップするだけで十分で、Webサーバー経由のSMTPリレーのセキュリティ上の懸念がないという追加の利点があります。
したがって、実際にSMTPルーティングを実行するためにWebサーバーが必要ない場合は、IIS7でサーバーを設定する必要はありません。
SMTPサービスがローカルホストからのリレー用のメールを受け入れているかどうかを確認しましたか?これを行うには、問題のマシンからローカルのSMTPサーバーにTelnetで接続し、SMTPコマンドを使用してテストメッセージを送信します。 SMTPサービスはコマンドのフォーマットについて非常にうるさいので、コマンドを入力するときは注意する必要があります(つまり、入力ミスを修正するためにバックスペースを使用しないでください)。