Case Descrption:
第三方邮件在使用Exchange的帐户进行发送邮件时,提示Client not authenticated。

Scenario:
Cindy正测试一个产品发送报告的功能,遇到了难题跑来找我(不是跑啦,我就坐她旁边,哈哈):
    需要使用能在命令行进行发送邮件的第三方软件,并且支持在64位系统中运行。
经过分析,她实际上需要解决两个问题:
1. 找到能在64位操作系统上进行命令行收发邮件的软件,当然肯定得是免费软件或共享软件
2. 由于她在内网测试,所以需要配置一个SMTP的邮件服务器。
问题分析清楚了,那就找解决办法吧。Go!

Steps:
1. 首先第一个问题,Google可以解决。(不过我也费了好大劲儿哦,不是不支持64位(例如blat)就是不能进行命令行发送要不就是要收费)最终找到的是[url]http://www.smtpinfo.com/[/url]的smtpmailer,简单易用,还行。
2. 其次是第二个问题,免费的SMTP邮件服务器还是有的,但是从来没有接触过,又怕学起来麻烦,所以,选择了曾经使用过的Exchange Server 2007,Key当然是没有问题啦,偶们有:) 就是安装慢些,但还是没有问题滴。根据提示,我们顺利安装成功Exchange, 建立两个账号test1和test2,并且用OWA收发邮件成功。
3. 接下来使用smtpmailer进行测试,命令如下:
     smtpmail.exe from=test1@test.com to=test2@test.com body="Hello World!" subject=Example server=smtp.testmachine.com user=Administrator password=xxxxxx
    这时,自然遇到本文开头提出的问题。
4. 分析应该是Exchange的配置不允许未经认证的机器或者帐户发送邮件,或者需要SSL连接,SSL感觉太复杂了,不管了;现在就是要配置Exchange为运行匿名收发邮件,那我们打开Exchange Powershell:
输入:
     set-ReceiveConnector "Default <Servername>" -permissiongroups:"ExchangeUsers,ExchangeServers,ExchangeLegacyServers,AnonymousUsers"
5. 重启机器,重新使用smtpmailer测试,通过!

Result:
Cindy好Happy。我让Cindy请吃饭,她说请你吃一块钱的东西还可以......:)

Tips:
1. 如果你不知道set-ReceiveConnector 后面的"Default...."填什么或者总填错(因为涉及到域名之类,我老弄得好复杂,一直填错,提示在Domain 中找不到我输入的Object),你可以输入下面的命令进行查询:
     get-ReceiveConnector
是不是就搞定啦:)