这实际上是考试中的一个问题,但我相信它可以帮助其他人解决类似情况。
在一个系统中,需要将一封电子邮件发送到某个邮箱。下面的 Java 代码是一个更大系统的一部分,就是为此而开发的。假设“example.com”对应于一个有效的注册互联网域。
public void sendEmail(){
String s1=”Warning”;
String b1=”Contact IT support.”;
String r1=”[email protected]”;
String d1=”[email protected]”;
String h1=”mx.intranet”;
Properties p1 = new Properties();
p1.put(“mail.host”, h1);
Session session = Session.getDefaultInstance(p1, null);
MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress(r1));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(d1));
message.setSubject(s1);
message.setText(b1);
Transport.send(message);
}
catch (MessagingException e){
System.err.println(e);
}
}
在应用程序服务器的测试环境中执行此代码不会按预期工作。“example.com”服务器的邮箱永远不会收到电子邮件,即使代码中的所有字符串值都被正确归属。
执行期间应用程序服务器中的命令“netstat -np TCP”的输出如下所示:
Src Add Src Port Dest Add Dest Port State
192.168.5.5 54395 192.168.7.1 25 SYN_SENT
192.168.5.5 54390 192.168.7.1 110 TIME_WAIT
192.168.5.5 52001 200.218.208.118 80 CLOSE_WAIT
192.168.5.5 52050 200.218.208.118 80 ESTABLISHED
192.168.5.5 50001 200.255.94.202 25 TIME_WAIT
192.168.5.5 50000 200.255.94.202 25 ESTABLISHED
除了经过 NAT 的行之外,所有其他行都与 Java 应用程序服务器相关联,Java 应用程序服务器是在执行上述代码后创建的。
此环境中使用的电子邮件服务器是生产服务器,它是在线的,内部连接不需要任何身份验证。
根据这种情况,指出问题的三个可能原因。
我的镜头如下:
1 - 应用服务器 (192.168.5.5) 子网和内部邮件服务器 (192.168.7.1) 之间有防火墙阻止端口 25。
2 - “mx.intranet”的 DNS 条目在内部 DNS 服务器中配置不正确。它指向 192.168.7.1,它不是 SMTP 服务器。
3 - 应用程序服务器的部署描述符配置为将 SMTP 连接重定向到错误的服务器(192.168.7.1 不是生产电子邮件服务器)。
这些看起来是合理的原因吗?
谢谢,如果有人可以发表评论... :)