找到SMTP服务器及其端口?

时间:2014-02-07 20:27:09

标签: java android email smtp

我正在为我的最后一个学校项目做一些研究。我的想法是开发一个Android电子邮件客户端。

我正在测试一些我已经获得的想法并且出现了问题。要联系SMTP服务器,要发送电子邮件,我需要知道的是(SMTP服务器)名称和端口。例如,如果用户拥有mail.ru帐户,那么我需要知道要联系的SMTP服务器名称和端口。

有没有办法以编程方式找到该名称和端口?

2 个答案:

答案 0 :(得分:2)

通常,您只有一个配置为转发邮件的特定SMTP服务器。

如果您想自己进行交付,则必须向DNS询问邮件主机(在Linux系统上尝试dig mail.ru MX)。但是,请注意,如果您使用动态IP地址,接收方可能会阻止您以避免垃圾邮件。

邮件传递端口,即您查找查询MX记录的主机,始终为25.如果您使用提供商外发邮件服务器,端口也可能是587 - 请询问您的提供商。

答案 1 :(得分:0)

  

有没有办法以编程方式找到该名称和端口?

您可以在DNS中找到邮件主机的名称(或名称)。查询MX记录。获得邮件主机后,根据RFC 5321 Simple Mail Transfer Protocol使用端口25。您不需要用户名和密码,因为它是另一个的邮件服务器。


如果您尝试连接到组织的邮件服务器,以便邮件服务器将邮件发送到其他系统,请尝试端口465或端口587.首先使用465,因为它是SMTPS,然后尝试端口58 MSA。您需要SMTPS,因为您不希望以明文形式将您的身份验证凭据放在网上。


以下是使用dig(1)查询MX记录的方式:

$ dig gmail.com MX

; <<>> DiG 9.8.5-P1 <<>> gmail.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42931
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;gmail.com.         IN  MX

;; ANSWER SECTION:
gmail.com.      3599    IN  MX  20 alt2.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  30 alt3.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  10 alt1.gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  5 gmail-smtp-in.l.google.com.
gmail.com.      3599    IN  MX  40 alt4.gmail-smtp-in.l.google.com.

;; Query time: 23 msec
;; SERVER: 172.16.1.10#53(172.16.1.10)
;; WHEN: Fri Feb 07 22:19:33 EST 2014
;; MSG SIZE  rcvd: 150

您应该根据RFC 3207 SMTP Service Extension for Secure SMTP over Transport Layer Security包含对STARTTLS命令的支持。服务器将对其进行广告宣传,但客户端必须参与其中。也就是说,它是客户的选择。

STARTTLS命令将使窃听者不受限制,如电信,NSA和GHCQ。对手将不得不进行主动攻击,这些攻击更容易在野外发现。例如,我相信EFF运行了一些X509证书监控工具,可以捕获与活跃的MitM攻击相关的一些有趣的业务。