Смоленск 1.5 Dovecot и уровни доступа

Mark

New member
Сообщения
8
#1
Добрый день.

Astra Linux SE 1.5 (Smolensk)
Настроен почтовый сервер exim4+dovecot по документации Ruk_admin_1.pdf.
Проблема следующая:
Если клиент (user001) работает под уровнем выше 0 и в thunderberd примет письмо с 0 уровнем, то на почтовом сервере в папке /var/mail/user001/ изменится мандатная метка файла dovecot-uidlist
Код:
root@ns1:/var/mail/user001# pdp-ls -M /var/mail/user001/
итого 56
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole cur
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.cache
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.log
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.mailbox.log
-rw-------m--  1 user001 mail Уровень_1:Низкий:Нет:0x0                                               dovecot-uidlist
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity
-r--r--r--m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity.5b1b6732
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole new
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             subscriptions
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole tmp
затем, когда user001 перезаходит под 0 уровнем и запускает клиента thunderberd, то он не видит никаких писем во входящих из-за несмены метки на этот файл.
Лог dovecot:
Код:
Jun 09 11:59:58 imap-login: Info: Login: user=<user001>, method=PLAIN, rip=192.168.2.75, lip=192.168.2.71, mpid=4090, session=<ut2wvTFucgDAqAJL>
Jun 09 11:59:58 imap(user001): Info: Current process with pid=4090 ppid=4056 (level=0, category=0x0)
Jun 09 11:59:58 imap(user001): Info: Current socket (level=0, category=0x0)
Jun 09 11:59:58 imap(user001): Info: getmacnam_r = OK
Jun 09 11:59:58 imap(user001): Info: Result of mac_set_proc() is 0 for pid 4090 (No such file or directory)
Jun 09 11:59:58 imap(user001): Info: Process with pid=4090 (level=0, category=0x0)
Jun 09 11:59:58 imap(user001): Info: /usr/sbin/astrase-fix-maildir /var/mail/user001
Jun 09 11:59:58 imap(user001): Info: /usr/sbin/astrase-fix-maildir /var/mail/user001
Jun 09 11:59:58 imap(user001): Error: open(/var/mail/user001/dovecot-uidlist) failed: Operation not permitted
Jun 09 11:59:58 imap(user001): Info: Can't read mail(level=0, category=0x0, uid=1)
Jun 09 11:59:58 imap(user001): Error: open(/var/mail/user001/dovecot-uidlist) failed: Operation not permitted
Jun 09 11:59:58 imap(user001): Info: Can't read mail(level=0, category=0x0, uid=2)
как видно из лога, команда /usr/sbin/astrase-fix-maildir /var/mail/user001 выполняется, но она не меняет метку файлу /var/mail/user001/dovecot-uidlist

если по ssh зайти на почтовый сервер под user001, то мы не видим этот файл:
Код:
user001@ns1:~$ pdp-ls -M /var/mail/user001/
итого 52
drwx--S---m--  2 user001 mail СС:Низкий:0xffffffffffffffff:ccnr,ehole cur
-rw-------m--  1 user001 mail Обычный:Низкий:0x0:ehole                dovecot.index.cache
-rw-------m--  1 user001 mail Обычный:Низкий:0x0:ehole                dovecot.index.log
-rw-------m--  1 user001 mail Обычный:Низкий:0x0:ehole                dovecot.mailbox.log
-rw-------m--  1 user001 mail Обычный:Низкий:0x0:ehole                dovecot-uidvalidity
-r--r--r--m--  1 user001 mail Обычный:Низкий:0x0:ehole                dovecot-uidvalidity.5b1b6732
drwx--S---m--  2 user001 mail СС:Низкий:0xffffffffffffffff:ccnr,ehole new
-rw-------m--  1 user001 mail Обычный:Низкий:0x0:ehole                subscriptions
drwx--S---m--  2 user001 mail СС:Низкий:0xffffffffffffffff:ccnr,ehole tmp
а вот под рутом видим:
Код:
root@ns1:/var/mail/user001# pdp-ls -M /var/mail/user001/
итого 56
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole cur
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.cache
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.log
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.mailbox.log
-rw-------m--  1 user001 mail Уровень_1:Низкий:Нет:0x0                                               dovecot-uidlist
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity
-r--r--r--m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity.5b1b6732
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole new
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             subscriptions
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole tmp
если из под рута выполнить /usr/sbin/astrase-fix-maildir /var/mail/user001, то все становится нормально до следующего получения почты с уровнем выше 0
Код:
root@ns1:/var/mail/user001# pdp-ls -M /var/mail/user001/
итого 60
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole cur
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.cache
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.index.log
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot.mailbox.log
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidlist
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity
-r--r--r--m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             dovecot-uidvalidity.5b1b6732
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole new
-rw-------m--  1 user001 mail Уровень_0:Низкий:Нет:ehole                                             subscriptions
drwx--S---m--  2 user001 mail Уровень_3:Низкий:Категория_1,Категория_2,0xfffffffffffffffc:ccnr,ehole tmp
Собственно вопрос, как исправить ситуацию? Какие данные еще необходимы для поиска проблемы?

10.06.18
удалось более детально понять механизм проблемы
допустим клиент почты запущен под уровнем 2, тут ему пришло новое письмо
файл dovecot-uidlist стал с атрибутами Уровень_2:Низкий:Нет:0x0
и вот если юзер сейчас закроет тандерберд и перезайдет под меньшим уровнем, то права на этом файле так и останутся и проблема остается.
А вот если под этим же уровнем 2 перезапустить тандерберд, то на почтовом сервер выполниться /usr/sbin/astrase-fix-maildir /var/mail/user001 и атрибуты файла dovecot-uidlist станут нормальными Уровень_0:Низкий:Нет:ehole.
Теперь при выходе со 2 уровня в 1-ый или нулевой все будет нормально.
Приучить пользователей перед логаутом перезапускать почтовый клиент не вариант.
Надо как-то фиксить работу dovecot-а, чтобы внешний скрипт /usr/sbin/astrase-fix-maildir /var/mail/user001 запускался не только вначале подключения клиента, но и после его дисконекта. Ну или придумать еще какой-то костыль.
Пока что в таком виде работа почты под разными уровнями не возможна. Это серьезная проблема, которая стопорит внедрение данной системы. Неужели раньше никто с этим не сталкивался?
 
Последнее редактирование:

cogniter

Moderator
Team Astra Linux
Сообщения
159
#2
Добрый день, попробуйте навесить атрибут ehole на служебные файлы dovecot.

Например, такой командой:
Код:
find /var/mail/ -name dovecot*  -type f -exec /usr/sbin/pdp-flbl :::ehole {} \;
 

Mark

New member
Сообщения
8
#3
Добрый день, попробуйте навесить атрибут ehole на служебные файлы dovecot.

Например, такой командой:
Код:
find /var/mail/ -name dovecot*  -type f -exec /usr/sbin/pdp-flbl :::ehole {} \;
Добрый день, а какой смысл, если утилита astrase-fix-maildir делает тоже самое. Проблема в том, что если придет очередное письмо, то произойдет запись в файл dovecot-uidlist и на него опять установятся права Уровень_1:Низкий:Нет:0x0 т.е. флаг ehole затрется. Чтобы вернуть флаг ehole надо запустить astrase-fix-maildir под этим же уровнем.
Как мне видится, в данной ситуации помогло бы добавление в исходники dovecot выполнения команды /usr/sbin/astrase-fix-maildir /var/mail/user001 не только после login, но и после logout.
 

Kompot258

New member
Сообщения
15
#4
Добрый день, а какой смысл, если утилита astrase-fix-maildir делает тоже самое. Проблема в том, что если придет очередное письмо, то произойдет запись в файл dovecot-uidlist и на него опять установятся права Уровень_1:Низкий:Нет:0x0 т.е. флаг ehole затрется. Чтобы вернуть флаг ehole надо запустить astrase-fix-maildir под этим же уровнем.
Как мне видится, в данной ситуации помогло бы добавление в исходники dovecot выполнения команды /usr/sbin/astrase-fix-maildir /var/mail/user001 не только после login, но и после logout.
Может быть можно сделать чтобы скрипт astrase-fix-maildir всегда запускался от root тогда он будет менять метки файлов dovecot под любым уровнем
 

Mark

New member
Сообщения
8
#5
Может быть можно сделать чтобы скрипт astrase-fix-maildir всегда запускался от root тогда он будет менять метки файлов dovecot под любым уровнем
В ТП ответили:
Проблема исправлена в операционной системе специального назначения 1.6.
В данном случае можно использовать команду предложенную на форуме. Можно поместить ее в крон:

*/1 * * * * root /usr/sbin/pdpl-file 0:0:0:ehole /var/mail/*/dovecot*

Каждую минуту, на служебные файлы dovecot будет выставляьтся флаг ehole
 

Kompot258

New member
Сообщения
15
#6
В ТП ответили:
Проблема исправлена в операционной системе специального назначения 1.6.
В данном случае можно использовать команду предложенную на форуме. Можно поместить ее в крон:

*/1 * * * * root /usr/sbin/pdpl-file 0:0:0:ehole /var/mail/*/dovecot*

Каждую минуту, на служебные файлы dovecot будет выставляьтся флаг ehole
Спасибо за ответ
 

GRamoboi

New member
Сообщения
48
#7
В ТП ответили:
Проблема исправлена в операционной системе специального назначения 1.6.
В данном случае можно использовать команду предложенную на форуме. Можно поместить ее в крон:

*/1 * * * * root /usr/sbin/pdpl-file 0:0:0:ehole /var/mail/*/dovecot*

Каждую минуту, на служебные файлы dovecot будет выставляьтся флаг ehole
Может нужно ТП добить, узнать че править и накостылить решение
 

pavel_9115

New member
Сообщения
6
#8
День добрый, возникла аналогичная проблема при обмене почтой в разных мандатных уровнях. Команды упомянутые выше не помогли. Может есть еще варианты? С parsecom не работали, прописывали exim dovecot в файл privsock. conf ?
 

Kompot258

New member
Сообщения
15
#9
Мне помогла эта команда, помещенная в крон
*/1 * * * * root /usr/sbin/pdpl-file 0:0:0:ehole /var/mail/*/dovecot*
Все остальное что находил не работало
 

pavel_9115

New member
Сообщения
6
#10
Мне помогла эта команда, помещенная в крон
*/1 * * * * root /usr/sbin/pdpl-file 0:0:0:ehole /var/mail/*/dovecot*
Все остальное что находил не работало
А отдельно пробовал вводить ее не помещая в cron? Я пробовал вводить в консоли и результата нет.
 

pavel_9115

New member
Сообщения
6
#11
Есть еще у кого мысли, очень нужно чтобы заработал сервис. Может с bind что не так или настройки почты? Где хоть копать. Все логи пересмотрел. Не могу найти ничего.
 

olya_21v

New member
Сообщения
12
#13
Эта Команда прописывается у пользователя и в cron загоняется?
Потому что на сервере запустила,а у пользователя проблема не решилась.