使用 IP 地址而不是域名发送电子邮件

Posted

技术标签:

【中文标题】使用 IP 地址而不是域名发送电子邮件【英文标题】:Sending Email using IP Address instead of Domain Name 【发布时间】:2011-09-02 14:24:31 【问题描述】:

我试图避免通过 DNS 服务器运行以将电子邮件消息发送到我托管的一个虚拟帐户上的地址。

我知道我可以用方括号括住 IP 地址,但是如何为服务器上的(虚拟)托管帐户指定邮箱用户名?

换句话说,

我在一个虚拟服务器上托管了多个域——所有域都共享同一个 IP 地址 显然,user@domain.com 工作正常 但是如何发送给 user@[123.456.78.90]

我想做的事,可能吗?

谢谢。

【问题讨论】:

我尝试使用“hosts”文件为所需的 IP 地址指定一个未使用的域名,并为该域名创建了电子邮件帐户,但它不起作用。如果我只是依靠“主机”来重定向正确的域名,我正在尝试测试托管站点迁移并受到旧 IP 地址的过多干扰。其他人有这样的工作吗? 【参考方案1】:

在使用 Cjdns IP 时,您想做的事情是可能的,甚至是安全的。一些客户端(例如 mutt)被“损坏”并阻塞原始 ips 作为域。 (虽然技术上有问题,但它一个不常见的用例 - mutt 是一个很好的客户端。)

您需要告诉您的 MTA 接受原始 IP。例如。在 sendmail 上,添加 [123.456.78.9] 到 /etc/mail/local-host-names

您还必须打开accept_unresolvable_domains,因为 sendmail 似乎不会将已解析的域视为“可解析的”。 (其他 MTA 可能需要不同的调整。)

我使用 Thunderbird 发送到原始 IP,它工作得很好。一位朋友使用 claws-mail 没有问题。

【讨论】:

啊,从命令行使用 sendmail 不能处理原始 ips - 但 SMTP 工作正常。如果 mutt 被配置为运行 sendmail 而不是使用 SMTP,那可能就是问题所在。【参考方案2】:

虚拟主机需要一个域名才能确定要做什么。您想将其发送到 IP 地址而不是域名。因此,它不会通过正常方法起作用。如果没有匹配项,您可能可以指定“默认”域 否则,您唯一的希望是手动伪造电子邮件。我的意思是:

telnet 123.456.78.9 25
HELO myhostname.mydomain
MAIL From: <myemail@mydomain>
RCPT To: <user@domain.com>
DATA
From: myemail@mydomain
To: user@domain.com
Subject: Testing

This is a test
.
QUIT

【讨论】:

如何将域名伪装成I​​P格式?域仅用于允许同一 IP 上的多个实例。我想真正的问题不是发送它,问题是接收者不会在没有电子邮件的情况下接受您的连接。他们中的一些人不会根据规则/列表/测试和其他人接受您,因此删除主机名/域将是退出系统的快速方法。

以上是关于使用 IP 地址而不是域名发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

地址和域名之间有啥关系?

SMTP lib 从哪个 IP 地址发送电子邮件?

使用Javamail发送电子邮件

zimbra填坑记录

域传送漏洞

没有主机名/域名的 Qmail 电子邮件地址