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

Postfix автоматически создает Maildir

Я уже некоторое время бьюсь головой о стену по этому поводу. По сути, вот краткое изложение:

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

Я обновляю внутренний почтовый сервер. В настоящее время пользователь создается для каждого пользователя электронной почты на сервере, который создает почтовый ящик. На новом сервере все аутентифицируется через PAM на сервере LDAP (все работает правильно). Моя цель - заставить Postfix автоматически создавать каталог Maildir для пользователя. Это нормально работает, когда у меня есть каталог / home с разрешениями 777, но по очевидным причинам этого следует избегать. Я хотел бы сделать это с 775 разрешениями на / home с владельцем группы любого пользователя, от имени которого работает Postfix, но я не могу понять, какого пользователя использовать. С разрешениями 777 каталог / home / $ user / Maildir создается при доставке сообщения. Кто-нибудь знает, как я могу это сделать без разрешений 777?

Система, над которой я работаю, представляет собой 64-битную установку Debian Lenny 5.07.

Любой совет будет принят во внимание.

Ответ на этот вопрос зависит от того, как настроена ваша система Postfix. Вы упоминаете pam и LDAP, поэтому я предполагаю, что все ваши домены находятся в $ mydestination, или вы используете только один домен (например, example.com)

Возможно, вам будет проще настроить virtual_mailbox_domains с картами LDAP вместо карт mysql / pgsql (хотя логика точно такая же).

Вы создаете одного системного пользователя без прав входа в систему. Я предполагаю здесь имя пользователя и группу vmail: vmail, но конкретное имя не важно.

В LDAP создайте путь к почтовому ящику относительно $ HOME для vmail (так что maildir станет / home / vmail / user / Maildir /).

Добавьте свои домены в virtual_mailbox_domains. Создайте карту virtual_mailbox_maps, которая принимает имя пользователя в качестве входных данных и возвращает имя пользователя / Maildir в качестве выходных данных.

Устанавливать


virtual_mailbox_domains = example.com
virtual_mailbox_base = /home/vmail/
virtual_mailbox_maps = ldap:/etc/postfix/ldap_virtual.cf
virtual_uid_maps = static:$uid_of_vmail
virtual_gid_maps = static:$gid_of_vmail
#$uid_of_vmail and $gid_of_vmail are obtained from the output of 
#id vmail
in main.cf.

Видеть http://www.postfix.org/ldap_table.5.html и http://www.postfix.org/VIRTUAL_README.html для получения дополнительной информации (и что вам нужно поместить в ldap_virtual.cf).

FWIW, Postfix запускает процесс локальной доставки как uid / gid пользователя системы, которому вы доставляете.

Общие разрешения для / home - 755 с владельцем и группой root, но пользователь может писать внутри ~ user. Следовательно, Postfix с радостью доставит ~ user / Maildir /, но не сможет создать ~ user. Использование виртуальных пользователей позволит обойти эту проблему, предоставив доступ ко всем почтовым ящикам единственному идентификатору uid / gid, который затем будет доступен только для вашего программного обеспечения pop3 / imap. Прямой доступ к почтовому ящику для пользователей будет невозможен.

Если постфикс (который входит в mail group) не может писать в каталог, он не сможет завершить доставку. Секрет в том, чтобы получить mail группа, чтобы иметь доступ для чтения и записи в пользователь домашний каталог. 775 будет достаточно, чтобы postfix попал в / home; но после этого может быть недостаточно, чтобы позволить ему создать каталог в / home / $ user, потому что назначенная группа, вероятно, не mail, и хозяин, конечно, не mail, и мировые биты наверняка не установлены на rwx. Так что для постфикса это «суп не надо».

В качестве временной меры вы всегда можете установить группу каталога пользователя на mail, но я правда не рекомендую это.

Лучшим решением было бы использовать расширенные атрибуты, доступны в EXT3 и EXT4. Это позволит вам определить несколько групп, а не только одну. Итак, вы можете добавить mail группу в каждый каталог пользователей с rwxне r-x, обойдя проблему и разрешив создание каталога.

Просто любопытно, почему бы не использовать /var/spool/mail/$user и покончить с этим? Использование такой схемы решило бы всю проблему; группа для каталога является defacto mail, минуя весь вопрос "Мне нужен 777". Я могу только догадываться, что вам нужно монтировать домашние каталоги пользователей по NFS или что-то в этом роде.