2015-11-26 42 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