Управление пользователями в Postfix, популярном агенте передачи почты (MTA), является важной задачей для системных администраторов. По умолчанию Postfix использует учетные записи системных пользователей для аутентификации и контроля доступа. Однако существуют сценарии, в которых вы можете захотеть добавить пользователя без создания учетной записи системного пользователя. В этой статье мы рассмотрим пять способов достижения этой цели, используя разговорный язык и предоставляя практические примеры кода.
Метод 1: виртуальные пользователи с Dovecot
Dovecot, сервер IMAP и POP3 с открытым исходным кодом, можно настроить для предоставления виртуальных пользователей для Postfix. Виртуальные пользователи отделены от учетных записей системных пользователей, что позволяет добавлять пользователей исключительно для целей электронной почты. Вот пример необходимых изменений конфигурации в Dovecot:
# Edit /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/virtual/%d/%n
# Edit /etc/dovecot/conf.d/10-auth.conf
auth_username_format = %Ln
# Add user to /etc/dovecot/passwd
user@example.com:{PLAIN}password:1001:1001::/var/mail/virtual/example.com/user
Метод 2: таблицы поиска MySQL/MariaDB.
Другой подход заключается в использовании базы данных MySQL или MariaDB для хранения информации о пользователях. Postfix можно настроить для выполнения поиска в базе данных для аутентификации и управления пользователями. Вот пример необходимых шагов:
- Настройте сервер MySQL/MariaDB.
- Создайте базу данных и таблицу для хранения информации о пользователях.
- Настройте Postfix для использования базы данных для поиска пользователей с помощью
virtual_mailbox_maps.
Метод 3: облегченный протокол доступа к каталогам (LDAP)
LDAP — это централизованная служба каталогов, которую можно использовать для хранения информации о пользователях. Postfix можно настроить для запроса сервера LDAP для аутентификации пользователей и управления ими. Вот упрощенный пример необходимой конфигурации:
# Edit /etc/postfix/main.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf
# Create /etc/postfix/ldap-users.cf with appropriate LDAP settings
server_host = ldap.example.com
search_base = dc=example,dc=com
query_filter = (&(objectClass=inetOrgPerson)(mail=%s))
result_attribute = maildir
Метод 4: хэш-карты с Postmap
Postfix поддерживает использование хэш-карт для хранения информации о пользователе. Команду postmapможно использовать для создания и обновления хэш-карт. Вот пример:
- Создайте текстовый файл с информацией о пользователе (например,
users.txt). - Сгенерируйте хэш-карту из текстового файла, используя
postmap:
$ postmap hash:/etc/postfix/virtual
- Настройте Postfix на использование хеш-карты для поиска пользователей:
# Edit /etc/postfix/main.cf
virtual_alias_maps = hash:/etc/postfix/virtual
Метод 5: пользовательские механизмы аутентификации
Если вам требуется большая гибкость, вы можете реализовать собственные механизмы аутентификации, используя конфигурацию smtpd_recipient_restrictionsPostfix. Это позволяет аутентифицировать пользователей с помощью внешних служб, API или пользовательских сценариев. Вот пример:
# Edit /etc/postfix/main.cf
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/access,
check_recipient_access pcre:/etc/postfix/custom-auth.pcre
# Create /etc/postfix/custom-auth.pcre with custom authentication rules
/example\.com$/ custom_auth_script.sh
Используя эти методы, вы можете добавлять пользователей в Postfix без создания системных учетных записей. Независимо от того, выбираете ли вы виртуальных пользователей, поиск в базе данных, LDAP, хэш-карты или собственные механизмы аутентификации, у вас есть гибкость для эффективного управления пользователями в среде вашего почтового сервера Postfix.