IIS上设置smtp 代理不是难事,但是如果使用office365就比较复杂点,弄不好会陷在里面。
一.office365 SMTP的选项
先了解一下office365对于smtp的三个选项,对应三张图及对比。
第一种方式,是使用office365的邮箱账号,通过smtp发送,属于标准操作
第二种方式:这个不需要office365中创建邮箱,可以给你自己域中的邮箱用户发信,简单方便,特别适合内部的扫描仪之类设备。
第三种方式:是第二中方式的增强版,可以给外部域名发送邮件,还能修改spf来避免被对方认为是垃圾邮件。
二.IIS中设置SMTP Relay
IIS中设置smtp代理,使用方式一是行不通的或者是不靠谱的。因为这相当于代发,你需要在office365中赋予各个邮箱的代理发送,可操作性不强,如果你这样设置,你一定会遇到这样的错误提示。
STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied;+Failed+to+process+message
IIS中smtp代理,使用第二种方式是可以的,但是限定了只能在自己域的邮箱,范围限制的。所以大多是是按第三种方式配置。
按第三种方式,需要多进行三部操作:
1.exchange管理工具---邮件流---连接器----新建连接器,设置你SMPT代理出去的公网地址;
2.Microsoft Defender--电子邮件与协作---策略和规则--威胁策略--反垃圾邮件策略--连接器筛选策略,将你的公网地址设置到白名单中
3.修改你域名的解析记录,v=spf1 ip4:<your IP Address> include:spf.protection.outlook.com ~all
在IIS中设置,注意三点:
1.匿名访问 ,启用TLS
2.端口 25,智能主机地址为你域的MX记录
3.连接及中继设置中是否允许你的发邮件的系统地址连接
自己写一个文本文件.txt,内容为:
FROM:no-reply@mydomain.com
TO:somebody@anydomain.com
SUBJECT: Test email from SMTP
将它拷贝到pickup目录,然后看他能否在queue目录是否消失,如果没有消失,说明遇到问题,这个时候需要看IIS smtpsvr日志,如果没有启用,一定要启用,并将所有字段都开启显示。
避开上面的坑,基本是不会有问题的。