Nginx

nginx:了解 auth_http(IMAP 代理)的用途

  • July 6, 2014

我想通過 nginx 代理將 IMAP 客戶端請求發送到 IMAP 後端。根據mail_auth_http模組,auth_http必須使用指令來驗證客戶端。但究竟是什麼目的auth_http,為什麼不能簡單地將認證過程轉發到IMAP後端呢?

據我所知,auth_http指向一個使用自定義 HTTP 協議的身份驗證腳本以確定將使用哪個後端等,並且完全跳過了基於 IMAP 的實際身份驗證。我對麼?

如果有人可以發布一個實際範例,我將不勝感激。

主要auth_http做兩件事:

  • 它對使用者進行身份驗證(包括在身份驗證失敗時有效延遲使用者的各種選項)。
  • 它確定使用哪個後端(以及在後端身份驗證中使用哪個使用者名和密碼,如果有的話)。

雖然在某些情況下,身份驗證可以由後端直接處理,但這並不總是可能的。此外,如果需要使用 nginx 作為郵件代理,這幾乎總是意味著有多個後端,而後端是事先不知道的。

使用 nginx 處理身份驗證(特別是身份驗證錯誤)也更有效,因為郵件伺服器傾向於使用每個連接處理模型,並且在返回錯誤之前無法有效地等待一段時間。

如果您不關心上述所有內容,並且希望 nginx 只將連接傳遞到預定的後端,您可以在 nginx http{} 塊中使用類似這樣的東西作為一個死的簡單 auth_http 腳本:

location = /auth {
   add_header Auth-Status OK;
   add_header Auth-Server 127.0.0.2;  # backend ip
   add_header Auth-Port   143;        # backend port
   return 204;
}

使用這樣的身份驗證腳本,nginx 將始終獲得成功的身份驗證結果,並將連接傳遞到指定的後端,使用者名和密碼由客戶端提供。

但請注意,這應該與 SMTP 一起使用,因為 SMTP 沒有後端身份驗證。

引用自:https://serverfault.com/questions/594962