URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 93594
[ Назад ]

Исходное сообщение
"ошибка dovecot Can't expand ~/ for mail root dir in"

Отправлено snooooop , 24-Июл-12 16:03 
все привет!
настраиваю стандартную конфигурацию postfix+dovecot+mysql
застрял на таком моменте = приотправке / получении письма вот такая ошибка

Error: user mailo@ema.ru: Initialization failed: Initializing mail storage from mail_location setting failed: Home directory not set for user. Can't expand ~/ for mail root dir in: ~/mail/:INBOX=/var/mail/mailo@ema.ru
Jul 24 18:53:00 pop3(mailo@ema.ru): Error: Invalid user settings. Refer to server log for more information.

конфиг довекота ниже
Version 2.0.19
# OS: Linux 3.2.0-26-generic x86_64 Ubuntu 12.04 LTS
auth_debug = yes
auth_mechanisms = plain login
debug_log_path = /var/log/dovecot.log
log_path = /var/log/dovecot.log
mail_access_groups = mail
mail_debug = yes
mail_location = mbox:~/mail/:INBOX=/var/mail/%u
mail_privileged_group = mail
passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocols = " imap pop3"
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
}
ssl_cert = </etc/ssl/certs/dovecot.pem
ssl_key = </etc/ssl/private/dovecot.pem
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocol pop3 {
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_uidl_format = %08Xu%08Xv
}

подскажите, что не так делаю?


Содержание

Сообщения в этом обсуждении
"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено исшо_адын_аноним , 24-Июл-12 17:10 
>[оверквотинг удален]
> ssl_key = </etc/ssl/private/dovecot.pem
> userdb {
>   args = /etc/dovecot/dovecot-sql.conf
>   driver = sql
> }
> protocol pop3 {
>   pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
>   pop3_uidl_format = XuXv
> }
> подскажите, что не так делаю?

#id mailo@ema.ru
:)))))))))))))))


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 25-Июл-12 05:57 

> #id mailo@ema.ru
>  :)))))))))))))))

шо???


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено кегна , 24-Июл-12 23:21 
>[оверквотинг удален]
> ssl_key = </etc/ssl/private/dovecot.pem
> userdb {
>   args = /etc/dovecot/dovecot-sql.conf
>   driver = sql
> }
> protocol pop3 {
>   pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
>   pop3_uidl_format = %08Xu%08Xv
> }
> подскажите, что не так делаю?

рабочий конф с боевого сервака:

$cat /usr/local/etc/dovecot.conf
base_dir = /var/run/dovecot/

protocols = pop3 imaps managesieve
ssl_cert_file=/usr/local/etc/dovecot/cert.pem
ssl_key_file=/usr/local/etc/dovecot/key.pem
mail_location = maildir:/var/mail/virtual/%d/%n

protocol imap  {
#    listen=*:143
    ssl_listen=*:993
    mail_plugins = quota imap_quota
    imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
    imap_logout_format = bytes=%i/%o
}

protocol pop3  {
#    listen=*:110
    ssl_listen=*:995
    ssl_cert_file=/usr/local/etc/dovecot/cert.pem
    ssl_key_file=/usr/local/etc/dovecot/key.pem
    pop3_uidl_format = %08Xu%08Xv
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    mail_plugins = quota
}

protocol lda {
  postmaster_address = postmaster@xxxxxx.ru
  hostname = xxx.xxxxxxx.ru
  mail_plugins = quota sieve
  deliver_log_format = msgid=%m: %$ %f
  sendmail_path = /usr/sbin/sendmail
  auth_socket_path = /var/run/dovecot/auth-master
}

shutdown_clients = yes
log_timestamp = "%Y-%m-%d %H:%M:%S "
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
syslog_facility = mail

first_valid_uid = 1981
last_valid_uid = 1981
first_valid_gid = 1981
last_valid_gid = 1981

maildir_stat_dirs = yes
maildir_copy_with_hardlinks = yes
maildir_copy_preserve_filename = no

namespace private {
    separator = /
    prefix =
    inbox = yes
}

auth default {
    mechanisms = plain login cram-md5
    socket listen {
     master {
            path = /var/run/dovecot/auth-master
        mode = 0600
        user = virtual
        group = virtual
    }
    client {
        path = /var/spool/postfix/private/dovecot-smtp-auth
        mode = 0660
        user = postfix
        group = postfix
    }
    }
    passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
    }
    userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
    }
    user=virtual
}

plugin {
    quota = maildir
    quota_rule2 = Trash:storage=500M
    sieve = ~/.dovecot.sieve
    sieve_global_path = /var/mail/virtual/.sieve
}

$ cat /usr/local/etc/dovecot-sql.conf
driver = mysql
connect = host=/tmp/mysql.sock dbname=postfix user=postfix password=xxxxxxxxxxxxxxxx
default_pass_scheme = MD5-CRYPT
password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active = '1' LIMIT 1
user_query = SELECT maildir, 1981 AS uid, 1981 AS gid, CONCAT('maildir:storage=', FLOOR( quota / 1024 ) ) AS quota FROM mailbox WHERE username = '%u' AND active = '1'

PS. uname=freebsd! по этому пути уж сами смотрите ) и сокеты... mysql тоже только через сокет /tmp/mysql.sock


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 25-Июл-12 10:56 
вот эта строка всё решила! спасибо!
mail_location = maildir:/var/mail/virtual/%d/%n

"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 25-Июл-12 06:45 
может проблема в том, что майл дир у меня вот так выглядит:

root@mailtest:/etc# ls -lh /var/mail/
total 76K
-rw------- 1 mail mail  22K Jul 24 18:03 mailo
-rw------- 1 mail mail 8.8K Jul 24 15:26 root
-rw------- 1 mail mail  33K Jul 24 16:47 snoop

а ищет он
Can't expand ~/ for mail root dir in: ~/mail/:INBOX=/var/mail/mailo@ema.ru

а как его принудить искать
Can't expand ~/ for mail root dir in: ~/mail/:INBOX=/var/mail/mailo

или как создавать папки /var/mail/mailo@ema.ru  ?


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено lavr , 25-Июл-12 11:54 
>[оверквотинг удален]
> root@mailtest:/etc# ls -lh /var/mail/
> total 76K
> -rw------- 1 mail mail  22K Jul 24 18:03 mailo
> -rw------- 1 mail mail 8.8K Jul 24 15:26 root
> -rw------- 1 mail mail  33K Jul 24 16:47 snoop
> а ищет он
> Can't expand ~/ for mail root dir in: ~/mail/:INBOX=/var/mail/mailo@ema.ru
> а как его принудить искать
> Can't expand ~/ for mail root dir in: ~/mail/:INBOX=/var/mail/mailo
> или как создавать папки /var/mail/mailo@ema.ru  ?

вы совсем ничего не представляете?

есть два формата для хранения почты: обычный mailbox (mbox) и maildir,
взависимости от формата, вы соответствующим образом настраиваете MTA (Mail Transfer Agent:
postfix или sendmail или exim...), еще точнее LDA (Local Delivery Agent) вашего MTA.
Опять же в соответствии с выбраным форматом хранения Maildir или MBox - настраиваете
IMAP/POP3 сервер.
Далее, вы указываете где будет MailDir или HOME/mail для IMAP и INBOX, INBOX - файл, ящик
куда будет поступать ВХОДЯЩАЯ почта.

http://wiki2.dovecot.org/MailLocation

форматы:
http://wiki2.dovecot.org/MailLocation/mbox
http://wiki2.dovecot.org/MailLocation/Maildir

есть еще важный момент, зависит от использования SQL и в каком объеме, ибо:

- mail_location setting in dovecot.conf is used if nothing else overrides it.
- mail userdb field overrides mail_location setting.

выше видим что mail_location в поле userdb SQL - переопределяет mail_location из dovecot.conf

Еще момент: использование виртуальных доменов и виртуальных пользователей и где
будет храниться для них почта и chown+chmod для этого места.


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 25-Июл-12 13:39 
>[оверквотинг удален]
> http://wiki2.dovecot.org/MailLocation/mbox
> http://wiki2.dovecot.org/MailLocation/Maildir
> есть еще важный момент, зависит от использования SQL и в каком объеме,
> ибо:
> - mail_location setting in dovecot.conf is used if nothing else overrides it.
> - mail userdb field overrides mail_location setting.
> выше видим что mail_location в поле userdb SQL - переопределяет mail_location из
> dovecot.conf
> Еще момент: использование виртуальных доменов и виртуальных пользователей и где
> будет храниться для них почта и chown+chmod для этого места.

ну уж прям не всё, но кое что не представляю.
представляю то что у меня работающий сервер(на котором я хочу сделать хранение учёток в MySQL) почту хранит в mailbox, а существующий тестовый сервер не хочет работать с mailbox
а вот почему - не представляю, и ищу информацию.

с chown+chmod нет проблем, проблемы только с мбоксами\мдирами.
спасибо за линки, я их читал.

туплю чёт...


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено lavr , 25-Июл-12 17:13 
>[оверквотинг удален]
>> Еще момент: использование виртуальных доменов и виртуальных пользователей и где
>> будет храниться для них почта и chown+chmod для этого места.
> ну уж прям не всё, но кое что не представляю.
> представляю то что у меня работающий сервер(на котором я хочу сделать хранение
> учёток в MySQL) почту хранит в mailbox, а существующий тестовый сервер
> не хочет работать с mailbox
> а вот почему - не представляю, и ищу информацию.
> с chown+chmod нет проблем, проблемы только с мбоксами\мдирами.
> спасибо за линки, я их читал.
> туплю чёт...

вот с последним согласаен, вернувшись на несколько писем назад, увидите
что Вы тупо подставили maildir, а сейчас говорите про mbox, это не два разных
слова, это два РАЗНЫХ формата хранения почты.

- определитесь с форматом
- определитесь с наличием virtual domain и virtual users
- теперь можете определиться с хранением почты или INBOX

by default в /var/mail или в /var/spool/mail (зависит от Unix'а), хранятся
INBOX'ы == username без доменного суффикса.
Вот почему надо определиться с форматом и где что будет храниться,
ибо обычно делают /path/domain/username для virtual domains/users
почитайте wiki2.dovecot.org и документацию про специальные переменные:

%u - имя пользователя
%n - пользовательская часть в user@domain, то же самое что и %u, если не задана доменная часть
%d - доменая часть в user@domain, пустая, если не указан домен
%h - домашний каталог

если же пользователи и аутентикация идет через SQL, то нужно правильно делать
запрос и правильно определять хранилище.


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 26-Июл-12 06:20 
>>вот с последним согласаен, вернувшись на несколько писем назад, увидите
>>что Вы тупо подставили maildir, а сейчас говорите про mbox, это не два разных
>>слова, это два РАЗНЫХ формата хранения почты.

это я уже понял. то что разные форматы - понятно.

>>- определитесь с форматом
>>- определитесь с наличием virtual domain и virtual users
>>- теперь можете определиться с хранением почты или INBOX

у меня mbox, т.к. на боевом серваке mbox используется. яб перешел на mdir, но нужен конвертер.

>>by default в /var/mail или в /var/spool/mail (зависит от Unix'а), хранятся
>>INBOX'ы == username без доменного суффикса.

у меня юбюнта, почта лежит в /var/mail/%n

>>Вот почему надо определиться с форматом и где что будет храниться,
>>ибо обычно делают /path/domain/username для virtual domains/users
>>почитайте wiki2.dovecot.org и документацию про специальные переменные:

формат mail_location = mbox:~/mail:INBOX=/var/mail/%n

>>%u - имя пользователя
>>%n - пользовательская часть в user@domain, то же самое что и %u, если не задана >>доменная часть
>>%d - доменая часть в user@domain, пустая, если не указан домен
>>%h - домашний каталог

с этим я разобрался.

>>если же пользователи и аутентикация идет через SQL, то нужно правильно делать
>>запрос и правильно определять хранилище.

в этом и проблема, думаю над запросом.
я хочу пользователей идентифицировать ч/з MySQL.

да не могу найти толковую доку в инете где делали бы с mbox.


"ошибка dovecot Can't expand ~/ for mail root dir in"
Отправлено snooooop , 27-Июл-12 08:49 
собственно вот правильная строчка из файла dovecot/dovecot-sql.conf


user_query = SELECT  '/var/mail' as home, 'mbox:~/mail:INBOX=/var/mail/%n' as mail FROM mailbox WHERE username = '%u' AND active = '1'

всем спасибо.