![用户可以在 Exchange 中以任何人的身份发送吗?](https://linux22.com/image/503865/%E7%94%A8%E6%88%B7%E5%8F%AF%E4%BB%A5%E5%9C%A8%20Exchange%20%E4%B8%AD%E4%BB%A5%E4%BB%BB%E4%BD%95%E4%BA%BA%E7%9A%84%E8%BA%AB%E4%BB%BD%E5%8F%91%E9%80%81%E5%90%97%EF%BC%9F.png)
我有一个 .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 端配置 AutoMail 用户以允许其以任何有效格式的电子邮件地址发送电子邮件?如果可以,该怎么做?
作为参考,下面是正在使用的 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 模拟它们。
(来源:系统管理员1138.net)