使用者以 Exchange 中的任何人身分傳送?

使用者以 Exchange 中的任何人身分傳送?

我有一個 .NET 程式(Windows 服務),它連接到 Exchange 來發送電子郵件。目標是允許它發送來自我雇主擁有的網域內的任意數量的電子郵件地址的電子郵件。程式正在使用 Active Directory 帳戶(稱為「AutoMail」)進行身份驗證,問題是 Exchange 給出以下錯誤回應代碼:

System.Net.Mail.SmtpException: Mailbox unavailable. The server response was: 5.7.1 Client does not have permissions to send as this sender
   at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
   at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at ConsoleApplication1.Program.Main(String[] args) in C:\WorkingCode\ConsoleApplication1\ConsoleApplication1\Program.cs:line 38

當我將網路憑證更改為我的 A/D 登入名稱並以我的身份發送電子郵件時,它可以正常工作。

所以我的問題是:是否可以從 Exchange 端設定自動郵件使用者以允許以任何格式有效的電子郵件地址發送電子郵件?如果是這樣,怎麼辦?

作為參考,以下是正在使用的 C# 程式碼:

MailMessage mail = new MailMessage();
mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");
mail.Subject = "This is an email";
mail.Body = "This is a test. <b>This is bold</b> <font color=#336699>This is blue</font>";
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "172.16.1.33";
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential("AutoMail", "password");
smtp.Send(mail);

答案1

透過實際透過 Exchange 掛鉤登錄,您需要接受寄件者驗證。需要設定一些權限才能冒充某人,這是 Microsoft 故意這樣做的。您正在尋找的權限是「發送為」。 Blackberry Enterprise Server 需要這種操作,因此並不罕見。

我們解決這個問題的方法是為使用者(在您的例子中為 AutoMail)提供 AD 中網域物件的特定 ACL。 “應用到”適用於“已故使用者物件”,並且僅選取“傳送為”方塊。這將導致網域中的所有使用者物件(除非它們位於關閉了權限繼承的容器中)允許 AutoMail 模擬它們。

作為用戶發送權限範例
(來源:sysadmin1138.net

相關內容