相关讨论:https://www.v2ex.com/t/834118
之前发了个贴是说自建邮箱失败,又要折腾域名解析,又要折腾反垃圾邮件,又要 IP 段等等等等,楼下老哥们都说无论如何自建服务能成功发出邮件已经不容易。
但是最近我注意到网上一些经典的 php 开源项目很多都是不需要安装任何依赖,不需要折腾任何解析,直接就能提供邮件服务的,比如 chevereto 图床,还有 wordpress 博客,在用户注册和密码找回这种场景,都是直接可以发邮件确认的。
我昨天试了一下 chevereto 居然发送成功了邮件,且没有被归类到垃圾邮箱。而且似乎我输入没有解析的二级域名它也能正常显示发件人,比如我的网站是 example.com ,它管理后台要求输入确认邮件的发件地址,我输入 [email protected] ,即使这个地址没有解析也能正常发送到用户,这都是怎么实现的?
1
vvhhaaattt 2022-02-23 07:32:13 +08:00 via Android
这下楼主应该明白邮件伪装有多容易了吧。
本身邮件发送就是不需要任何保证的,你看到的发件人可以任意伪造的,能连接到对方邮件服务器就可以给对方发送,没被归为垃圾邮件只是短时间侥幸而已。 你开头那些措施都是为了长时间稳定发送邮件证明自己不是垃圾邮件发送者。 |
2
LeeReamond OP @vvhhaaattt 生产环境肯定是基于企业邮箱服务,但个人中小型项目自建也有方便之处,想知道是如何实现的,我看不懂 php 代码。
|
3
xiaoz 2022-02-23 08:00:15 +08:00 via Android
@LeeReamond PHP 内置一个 mail()函数,无需其他依赖可直接发邮件,参考 https://m.runoob.com/php/func-mail-mail.html
但是不建议用这个函数,可能会被直接拒收或进入垃圾箱。 |
4
vvhhaaattt 2022-02-23 08:01:38 +08:00 via Android
@LeeReamond 你上一个帖子三楼说的很明白,smtp 协议,跟 http 一样是个文本传输的协议,发个邮件跟向对方邮件服务器进行了一次 post http 请求类似,当然细节不一样……
|
5
LeeReamond OP @xiaoz 如果只是归入垃圾邮箱作为惩罚的话,如果其他方面合适,作为取舍感觉也不是不可接受,比如我只有 1000 个用户,有人要找回密码的话显然邮件找回是最合适的,少数被归入垃圾邮件就请用户自己翻一翻就是了。。。如果是 php 的 bif 的话我想知道底层是咋实现的,我能不能在其他语言里在 tcp 层上复现一个?百度搜邮件协议说的都比较复杂,我怎么知道 php 默认用的是哪种协议
|
6
xiaoz 2022-02-23 08:09:51 +08:00 via Android
@LeeReamond 底层实现我就不是很清楚了,没仔细研究过。
|
7
ztxcccc 2022-02-23 08:34:55 +08:00
我记得是调用 linux 的 sendmail 函数的,这个是个 os 级别的基本功能
|
8
Kinnice 2022-02-23 08:49:31 +08:00 via Android
1. 服务器提供商没有封禁相关邮件端口
2. 大部分都会进垃圾箱或者被拒信 |
9
dzdh 2022-02-23 08:56:07 +08:00
难道不是在说 smtp 吗
|
10
loginv2 2022-02-23 09:17:30 +08:00 1
用 php 实现的 smtp 客户端,给别的邮件服务器发信息,让服务器给其他邮箱发邮件
|
11
involvements 2022-02-23 09:20:50 +08:00 1
@LeeReamond
1 、基本上所有邮件都是进垃圾箱或者拒收 2 、长时间下来就直接屏蔽你的 IP 了 3 、拒收多了后你的云服务器厂商也会屏蔽的你 25 端口 4 、你说的小量发送,但是密码找回这种邮件理论上不应该出现拒收,必须稳定 |