索引
缘起
为什么要折腾发邮件?因为周末安装的gitlab有发送邮件的功能????,强迫症的我就一定要把这一切都搞好!
gitlab官方文档入手
https://docs.gitlab.com/omnibus/installation/
这里首先就提到了sendmail,那就装这个!
启蒙文章
防止这个文章日后失效,我都截图留证了!我按照实验之后的结果总结一下上图的步骤
sudo apt-get install sendmail hostname sudo vim /etc/hosts # ????下面这行,输入三个内容,最后的${hostname}替换成hostname命令的结果 文件内键入这样的一行数据:127.0.0.1 zhanweifu.cn localhost ${hostname} # 执行这个命令后,遇见让输入的时候,一直输入Y即可,我这里是连输3个Y就结束了,而且前后就10秒钟就OK。我发现,如果输入第二个Y之后,迟迟不让输入第三个Y,那就是上面的hosts文件配置的有问题 sudo sendmailconfig # 下面是发邮件的操作步骤 sendmail -v 1234567890@163.com From: username@email.domain.cn Subject: This is the subject field of the email This is the message to be sent. . # 相信我,一定要先用163邮箱实验,因为163貌似完全没有垃圾邮件屏蔽功能一样!怎么发怎么有!QQ邮箱就不好搞啦!动不动就被屏蔽啦(不是放入垃圾箱而是直接屏蔽呦)。
经过上面的配置,已经可以发邮件啦!!!
注意:上面的From: you@yourdomain.com这个you可以随便写,yourdomain理论上也可以随便写!只要是一个真实存在的域名即可!也就是,你可以假装是任何人,然后发邮件!我试了taobao.cn、cctv.cn,都是可以的!
邮件被拦截的处理
正因为上面可以假装是别人发送邮件,所以邮箱系统就有一些拦截,有时候发送邮件会因为一些规则被邮箱系统拦截,比如我发邮件时,发163一直是成功的,但是发qq邮箱一直看不到邮件。直到在下面的地方找到。
这时候,就需要首先要考虑的是spf是否配置好了。正如上面所说,你可以假装自己是任何邮箱地址来发送邮件,那么怎么确定你是有使用那个域名发送邮件的权限的人呢?spf通过让你在dns解析配置txt记录来实现,这个记录里面写上允许哪些IP的机器使用这个域名发送邮件。这个记录就配置在你写的邮箱发送地址的dns解析下,例如我是用@gitlab.geekgao.cn发送邮件的,那我就在geekgao.cn的域名解析服务下配这样一条spf记录
代表所有人都可以使用这个地址发送邮件!具体的spf语法见腾讯邮箱这个文章吧:https://service.mail.qq.com/cgi-bin/help?subtype=1&no=1001505&id=16
如果你要看某个域名的spf记录,可以这么查:
nslookup
> set q=txt
> 输入想看的域名即可
总结
现在终于可以发邮件啦!不过要注意,垃圾邮件判断条件很多,spf只是其中一条,所以你自己建的邮箱服务还是很可能被扔进垃圾箱或者直接被屏蔽哦!当看不到邮件时,记得去屏蔽记录里面找找。
现在我还有一点比较疑惑,就是那个hosts文件,为什么那么配,是什么意思呢?后续再看。
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2435