все привет!
настраиваю стандартную конфигурацию 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
}подскажите, что не так делаю?
>[оверквотинг удален]
> 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
:)))))))))))))))
> #id mailo@ema.ru
> :)))))))))))))))шо???
>[оверквотинг удален]
> 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/%nprotocol 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 = mailfirst_valid_uid = 1981
last_valid_uid = 1981
first_valid_gid = 1981
last_valid_gid = 1981maildir_stat_dirs = yes
maildir_copy_with_hardlinks = yes
maildir_copy_preserve_filename = nonamespace 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
вот эта строка всё решила! спасибо!
mail_location = maildir:/var/mail/virtual/%d/%n
может проблема в том, что майл дир у меня вот так выглядит: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 ?
>[оверквотинг удален]
> 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 для этого места.
>[оверквотинг удален]
> 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 нет проблем, проблемы только с мбоксами\мдирами.
спасибо за линки, я их читал.туплю чёт...
>[оверквотинг удален]
>> Еще момент: использование виртуальных доменов и виртуальных пользователей и где
>> будет храниться для них почта и chown+chmod для этого места.
> ну уж прям не всё, но кое что не представляю.
> представляю то что у меня работающий сервер(на котором я хочу сделать хранение
> учёток в MySQL) почту хранит в mailbox, а существующий тестовый сервер
> не хочет работать с mailbox
> а вот почему - не представляю, и ищу информацию.
> с chown+chmod нет проблем, проблемы только с мбоксами\мдирами.
> спасибо за линки, я их читал.
> туплю чёт...вот с последним согласаен, вернувшись на несколько писем назад, увидите
что Вы тупо подставили maildir, а сейчас говорите про mbox, это не два разных
слова, это два РАЗНЫХ формата хранения почты.- определитесь с форматом
- определитесь с наличием virtual domain и virtual users
- теперь можете определиться с хранением почты или INBOXby 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, то нужно правильно делать
запрос и правильно определять хранилище.
>>вот с последним согласаен, вернувшись на несколько писем назад, увидите
>>что Вы тупо подставили 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/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'всем спасибо.