2015-11-26 40 views
0

我有这些值连接到IMAP服务器:自动检测IMAP连接细节

  • 主机名
  • 用户名
  • 密码

我想自动检测与Python的详细信息:

  • port
  • ssl或starttls

如果端口是众所周知的端口号之一,则应该没有太多可能的组合。

尝试所有将是一个解决方案,但也许有更好的方法?

+1

如果你有域名你也可以查找srv记录很多地方都会发布这些。 – Doon

+0

@Doon谢谢。这对我来说是新的。这里是相关的RFC:https://tools.ietf.org/html/rfc6186我想只有几个域使用它,但是它可能会在未来得到更广泛的使用。 – guettli

回答

1

你几乎有蛮力,但没什么只有三个设置,并且只需要两个接口:

  1. 首先连接端口993与普通SSL/TLS。如果这工作:993/TLS。如果失败:
  2. 连接到端口143,并检查CAPABILITY STARTTLS是否存在。如果确实如此:请尝试StartTLS。如果这起作用:143/STARTTLS。否则:
  3. 看看你是否可以登录到端口143.如果失败,没有好的配置。无论如何,这是不安全的,所以应该气馁。

SMTP更复杂一点:您可以尝试587与StartTLS,465与TLS或25与StartTLS,普通或根本没有身份验证。

注意:自动检测STARTTLS是危险的,因为它允许MITM攻击,攻击者隐藏了STARTTLS功能,以便您尝试在没有它的情况下尝试登录。您可能想询问用户是否希望不安全地连接,或提供必须选择的“禁用安全性”设置。

+0

谢谢。是的,我想我会拒绝不安全的连接。 – guettli