Показано с 1 по 5 из 5

Тема: procmail и права на директорию пользователя

  1. #1
    Junior Member
    Регистрация
    07.09.2013
    Сообщений
    7

    Question procmail и права на директорию пользователя

    Здравствуйте

    Установил ISPmanager + postfix + dovecot + procmail на CentOS 6.4, столкнулся со следующей проблемой при доставке почты:

    (Дополнение: сменил path DefaultHomeDir /var/www на /home, поскольку этот раздел подключается отдельным диском и будет сохранен в случае проблем). httpd перекомпилирован для корректной работы suexec с этим путем)

    Sep 6 18:43:51 localhost postfix/local[19234]: B87853FCEB: to=<virtuser_548@localhost.localdomain>, orig_to=<xxx@example.com>, relay=local, delay=0.08, delays=0.06/0/0/0.02, dsn=5.2.0, status=bounced (can't create user output file. Command output: procmail: Couldn't create "/var/spool/mail/virtuser_548" procmail: Couldn't chdir to "/home/u10000/data/email/example.com/xxx/.maildir" )

    Насколько вижу происходит следующее:
    1. postfix + dovecot настроены на использование maildir
    2. postfix при доставке вызывает procmail, который должен положить почту в папку пользователя.
    3. домашняя директория u10000 (/home/u10000) принадлежит пользователю u10000:u10000, домашняя директория virtuser_548 (/home/u10000/data/email/example.com/xxx/) virtuser_548:u10000
    4. насколько я вижу по логу procmail - он запускается от имени пользователя, которому надо доставить почту, то есть в данном случае virtuser_548. Проблема в том, что права на домашнюю директорию пользователя u10000: 501, то есть когда procmail от имени virtuser_548 пытается положить почту в .maildir у него не хватает прав, ведь ему надо что-то в духе 551. Домашние папки созданы с помощью ISPmanager стандартными средствами.

    Вижу следующие способы решения:

    1. Я могу поменять права на папки вручную, но значит эту операцию надо будет делать постоянно при создании пользователя, хотелось бы этого избежать.
    2. Можно было бы поправить права пользователя при создании в ISPmanager, но не нашел такого способа в конфигурационном файле ISPmanager
    3. Можно настроить hook на создание папок пользователя, но это тоже patch

    Кто-нибудь сталкивался с подобной ситуацией?

    И дополнительный вопрос, возможно кто-то знает почему в лог файле также упоминается /var/spool/mail/virtuser_548 если доставка должна происходить в maildir.

    [root@localhost solgames.ru]# cat /etc/procmailrc
    MAILDIR=$HOME/.maildir
    LOGFILE=/var/log/procmail.log
    LOG="user: `whoami` "
    VERBOSE=yes
    DEFAULT=$MAILDIR/
    ORGMAIL=""
    ISP_from="^(From|Return-Path): ?"
    ISP_to="^(To|CC|BCC): ?"
    ISP_address="^(From|Return-Path|To|CC|BCC): ?"
    ISP_subject="^(XX-)?Subject: ?"

    Заранее спасибо
    Последний раз редактировалось dimensb; 07.09.2013 в 22:41. Причина: Дополнение про изменение DefaultHomeDir

  2. #2
    ISPsystem team
    Регистрация
    18.07.2011
    Сообщений
    256

    По умолчанию

    Можете привести логи?

  3. #3
    Junior Member
    Регистрация
    07.09.2013
    Сообщений
    7

    По умолчанию

    Здравствуйте

    А вот как раз выше что было в логе

    Sep 6 18:43:51 localhost postfix/local[19234]: B87853FCEB: to=<virtuser_548@localhost.localdomain>, orig_to=<xxx@example.com>, relay=local, delay=0.08, delays=0.06/0/0/0.02, dsn=5.2.0, status=bounced (can't create user output file. Command output: procmail: Couldn't create "/var/spool/mail/virtuser_548" procmail: Couldn't chdir to "/home/u10000/data/email/example.com/xxx/.maildir" )

    Или вы имеете в виду log файл ISPmanager?

    У меня получилось решить проблему, но, к сожалению, не могу объяснить почему так произошло изначально.

    1. Установил права всем домашним папкам пользователя (только корневым) в 511, иначе procmail просто не мог зайти в эту папку (
    2. Сменил права всех владельцев почтовых ящиков на virtuser_xxx:u10000 (то есть владелец пользователь, а группа пользователь домена)

    Убедился что ISPmanager создает почтовые папки пользователей с правильными правами. Не знаю как там оказались права u10000:u10000 вместо virtuuser_xxx:u10000, возможно как-то сам случайно сменил, более того проверил права backup и там они верные, так что, наверно, моя ошибка.

    А вот то, что права домашней папки пользователя 501 - это точно, проверял еще раз и все тоже самое. То есть я пришел к ситуации, когда после создании пользователя надо делать ручные действия, иначе procmail просто не может зайти в папку

    Насколько понимаю procmail запускается от имени пользователя, которому необходимо доставить почту. Но, поскольку группа пользователя является группой домашней директории (с правами 501), то ему просто не хватает прав чтобы зайти в нее. Проверял с помощью su -s /bin/sh virtuser_xxx и ls.

  4. #4
    Junior Member
    Регистрация
    07.09.2013
    Сообщений
    7

    По умолчанию

    А вот что еще интересное произошло.

    Стал смотреть в сторону событий ISPmanager чтобы обновить права при создании пользователя, сделал скрипт на основе примера с сайта, в процессе поставил perl-CGI модуль.

    Создал тестового пользователя, скрипт по какой-то причине права не поменял (кстати как-то можно отладить с выводом в лог?), но вот домашняя директория пользователя уже создалась не с правами u10000:u10000 (501), а u10000:mgrsecure (501). И вот этого для procmail уже хватает.

    Есть подозрение что ISPmanager нужен модуль perl-CGI и, возможно, по причине его отсутствия права не были изменены.

    Чудеса.

  5. #5
    ISPsystem team
    Регистрация
    18.07.2011
    Сообщений
    256

    По умолчанию

    Да нет, perl там не нужен.
    mgrsecure группа - это правильное поведение.
    Возможно старые ящики у вас были с неправильными правами.

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •