我们有一个运行 CentOS 5 的系统,其中运行着 Plesk 8.6 和 Qmail。我们的主域通过 Media Temple 托管。当 Plesk 和 Qmail 托管在单个专用虚拟服务器上时,它会读取主服务器 IP 和域,并在从系统发送电子邮件时报告。
我们的页面是用 PHP 编写的,因此我们使用 mail() 函数。虽然我们的电子邮件会发送给所有人,但一些企业电子邮件域会拒绝我们的电子邮件,因为它显示的原始 IP(我们的主服务器 IP 和域)与我们在“发件人”地址中列出的域不同。这是不可修改的。我们拥有的每个域当然在我们的主服务器 IP 下也有自己的 IP。
我在网上看到过几个提供补丁的地方,具体来说 - 它允许域绑定:
“DomainBindings——对于托管多个域或分配有多个 IP 地址的服务器,让 qmail 使用特定 IP 地址发送邮件有时很有用(或很重要)。默认情况下,qmail 使用操作系统为所有出站连接选择的任何地址。使用此补丁,您可以指定要使用的地址。它使用类似于 smtproutes 的控制文件来根据发件人的域(本地副本)指定要使用的出站 IP 地址(pyropus.ca)”
首先,我没有安装 netqmail,所以我需要找到另一个来源,而且我对如何为 qmail 应用补丁完全不熟悉。如果我打补丁,我会失去电子邮件服务吗?这是一个简单的应用和使用过程吗?补丁完成后,我现有的电子邮件帐户和数据会恢复吗?
我对 unix/linux 还很陌生,所以这确实让我有点紧张,但我是唯一可以做出改变的人,而且这是我们公司“必须”做的。有什么想法吗?
答案1
这通常在网络层解决,其中所有出站 SMTP 都将通过源 NAT 到同一个 IP。
QMAIL 官方发行版的权威来源是Qmail网站,您可以从这里获取 netqmail。netqmail 是 QMAIL 的打包版本推荐补丁这是很常用的,因为已经有一段时间没有正式发布了。
QMAIL 的网站上有很多补丁链接,它们改变了接口绑定行为。我已经成功实现了此补丁在之前的生产环境中,允许不同的域使用不同的IP。
该补丁没有很好的记录,但我的笔记中有以下内容:
outgoingips
IP addresses to be used on outgoing connections. Each line has
the form fromdomain:localip, without any extra spaces. If domain
matches the domain part in sender, qmail-remote will bind to
localip when connecting to host. If it matches, it will also set
the HELO string to the domain part of sender.
更改 MTA 的行为可能会产生某种影响,但这种影响如何影响您的服务将取决于您的部署计划。如果没有其他影响,QMAIL 将需要重新启动,这将短暂影响交付。
从源代码编译和修补稍微高级一些,但如果您在 QMAIL 上是标准化的并且需要此功能,那么您将没有太多选择,除非您愿意付钱让别人为您做这件事。
您的现有用户和电子邮件不会受到影响,但如果您的 QMAIL 安装有其他补丁,例如允许将身份验证数据存储在数据库中的补丁,则可能需要进一步的补丁来复制现有功能。如果您使用的是“库存”QMAIL 1.03,则应该相当简单。
答案2
对华纳建议的一些补充(抱歉,我的声誉不足以使用评论功能):
Plesk 附带的 qmail 设置已经打了很多补丁,但是 Parallels 在其知识库。
注意:如果 IP 共享多个主机名,则不仅更改传出 IP 地址而且更改主机名的补丁被视为有害。有几个 MX 主机停止接收使用不同 HELO 字符串连接的主机的邮件。
您说的是 qmail 读取“主服务器 IP 和域,并在从系统发送电子邮件时报告”。事实上,它们是不同的东西。在为传出连接选择不同的 IP 地址时,您只需在 中设置用于说 HELO 的主机名即可
/var/qmail/control/me
。关于问题本身:请提供您从目标 MX 主机收到的确切错误消息,因为我猜您在这里搞混了。从提供域名网站的主机(作为其 MX 主机)以外的其他主机发送邮件是完全可以接受的。HELO 字符串和邮件的“发件人”地址之间也没有直接关联,除非收件人实施了一些非常愚蠢的反垃圾邮件“解决方案”。
答案3
我有同样的问题,即我有一个多宿主主机(6 个 IP)和绑定到每个 IP 的多个域。
Qmail 使用单个主机名和 IP 地址作为发送 IP/主机,但对于具有多个域/IP 的主机,存在两个问题:
如果发件人的发件人字段域与信封中的内容不匹配,某些邮件服务器会拒绝邮件
从设计角度来看,Qmail 应该默认执行 outgoingips 所做的事情;
Plesk 不断推出更新,并且一些更新应用于 Plesk 对 qmail 的补丁,因此必须确保没有其他问题出现;如果 Qmail 确实出现问题,就不会存在这个问题。