Назад | Перейти на главную страницу

Почтовый прокси Nginx: могу ли я передать дополнительные заголовки в опции auth_http для аутентификации прокси

Здравствуйте, я хочу каким-то образом настроить свой собственный сценарий, который nginx использует для аутентификации адреса электронной почты, чтобы передать некоторые дополнительные заголовки, чтобы каким-то образом аутентифицировать сам почтовый прокси, поэтому никакие другие почтовые прокси, кроме авторизованных, не получат ответа.

Вы знаете, как я каким-то образом передам свои заголовки в сценарий, на который хочу ответить. Например, у меня есть следующая настройка:

mail {
    server_name mail.example.com;
    auth_http   192.16.45.126:9000/cgi-bin/nginxauth.cgi;

    proxy_pass_error_message on;

    ssl                 on;
    ssl_certificate     /etc/ssl/certs/server.crt;
    ssl_certificate_key /etc/ssl/certs/server.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 10m;

    server {
        listen     25;
        protocol   smtp;
        smtp_auth  login plain cram-md5;
    }

    server {
        listen    110;
        protocol  pop3;
        pop3_auth plain apop cram-md5;
}

     server {
        listen   143;
        protocol imap;
    }
}

Итак, предположим, что сценарий, расположенный в 192.16.45.126:9000/cgi-bin/nginxauth.cgi нужны эти дополнительные заголовки auth:

proxy_user: где я установил имя пользователя для прокси

proxy_pass: где я установил пароль для прокси

Таким образом, прокси-серверы и реплицирующие запросы должны сначала пройти аутентификацию с указанным именем пользователя и паролем, а затем обработать запрос аутентификации для пользователя. Таким образом, никакой другой запрос не будет обрабатываться дальше, кроме тех, которые исходят от авторизованных прокси.

Вы знаете, возможно ли это и как я могу настроить nginx для этого?

Я думаю, вы можете использовать auth_http_header из документация nginx:

Синтаксис: значение заголовка auth_http_header; По умолчанию: - Контекст: почта, сервер. Добавляет указанный заголовок к запросам, отправляемым на сервер аутентификации. Этот заголовок можно использовать в качестве общего секрета для проверки того, что запрос исходит от nginx. Например:

auth_http_header X-Auth-Key "secret_string";

Затем в своем сценарии вы можете проверить, что содержимое заголовка X-Auth-Key содержит значение, которое вы ожидали