Существует ли способ ограничить доступ отправителей в Postfix в зависимости от группы Active Directory, к которой они относятся?

Вопрос или проблема

У меня настроен сервер Postfix, и он аутентифицируется через AD с использованием Dovecot.

Существует ли возможность настроить его так, чтобы один пользователь из группы A мог отправлять письма с домена @a.local, а пользователь из группы B мог отправлять письма с домена @b.local?

Postfix имеет smtpd_sender_login_maps и reject_sender_login_mismatch для этой цели, хотя это работает наоборот: при предоставлении адреса отправителя в конверте (который почтовый клиент отправляет в команде протокола MAIL FROM:) он запрашивает карту для получения списка всех SASL-логинов, которым разрешено использовать этот почтовый адрес. Если аутентифицированное имя пользователя оказалось в этом списке, проверка проходит, в противном случае возвращается ошибка.

Это независимо от метода аутентификации и библиотеки; единственное, что связывает это с аутентификацией, – это имя пользователя. Это авторизация.

Вам нужно спроектировать ваши smtpd_sender_login_maps таким образом, чтобы они:

  • запрашивали LDAP (AD)
  • динамическая часть запроса, %s, будет фактически заменена на адрес электронной почты отправителя или, возможно, в вашем случае вы можете предположить, что это часть домена (@domain на самом деле)
  • запрос должен вернуть список SMTP SASL имен пользователей, которым разрешено отправлять почту с этим почтовым адресом. Чтобы составить такой список, запрос может проверять членство группы AD.

Затем, если вы используете специализированный сервис submission в Postfix для получения почты от ваших пользователей, в конфигурации этого сервиса установите smtpd_sender_restrictions=reject_sender_login_mismatch. В последних версиях Postfix master.cf обычно имеет smtpd_sender_restrictions=$mua_sender_restrictions для сервиса submission, поэтому вам нужно установить в файле main.cf:

mua_sender_restrictions = reject_sender_login_mismatch
smtpd_sender_login_maps = ldap:/etc/postfix/ldap-sender-login-maps.cf

где /etc/postfix/ldap-sender-login-maps.cf содержит ваш запрос и параметры аутентификации для Postfix в AD для выполнения этого запроса.

Этот LDAP-запрос может быть сложным для реализации. Если это кажется вам слишком трудным, рассмотрите следующий подход:

  • Напишите скрипт (возможно, PowerShell или любой другой, который вы можете использовать), который сможет синхронизировать AD с какой-то таблицей, доступной Postfix, содержащей необходимую информацию о сопоставлении. Это может быть любая таблица: файл, MySQL/MariaDB и т.д.
  • Запускайте этот скрипт периодически и/или когда вы знаете, что данные в AD изменились.
  • Вместо этого используйте эту таблицу в smtpd_sender_login_maps.

Пожалуйста, прочитайте все ссылки на страницы руководства Postfix дважды, прежде чем задавать дополнительные вопросы. Я никогда не реализовывал это с AD, я делал это только с картой на основе MySQL, и это работало очень удовлетворительно.

Ответ или решение

Да, существует способ ограничить доступ отправителей в Postfix в зависимости от группы Active Directory (AD), в которой они находятся. Этот процесс требует настройки систем авторизации в Postfix и интеграции с LDAP для работы с пользователями и их группами в AD. Вот шаги, которые вам нужно выполнить:

  1. Настройка Postfix для использования LDAP: Убедитесь, что у вас есть установленный и работающий Postfix, а также Dovecot для аутентификации пользователей через AD.

  2. Использование параметров smtpd_sender_login_maps: Postfix предоставляет параметры smtpd_sender_login_maps и reject_sender_login_mismatch, которые позволяют контролировать, какие пользователи могут отправлять почту в зависимости от их аутентификационных данных. Вам необходимо создать подходящий LDAP-запрос, который будет сопоставлять адреса электронной почты с пользователями AD.

  3. Создание LDAP-отображения:

    • Убедитесь, что вы можете выполнить LDAP-запрос, который будет проверять членство пользователей в нужных группах. Ваш запрос должен возвращать список SMTP SASL имен пользователей, которые имеют право отправлять почту с определенного адреса электронной почты.
    • Для настройки smtpd_sender_login_maps, вам нужно создать файл конфигурации, например, /etc/postfix/ldap-sender-login-maps.cf, который будет содержать параметры соединения с AD и ваш запрос.

    Пример конфигурационного файла может выглядеть следующим образом:

    server_host = your_ad_server
    search_base = dc=yourdomain,dc=com
    bind_dn = your_bind_user
    bind_pw = your_bind_password
    query_filter = (member=*)
    result_attribute = uid
    # Здесь вам нужно настроить фильтрацию по домену
  4. Настройка ограничений в Postfix: В файле main.cf добавьте следующие строки:

    smtpd_sender_restrictions = reject_sender_login_mismatch
    smtpd_sender_login_maps = ldap:/etc/postfix/ldap-sender-login-maps.cf
  5. Реализация периодической синхронизации (если необходимо): Если выполнение LDAP-запросов вызывает сложности, вы можете написать скрипт (на PowerShell или любом другом языке), который будет синхронизировать данные из AD в общую таблицу (например, в файл, MySQL или MariaDB). Этот скрипт может запускаться периодически или после изменений в AD.

  6. Тестирование конфигурации: После настройки всех параметров протестируйте возможность отправки почты от пользователей из групп A и B, чтобы убедиться, что ограничения работают корректно.

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

Оцените материал
Добавить комментарий

Капча загружается...