web-dev-qa-db-ja.com

SMTPメールをOffice365の共有メールボックスから送信できますか?

O365への移行を検討しています。ただし、現在のExchangeサーバーを使用して、エラーが発生したときに外部ユーザーとサポートボックスの両方に電子メールを送信するソフトウェアを開発しました。

私はこれをテストして、配置したコードがO365で引き続き機能することを確認していますが、これまでのところ、あまり成功していません。

.NetのSmtpClientとMailKitのSmtpClientを使用してみましたが、どちらも機能しないようです。エラーが発生し続けます(これはMailKitからのエラーです。Netエラーも同様です)。

「AuthenticationInvalidCredentials:5.7.3認証失敗[* .prod.exchangelabs.com]」

コードにある資格情報を使用してOWAにログインできます。資格情報が有効であることはわかっています。 O356経由でメールを送ることはできませんか?これを可能にするためにExchangeで実行する必要がある特別な構成はありますか?

これが私がこれまでに試したことです:

MailKit

var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","[email protected]"));
msg.To.Add(new MailboxAddress("Me","[email protected]"));
msg.To.Add(new MailboxAddress("External User","[email protected]"));
msg.Subject = "Test";
msg.Body = new TextPart("plain"){
   Text = "Here is a message for you"
};
using(var client = new SmtpClient()){
    client.ServerCertificateValidationCallback = (s,c,h,e) => true;
    client.AuthenticationMechanisms.Remove("XOAUTH2"); //Not sure what this does.  Have tried with and without
    client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
    client.Authenticate(new NetworkCredential("[email protected]", "supportPwd"));
    client.Send(msg);
    client.Disconnect(true);
}

.Net SmtpClientコードは、MailKitコードと非常によく似ていました。

  1. ライセンスユーザーとO365を介して送信する方法はありますか? (上記のコード)
  2. これを機能させるために、Exchangeまたはライセンスされたユーザーに必要な特別な設定はありますか? (1の答えが「はい」の場合)
  3. 認証されたユーザーが送信者権限を持つ共有メールボックスを介してメールを送信することはできますか?

更新

まだ同じエラーメッセージが表示されます。ドメインユーザーに対してMFAが有効になっています。ただし、ユーザーが信頼できる場所(組織のIP)からサインインする場合、ユーザーにMFAを必要としないポリシーがあります。また、信頼できるIPとしてIPをリストしました。私の考えでは、MFAはここでは問題になりません。

資格情報が正しいことを知っています。私はそれらをコードからコピーし、M365にサインインするときにログイン画面に貼り付けました-そして私はうまくいきました。

何が悪いのですか?

13
RHarris

同様の問題を抱えている人にとって、私の問題は条件付きアクセスポリシーであることがわかりました。 MicrosoftはBaseline Policy: Block Legacy Authentication-AADでオンになっています。

ポリシーを見ると、MFAを必要としない認証メカニズムをブロックするように設計されています。これには、POPやSMTPなどが含まれます。このポリシーを無効にすると、上記のコードは問題なく動作しました。

0
RHarris