こんにちは、sendgrid やその他のサード パーティを使用せずに Azure で電子メール機能を実装する方法を教えてください。AzureとExchangeサーバーを接続してメールを送信するサービスバスを用意できますか.それは可能ですか.または、Azureにアクセスしてメールを送信するExchangeサーバーWebサービスがありますか?
2 に答える
問題は、サード パーティを使用しなければならないことではなく、セキュリティとファイアウォールへの影響です。Exchange サーバーでは、(ユーザー名とパスワードを使用しても) 送信 smtp を有効にすることができ、任意のアプリケーション (Azure で実行されているものを含む) が送信 SMTP を送信するのは簡単です。常に遭遇する問題は、Exchange サーバーの周囲の境界セキュリティがパブリック IP アドレスからの smtp を許可しないことです (ハッカーは頻繁に開いているポート 25 をスキャンし、無防備なメール サーバーを介してスパムをリレーできるようにします)。Windows Azure (ロールと Web サイト) は固定 (発信) IP を使用できないため、ファイアウォール ルールを作成できません。
オプションは次のとおりです。
- 企業ネットワークで VPN をセットアップして、Azure インスタンスがプライベート IP アドレスから送信するようにします。
- Azure VM でメール リレー サービスを実行します。VM は IP アドレスを無限にリースできるため、(あまり) 変化しません。Linux で動作するシンプルで安価なメール転送エージェント サービスがあります。
- 任意の 'ol smtp サーバーを使用します。あまり送信しない場合は、Google または outlook.com を使用することもできます。Outlook.com では、他の場所でホストされているアカウントを構成できるため、Windows Live ID (Microsoft アカウント) で smtp を使用できるはずです。
サービス バスのようなものを使用する複雑なコードやサービスを記述することは避けます。System.Net.Mail を使用して、smtp サーバーに送信する必要があります。
私が過去に行ったことの 1 つは、Windows Azure アプリでメッセージをキューに入れ、必要に応じてより大きなデータ (添付ファイル、大きな本文テキストなど) を BLOB に入れることでした。これにより、Windows Azure ストレージに格納されているデータが取得されます。そこから、オンプレミス アプリ (Windows サービスなど) がキューと BLOB データを取得し、電子メール メッセージを作成して、オンプレミス Exchange サーバーに送信できます。
すべてをクラウドでホストする必要がある場合は、Windows Azure アプリを Exchange Web サービス エンドポイントに接続できるはずだと思います (適切に保護して Web サービス接続を確立できると仮定します)。