这实际上是考试中的一个问题,但我相信这可以帮助其他人排除类似的情况。
在一个系统中,电子邮件需要被发送到某个邮箱。 下面的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); } }
在应用程序服务器的testing环境中执行此代码不能按预期工作。 “example.com”服务器的邮箱永远不会收到电子邮件,即使严格的代码中的所有string值都被正确归因。
执行过程中应用程序服务器中的命令“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应用服务器在执行上面的代码之后创build了它们。
此环境中使用的电子邮件服务器是生产服务器,该服务器处于联机状态,不需要对内部连接进行任何身份validation。
基于这种情况,指出三个可能的原因。
我给我的镜头如下:
1 – 应用程序服务器(192.168.5.5)子网和内部邮件服务器(192.168.7.1)之间的防火墙阻止端口25。
2 – “mx.intranet”的DNS条目在内部DNS服务器中configuration不正确。 它指向192.168.7.1,这不是SMTP服务器。
3 – 应用程序服务器的部署描述符configuration为将SMTP连接redirect到错误的服务器(192.168.7.1不是生产电子邮件服务器)。
这些看起来是否合理?
谢谢如果有人可以评论… 🙂