所以我有一个小型 Linux 网络服务器,它运行 Direct Admin 控制面板,一切运行正常。对于每个域,SPF 和 DKIM 记录都存在于 DNS 中,并且邮件(据我所知)从未被标记为垃圾邮件,完美。
现在我有一个朋友想从他的网站上伪造他的电子邮件。这是一个小小的“分享此页面”小部件,人们可以在其中输入一个to
和from
电子邮件,然后他们就会被发送。
我面临的问题是 Gmail 中的邮件以文本 的形式发送[email protected] via my.server.fqdn
。Gmail 显示 本身via
并不是问题,我理解这是为了防止欺骗,不幸的是,这显然是为了保持互联网“安全”。但我可以将 中列出的服务器更改via
为我朋友的域名吗?
我可以将 Gmail 更改[email protected] via my.server.fqdn
为 吗[email protected] via domain-on-same-server.com
?(我只想针对这个域名进行更改,显然不会更改我的 exim 配置来更改服务器名称等。)
TLDR;
下面的截图来自Google 支持我想将 example.com 重写为 mydomain.com
答案1
简而言之,你不能。
其他服务器始终知道与其连接的主机的 IP 地址。然后它执行域查找以了解该 IP 地址的主机名是什么。虽然A
DNS 记录可以有多个,但PTR
记录只有一个,并且您无法通过网络欺骗某个特定服务器。
删除 via-server 提及的唯一方法是配置接收服务器以不提及它。
答案2
看起来 Google 只是显示在 Return-Path 中找到的域并使用它。
这DirectAdmin 帮助页面解释说,Exim 默认[email protected]
将邮件发送时的返回路径设置为脚本。
解决方案是更改exim.conf
为包含以下代码片段:
untrusted_set_sender = *
no_local_from_check
这确保 Exim 采用用户在邮件头中定义的返回路径。
更具体地说,Exim 文档解释:
当不受信任的用户在本地(即不通过 TCP/IP 连接)提交消息时,Exim 会删除任何现有的 Sender: 标题行,并检查 From: 标题行是否与呼叫用户的登录名和qualify_domain 指定的域相匹配。
注意:除非使用 -bnq 命令行选项,否则本地提交的消息中的 From: 标头中的不合格地址(无域)将被 Exim 自动合格。
您可以使用 local_from_prefix 和 local_from_suffix 来允许本地部分使用词缀。如果 From: 标头行不匹配,Exim 会添加 Sender: 标头,其中包含由呼叫用户的登录名和默认合格域构成的地址。
如果 local_from_check 设置为 false,则禁用 From: 标头检查,并且不会添加任何 Sender: 标头。此外,如果您想要保留不受信任的用户提供的 Sender: 标头行,还必须将 local_sender_retain 设置为 true。
这些选项仅影响邮件中的标题行。除非 untrusted_set_sender 允许用户提供信封发件人,否则信封发件人仍被强制为合格域中的登录 ID。
因此,通过将 Return-Path 标头设置为[email protected]
。Gmail 现在将发件人显示为[email protected] via mydomain.com
。