Dovecot2 (+Exim+MySQL) - ошибка доступа

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Dovecot2 (+Exim+MySQL) - ошибка доступа

Непрочитанное сообщение Mushin » 2012-06-12 9:42:48

Помогите пожалуйста, уже неделю бьюсь с проблемой, иссякло терпение и фантазия, суть проблемы следующая:
FreeBSD 9.0 + Exim + Dovecot2 + виртуальные пользователи в MySQL

Код: Выделить всё

server$ telnet localhost 110
    Trying 127.0.0.1 . . .
    Connected to localhost.
    Escape character is '^]'.
    +OK Dovecot redy.
user vital@server.mydomain
    +OK
pass ****
    -ERR [IN-USE] Internal error occurred. Refer to server log for more information.
    Connection closed by foreign host.
В логах вижу следующее:

dovecot-debuglog:

Код: Выделить всё

Jun 12 08:27:00 auth: Debug: Loading modules from directory: /usr/local/lib/dovecot/auth
Jun 12 08:27:00 auth: Debug: auth client connected (pid=2042)
Jun 12 08:27:31 auth: Debug: client in: AUTH	1	PLAIN	service=pop3	secured	lip=127.0.0.1	rip=127.0.0.1	lport=110	rport=46419	resp=AHZpdGFsQHdlYnNlcnZlci50dmNlbnRlci5rcy51YQBxd2VzdA==
Jun 12 08:27:31 auth-worker(2045): Debug: Loading modules from directory: /usr/local/lib/dovecot/auth
Jun 12 08:27:31 auth-worker(2045): Debug: sql(vital@server.mydomain,127.0.0.1): query: SELECT password FROM users WHERE login = 'vital' AND domain = 'server.mydomain' AND status = '1'
Jun 12 08:27:31 auth: Debug: client out: OK	1	user=vital@server.mydomain
Jun 12 08:27:31 auth: Debug: master in: REQUEST	554041345	2042	1	0ce24608dcc4be2b6bb7799e37000242
Jun 12 08:27:31 auth-worker(2045): Debug: sql(vital@server.mydomain,127.0.0.1): SELECT uid, gid FROM users WHERE login = 'vital' AND domain = 'server.mydomain'
Jun 12 08:27:31 auth: Debug: master out: USER	554041345	vital@server.mydomain	uid=26	gid=6

dovecot-infolog:

Код: Выделить всё

Jun 12 08:27:31 auth-worker(2045): Info: mysql(localhost): Connected to database exim
Jun 12 08:27:31 pop3-login: Info: Login: user=<vital@server.mydomain>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, mpid=2046, secured
dovecot-syslog:

Код: Выделить всё

Jun 12 08:27:31 pop3(vital@server.mydomain): Error: user vital@server.mydomain: Initialization failed: Namespace '': mkdir( /var/exim/server.mydomain/vital) in directory /var/run/dovecot failed: Permission denied (euid=26(mailnull) egid=6(mail) missing +w perm: /var/run/dovecot, dir owned by 0:0 mode=0755)
Jun 12 08:27:31 pop3(vital@server.mydomain): Error: Invalid user settings. Refer to server log for more information.

В конфиге юзер для доступа к почте прописан:

Код: Выделить всё

mail_uid = mailnull
mail_gid = mail
mail_privileged_group = mail
Мєйл-дир прописан:

Код: Выделить всё

mail_location = maildir: /var/exim/%Ld/%Ln
Где рыть не пойму.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Alteron
сержант
Сообщения: 230
Зарегистрирован: 2008-07-21 9:35:11

Re: Dovecot2 (+Exim+MySQL) - ошибка доступа

Непрочитанное сообщение Alteron » 2012-06-13 21:20:04

Ну оно же тебе пишет на чистом аглицком:

Код: Выделить всё

mkdir( /var/exim/server.mydomain/vital) in directory /var/run/dovecot failed: Permission denied (euid=26(mailnull) egid=6(mail) missing +w perm: /var/run/dovecot, dir owned by 0:0 mode=0755)
Измеритель верёвочками.

Mushin
рядовой
Сообщения: 26
Зарегистрирован: 2008-07-17 8:51:57

Re: Dovecot2 (+Exim+MySQL) - ошибка доступа

Непрочитанное сообщение Mushin » 2012-06-14 8:50:02

Alteron писал(а):Ну оно же тебе пишет на чистом аглицком:

Код: Выделить всё

mkdir( /var/exim/server.mydomain/vital) in directory /var/run/dovecot failed: Permission denied (euid=26(mailnull) egid=6(mail) missing +w perm: /var/run/dovecot, dir owned by 0:0 mode=0755)
Это из той оперы, когда буковки понятны, а смысла не догоняю. Спасибо! Я уже разобрался! Довекот пытался создать директорию /var/exim/server.mydomain/vital в директории /var/run/dovecot, а доступа, естественно на эти действия от имени mailnull:mail он не получил. Вылечилось просто:
1. В файле /usr/local/etc/dovecot/dovecot-sql.conf.ext подрихтовал запрос к БД MySQL
- было: user_query = SELECT uid, gid FROM users WHERE username = '%u'
- стало: user_query = SELECT pop AS home, uid, gid FROM users WHERE username = '%u'
2. В файле /usr/local/etc/dovecot/conf.d/10-mail.conf изменил следующую строчку:
- было: mail_location = maildir: /var/exim/%Ld/%Ln
- стало: mail_location = maildir:Maildir
А теперь мои дилетантские пояснения:
- Поскольку в качестве ВЭБ-морды для управления почтовыми аккаунтами я использую VEXIM, и дамп БД я брал его родной, то путь к почтовым ящикам юзеров у меня хранится в поле pop, и присвоив переменной home значение поля pop, я тем самым заставил DOVECOT отсчитывать путь не от /var/run/dovecot, а от /var/exim/server.mydomain/username. И прописав mail_location = maildir:Maildir я тем самым, предложил DOVECOT-у искать почту по адресу: /var/exim/server.mydomain/username/Maildir, что соответствует настройкам EXIM-a!