自建SMTP服务器完成发信,垃圾邮件拦截相关域名处理

2021-01-21 13:39:32

自建SMTP服务器完成发信,垃圾邮件拦截相关域名处理

文章目录


介绍

由于目前阿里企业邮箱,腾讯企业邮箱都有每日发信频率要求,因此需要自己搭建一个邮件系统完成邮件发送任务.
这篇文章记录服务器搭建过程遇到的问题与解决方法
实际搭建步骤请查看其它作者的文章

服务器安装配置

这里使用的是windows2019操作系统,使用服务器自带的SMTP服务作为邮件发送系统
安装步骤与账户配置这里不做介绍,可以参看其它作者的文章
这里只说明遇到的问题

554 5.5.2 No valid recipients

发送邮件的时候报错554 5.5.2 No valid recipients,需要进行以下设置
单击“访问”选项卡,点击“连接”和“中继”,选中“仅以下列表除外”.
在这里插入图片描述

垃圾邮件处理

现象与原因

发送的邮件会被腾讯邮箱识别为垃圾邮件并直接拦截
原因是没有添加mx,spf,DMARC记录

添加相关域名记录

mx

这个是邮件记录解析,并且只能解析cname域名,因此还需要添加一个A记录的普通域名

spf

这个是用于垃圾邮件识别的域名记录

相关介绍

https://www.renfei.org/blog/introduction-to-spf.html?spm=a2c6h.13066369.0.0.76e0589cbypk7q
检测地址
http://spf.myisp.ch/

DMARC

相关介绍
https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=16&&no=1001508

最终结果

这里假设邮箱发送后缀为 mail.hi.com ,
服务器外网IP为127.145.27.46
那么我添加了以下记录

_dmarc	
TXT
v=DMARC1; p=none; sp=none;
10 分钟

mail	
A	
127.145.27.46
10 分钟

mail	
TXT
v=spf1 a mx ip4:127.145.27.46 -all
10 分钟



mail	
MX
mail.hi.com | 10
10 分钟123456789101112131415161718192021

并且通过http://spf.myisp.ch/检测得

1.Allow if the IP matches an A or AAAA record of mail.hi.com
	127.145.27.46
2.Allow if the IP matches an MX record of mail.hi.com
	mail.hizhanhui.com.
		127.145.27.46
3.Allow all from the ip 127.145.27.46
4.Deny all IPs which do not match any previous rule1234567

通过测试以后,邮件内容不再被腾讯邮箱拦截,并且163,126也能正常接收邮件

也可以使用这个进行测试
http://www.mail-tester.com/12

一些错误解决

SMTP Error: The following recipients failed: Temporary lookup failure
运行命令:
postalias hash:/etc/aliases

Recipient address rejected: User unknown in local recipient table
设置 
local_recipient_maps =


  • 2019-10-09 13:38:20

    NPM依赖包版本号~和^和*的区别

    ~ 会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0 ^ 会匹配最新的大版本依赖包,比如^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0 * 这意味着安装最新版本的依赖包

  • 2019-10-09 14:39:40

    import双反斜杠\\的意思

    ​ \表示引用根目录下面的PHPEXcel;不用\的话是引用当前目录下面的 PHPExcel

  • 2019-10-09 15:33:31

    nuxt,nuxtjs简单介绍以及使用

    在集成的服务器端框架之间进行选择: 选择您喜欢的 UI 框架: 选择您喜欢的测试框架: 选择你想要的 Nuxt 模式 (Universal or SPA) 添加 axios module 以轻松地将 HTTP 请求发送到您的应用程序中。 添加 EsLint 以在保存时代码规范和错误检查您的代码。 添加 Prettier 以在保存时格式化/美化您的代码。

  • 2019-10-10 00:21:35

    laravel 5.6以上日志理解及日志格式定义

    Laravel/Lumen的日志默认是基于Monolog进行了一层封装,如果要求不高,用起来还是十分容易的,本文基于laravel5.6/Lumen5.6版本进行解说。5.6版对日志系统做了升级,将日志的配置单独放以了config/logging.php 配置文件中,所以现在实用多了。

  • 2019-10-10 10:10:49

    @Scheduled注解各参数详解

    每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 每月1号凌晨1点执行一次:0 0 1 1 * ? 每月最后一天23点执行一次:0 0 23 L * ? 每周星期天凌晨1点实行一次:0 0 1 ? * L 在26分、29分、33分执行一次:0 26,29,33 * * * ? 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

  • 2019-10-10 11:07:47

    Java8 - Map更优雅的迭代方式:forEach

    用于两个参数之间进行操作的函数式接口是 BiConsumer。这个函数式接口正好用来操作 Map 的 key 和 value。JDK8强化了针对 Map 类的迭代方式,新增了一个默认方法 forEach,它接收一个 BiConsumer 函数。JDK给出的描述如下: