Me gustaría enviar solicitudes de clientes IMAP a un servidor IMAP a través de un proxy nginx. Según elcorreo_auth_httpmódulo, auth_http
se debe utilizar una directiva para autenticar a los clientes. Pero, ¿cuál es exactamente el propósito de auth_http
, por qué el proceso de autenticación no puede simplemente reenviarse al servidor IMAP?
Hasta donde yo sé, auth_http
apunta a un script de autenticación que utiliza un protocolo HTTP personalizado para determinar qué back-end se utilizará, etc., y la autenticación basada en IMAP real se omite por completo. ¿Estoy en lo correcto?
Agradecería que alguien pudiera publicar un ejemplo práctico.
Respuesta1
Hace auth_http
dos cosas principales:
- Autentica a los usuarios (incluidas varias opciones para retrasar eficazmente a los usuarios en caso de autenticación fallida).
- Y determina qué backend usar (y qué nombre de usuario y contraseña usar en la autenticación de backend, si es que se usa).
Si bien en algunos casos la autenticación puede ser manejada directamente por un backend, no siempre es algo posible. Además, si es necesario utilizar nginx como proxy de correo, casi siempre significa que hay varios backends y el backend no se conoce de antemano.
También es más eficiente manejar la autenticación (en particular, los errores de autenticación) con nginx, ya que los servidores de correo tienden a utilizar el modelo de proceso por conexión y no pueden esperar un tiempo antes de devolver un error.
Si no le importa todo lo anterior y desea que nginx simplemente pase una conexión a un backend predeterminado, puede usar algo como esto en el bloque http{} de nginx como un simple script 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;
}
Con dicho script de autenticación, nginx siempre obtendrá un resultado de autenticación exitoso y pasará la conexión al backend especificado, con el nombre de usuario y la contraseña proporcionados por el cliente.
Sin embargo, tenga en cuenta que esto deberíanousarse con SMTP, ya que no hay autenticación de backend con SMTP.