【问题标题】:Locating SMTP servers and their ports? [closed]定位 SMTP 服务器及其端口? [关闭]
【发布时间】:2014-03-05 10:03:06
【问题描述】:

我正在为我的期末学校项目做一些研究。而我的想法是开发一个安卓电子邮件客户端。

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

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

【问题讨论】:

  • 看看这个相关问题:stackoverflow.com/questions/14042742/…
  • 服务器名和端口与配置outlook、android邮件客户端时使用的相同。在网站上检查他们使用/未加密的端口。顺便说一句,如果你想向这些服务器发送邮件,你必须检查是否支持 tls。
  • 您可以通过编程方式查询一个庞大的数据库,其中包含您在网上找到或自己制作的信息后的信息。 (大多数邮件客户端实际上都是这样做的,除非他们只是建议 smtp.[whateverwasafterthe@])。

标签: java android email smtp


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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


    如果您尝试连接到您组织的邮件服务器,以便您的邮件服务器将邮件发送到其他系统,请尝试使用端口 465 或端口 587。首先使用 465,因为那是 SMTPS,然后尝试使用端口 587 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 证书监控工具,可以捕捉到与活跃的中间人攻击相关的一些有趣的业务。

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2023-03-15
      • 2012-07-12
      • 1970-01-01
      相关资源
      最近更新 更多