邮件服务器如何知道它的身份validation是什么types的客户端?

我的云托pipe的Java应用程序成功地通过mail.example.com在另一台主机(托pipe的VPS)上的邮件服务器进行身份validation。 mail.example.com上的服务器通过[email protected]接受用户的电子邮件。 但是,拒绝中继,并尝试发送邮件到[email protected]被拒绝。

但是, 我的问题不是“如何解决这个问题?” 我敢肯定,这是一个同样的问题: 如何纠正Postfix的“中继访问被拒绝”? 我将把这个留给pipe理mail.example.com的pipe理员 – 可能他们会将应用程序主机IP添加到main.cf文件中的mynetworks设置中。

我的问题是这样的:邮件服务器如何知道Java应用程序不是我的电子邮件客户端? 我testing了Java应用程序的电子邮件设置,使用用户ID和密码,我每天使用我自己的电子邮件。 我使用一台笔记本电脑,并连接到所有的咖啡店,家庭,酒店等电子邮件。

在我的笔记本电脑上连接星巴克,是什么使我的Java应用程序与我有所不同?

你在上面的评论中提到了这一点。 基本上,连接的第一件事情是从客户端向服务器发出HELO(smtp)或EHLO(esmtp)命令。 问题是,现在你不知道example.com在他们的邮件configuration文件中有什么。

我要做的debugging是在某个服务器上设置自己的MTA(exim,postfix等),并打开日志logging输出来捕获你的普通客户端和你的java应用程序发送会话,并比较每个MUA发送给服务器,特别是那个HELO / EHLO字段。 或者,如果设置一个快速邮件服务器对您来说太多了,您可以在主机上使用tcpdump并捕获传出的原始数据包,并在Wireshark中查看它们以读取有效载荷。

作为一个例子,下面是默认的Eximconfiguration看起来像这个信息:

# Hosts are required to say HELO (or EHLO) before sending mail. # So don't allow them to use the MAIL command if they haven't # done so. deny condition = ${if eq{$sender_helo_name}{} {1}} message = Nice boys say HELO first # Use the lack of reverse DNS to trigger greylisting. Some people # even reject for it but that would be a little excessive. warn condition = ${if eq{$sender_host_name}{} {1}} set acl_m_greylistreasons = Host $sender_host_address lacks reverse DNS\n$acl_m_greylistreasons accept 

您也可以检查您的Java应用程序是否使用与常规客户端相同的身份validation – 如果使用PLAIN或LOGIN样式而不是CRAM-MD5,则邮件服务器可能会作出不同的反应。 这完全取决于MTApipe理员已经configuration,所以再次,你在他们的摆布。