Хочу сделать почтовый сервер для свеого домена, решил использовать связку - postfix+mysql+dovecot
Postfix настроен на работу с виртуальными пользователями через mysql, для сбора почты по pop3 поставил dovecot.
Конфиг dovecot'а:
#
# /etc/dovecot/dovecot.conf
#
protocols = pop3
protocol pop3 {
listen = *:110
# ssl_listen = *:995
}
#
disable_plaintext_auth = no
##
## Logging
##
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.log
##
## Login processes
##
login_greeting = Welcome to Akko-Invest IMAP/POP3 server.
##
## Mailbox locations and namespaces
##
mail_location = maildir:/var/mail/virtual/hosting.ru
##
## Mail processes
##
mail_debug = yes
first_valid_uid = 100
last_valid_uid = 100000
first_valid_gid = 100
last_valid_gid = 100000
##
## Authentication processes
##
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain login cram-md5
# SQL database
passdb sql {
args = /etc/dovecot/dovecot-mysql.conf
}
args = /etc/dovecot/dovecot-mysql.conf
}
user = root
}
/etc/dovecot/dovecot-mysql.con:
#
# /etc/dovecot/dovecot-mysql.conf
#
# Драйвер базы данных: mysql, pgsql, sqlite
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=*******
default_pass_scheme = PLAIN
password_query = SELECT user as user, pass as password FROM login WHERE user = '%u'
user_query = SELECT '109' AS 'uid', '109' AS 'gid', '/var/mail/virtual/hosting.ru/zorro' as 'home'
Лог:
dovecot: May 13 22:20:59 Info: dovecot v1.1.11 starting up (core dumps disabled)
dovecot: May 13 22:21:00 Info: auth-worker(default): mysql: Connected to 127.0.0.1 (mail)
dovecot: May 13 22:21:01 Info: auth(default): new auth connection: pid=15530
dovecot: May 13 22:21:01 Info: auth(default): new auth connection: pid=15531
dovecot: May 13 22:21:01 Info: auth(default): new auth connection: pid=15532
dovecot: May 13 22:21:03 Info: auth(default): client in: AUTH 1 PLAIN service=pop3 lip=x.x.x.x rip=x.x.x.x lport=110 rport=41416 resp=*****
dovecot: May 13 22:21:03 Info: auth-worker(default): sql(zorro,x.x.x.x): query: SELECT user as user, pass as password FROM login WHERE user = 'zorro'
dovecot: May 13 22:21:03 Info: auth(default): client out: OK 1 user=zorro
dovecot: May 13 22:21:03 Info: auth(default): master in: REQUEST 1 15532 1
dovecot: May 13 22:21:03 Info: auth-worker(default): sql(zorro,x.x.x.x): SELECT '109' AS 'uid', '109' AS 'gid', '/var/mail/virtual/hosting.ru/zorro' as 'home'
dovecot: May 13 22:21:03 Info: auth(default): master out: USER 1 zorro uid=109 gid=109 home=/var/mail/virtual/hosting.ru/zorro
dovecot: May 13 22:21:03 Info: POP3(zorro): Effective uid=109, gid=109
dovecot: May 13 22:21:03 Info: POP3(zorro): maildir: data=/var/mail/virtual/hosting.ru
dovecot: May 13 22:21:03 Info: POP3(zorro): maildir++: root=/var/mail/virtual/hosting.ru, index=, control=, inbox=/var/mail/virtual/hosting.ru
dovecot: May 13 22:21:03 Info: pop3-login: Login: user=<zorro>, method=PLAIN, rip=x.x.x.x7, lip=x.x.x.x
dovecot: May 13 22:21:03 Info: POP3(zorro): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
dovecot: May 13 22:21:03 Info: auth(default): new auth connection: pid=15566
Вся проблема в том, что почта юзверей лежит в папке /var/mail/virtual/hosting.ru/имя юзверя.
Но dovecot этого не понимает и пытается собрать почту из /var/mail/virtual/hosting.ru, что видно из лога:
dovecot: May 13 22:21:03 Info: POP3(zorro): maildir++: root=/var/mail/virtual/hosting.ru, index=, control=, inbox=/var/mail/virtual/hosting.ru
Мне кажется все дело в sql запросе -
user_query = SELECT '109' AS 'uid', '109' AS 'gid', '/var/mail/virtual/hosting.ru/zorro' as 'home'
т е он каким то образом должен возвращать директорию с файлом, где лежит его почта, я пытался это сделать через home и mkdir, но не получилось. Результат не изменился.
Так-же пытался редактировать строчку
mail_location = maildir:/var/mail/virtual/hosting.ru в основном конфиге на
mail_location = maildir:/var/mail/virtual/hosting.ru/%u
Но тогда dovecot пытается содать некие каталоги в /var/mail/virtual/hosting.ru/zorro/tmp и не может, т к /var/mail/virtual/hosting.ru/zorro это файл,а не папка.
Не подскажете как правильно передавать dovecot'у путь до папки с почтой?