Связка Exim+Dovecot+Mysql+Vexim

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Linxpro
рядовой
Сообщения: 38
Зарегистрирован: 2007-07-15 10:05:11
Откуда: Казахстан
Контактная информация:

Связка Exim+Dovecot+Mysql+Vexim

Непрочитанное сообщение Linxpro » 2010-06-24 19:42:42

Поднял данную вязку, почта приходит и уходит нормально! Возникла трудность с чтением почты! Точнее взаимодействие с шифрованием паролей Dovecot+Mysql+Vexim.

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

OS FreeBSD6.4-STABLE
Exim 4.72
Mysql 5.1.44
Vexim 2.2.1
Dovecot 1.2.11
Вот конфиги :

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

Dovecot : dovecot.conf
# Каталог для хранения рабочих данных
base_dir = /var/run/dovecot/

# Протоколы, которые будем поддерживать
protocols = imap pop3 imaps pop3s

# Адреса, которые будем слушать, мы слушаем все
listen = *

# Отключать ли авторизацию без SSL
disable_plaintext_auth = no

# Сбрасывать ли клиентские подключения при остановке главного процесса.
# Теоретически с этой опцией можно апгрейдить довкот на ходу
shutdown_clients = no

# Лог-файл для ошибок
log_path = /var/log/dovecot.log

# Лог-файл для остального
info_log_path = /var/log/dovecot-info.log

# На каких адресах ждать соединений с SSL, нам надо на всех
ssl_listen = *

# Включаем SSL
ssl = yes

# Файлы ключа и сертификата SSL
ssl_cert_file = /etc/ssl/certs/mail.pem
ssl_key_file = /etc/ssl/certs/mail.pem

# Каталог, где довкот держит сокеты для логин-процессов
login_dir = /var/run/dovecot/login

# Делать ли chroot для логин-процессов
login_chroot = yes

# Пользователь, под которым запускать логин-процессы. НЕ должен совпадать с тем, под которым работает почтовый сервер
login_user = dovecot

# Надо ли для каждой попытки логина запускать новый процесс
#login_process_per_connection = no

# Приветственное сообщение для клиентов, не будем палиться :-) )
login_greeting = Microsoft POP3 server

# Место и формат хранения пользовательской почты. У нас - Maildir
mail_location = maildir:/usr/local/mail/%d/%n
# Пользователь и группа, под которыми работаем с почтой
mail_uid = exim
mail_gid = mail

# "Привелигированная группа" для доступа к письмам. У нас и так основная - mail, но пусть будет
mail_privileged_group = mail

# Если что - тут включается дебаг
mail_debug = no

# Показывать в top и ps более подробные данные о процессах
verbose_proctitle = yes

# Ограничиваем UID/GID, которым с нами можно вообще работать
first_valid_uid = 500
last_valid_uid = 0
first_valid_gid = 0
last_valid_gid = 0

# Каталоги, куда можно делать chroot
valid_chroot_dirs = /var/mail

protocol imap {

 # Исправление известных глюков с почтовыми клиентами
 imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}

protocol pop3 {
 # Поддерживать ли команду LAST из ранних спецификаций POP3
 #pop3_enable_last = no

 # Лочить ли ящик на время сессии
 #pop3_lock_session = no

 # Формат POP3 UIDL идентификатора
 pop3_uidl_format = %08Xu%08Xv

 # Формат POP3 logout сообщения:
 #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s

 # Исправление известных глюков с почтовыми клиентами
 pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

# Допустимые символы в логине
auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

# Логгирование безуспешных попыток входа с причинами
auth_verbose = yes
# Дебаг авторизации
auth_debug = yes

# Если пароль не подходит, записать его в лог
auth_debug_passwords = yes

auth default {

 # Список желаемых механизмов авторизации. Допускаются:
 # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey gss-spnego
 mechanisms = plain login cram-md5

 # База откуда брать пароли
 passdb sql {
 # Путь к файлу конфигурации SQL
 args = /usr/local/etc/dovecot-sql.conf
 }

 # База откуда брать пользовательские данные (путь, uid/gid и т.д.)
 userdb sql {
 # Путь к файлу конфигурации SQL
 args = /usr/local/etc/dovecot-sql.conf
 }

 # Пользователь, под которым проводить авторизацию. По возможности - не root
 user = exim

}

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

dovecot-sql.conf

# Тип SQL-сервера
driver = mysql

# Параметры соединения с SQL
connect = host=localhost user=vexim password=password dbname=vexim

# Схема хранения паролей
default_pass_scheme = PLAIN-MD5

# Запросы для извлечения данных из БД
password_query = SELECT users.crypt as `password` FROM users,domains WHERE users.username = '%u' AND users.enabled = '1' AND users.type='local' and domains.e
user_query = SELECT pop as home, uid, gid FROM users WHERE username = '%u'

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

Exim authenticators.conf

plain_login:
        driver = plaintext
        public_name = PLAIN
        server_condition = ${lookup mysql{SELECT '1' FROM users \
                                WHERE username = '${quote_mysql:$2}' \
                                AND clear = '${quote_mysql:$3}'} {yes}{no}}
        server_set_id = $2

fixed_login:
        driver = plaintext
        public_name = LOGIN
        server_prompts = "Username:: : Password::"
        server_condition = ${lookup mysql{SELECT '1' FROM users \
                                WHERE username = '${quote_mysql:$1}' \
                                AND clear = '${quote_mysql:$2}'} {yes}{no}}
        server_set_id = $1

fixed_cram:
        driver = cram_md5
        public_name = CRAM-MD5
        server_secret = ${lookup mysql{SELECT clear FROM users \
                                WHERE username = '${quote_mysql:$1}'}{$value}fail}
        server_set_id = $1

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

Vexim variables.php

 /* Set to either "des" or "md5" depending on your crypt() libraries */
  $cryptscheme = "md5";

Специально включил debug в Dovecot! В логах следующее:

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

Jun 24 22:27:11 auth(default): Info: client in: AUTH    1       PLAIN   service=pop3    lip=1.1.1.1       rip=2.2.2.2       lport=110       rport=4622   resp=AGFkbWluQHByb2Zlc3Npb25hbC5regAyMzZ3cWRic2Q=
Jun 24 22:27:11 auth-worker(default): Info: sql(user@domain.tld,2.2.2.2): query: SELECT users.crypt as `password` FROM users,domains WHERE users.username = 'user@domain.tld' AND users.enabled = '1' AND users.type='local' and domains.enabled='1' and domains.domain_id = users.domain_id
Jun 24 22:27:11 auth(default): Info: client out: OK     1       user=user@domain.tld
Jun 24 22:27:11 auth(default): Info: master in: REQUEST 1       10376   1
Jun 24 22:27:11 auth-worker(default): Info: sql(user@domain.tld,2.2.2.2): SELECT pop as home, uid, gid FROM users WHERE username = 'admin@professional.kz'
Jun 24 22:27:11 auth(default): Info: master out: USER   1       user@domain.tld   home=/usr/local/mail/domain.tld/user      uid=90  gid=90
Jun 24 22:27:11 pop3-login: Info: Internal login failure (auth failed, 1 attempts): user=<user@domain.tld>, method=PLAIN, rip=2.2.2.2, lip=1.1.1.1
Jun 24 22:27:12 auth(default): Info: new auth connection: pid=10382
Частичный дамп базы мускула :

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

INSERT INTO `users` (`user_id`, `domain_id`, `localpart`, `username`, `clear`, `crypt`, `uid`, `gid`, `smtp`, `pop`, `type`, `admin`, `on_avscan`, `on_blocklist`, `on_complexpass`, `on_forward`, `on_piped`, `on_spamassassin`, `on_vacation`, `enabled`, `flags`, `forward`, `maxmsgsize`, `quota`, `realname`, `sa_tag`, `sa_refuse`, `tagline`, `vacation`) VALUES
(1, 1, 'user', 'user', '123465', MD5('3d9188577cc9bfe9291ac66b5cc872b7'), 90, 90, '', '', 'site', 1, 0, 0, 0, 0, 0, 0, 0, 1, NULL, NULL, 0, 0, 'SiteAdmin', 60, 600, NULL, NULL);
Вывод dovecotpw -l

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

dovecotpw -l
CRYPT MD5 MD5-CRYPT SHA SHA1 SHA256 SMD5 SSHA SSHA256 PLAIN CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM OTP SKEY RPA
Пароль не принимается, почему не понятно!
Помогите разобраться с этим делом! Буду премного благодарен!
Опыт появляется сразу после того, когда он не нужен!

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35439
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Связка Exim+Dovecot+Mysql+Vexim

Непрочитанное сообщение Alex Keda » 2010-10-03 20:33:48

вывод в лог повербозней сделайте
Убей их всех! Бог потом рассортирует...

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: Связка Exim+Dovecot+Mysql+Vexim

Непрочитанное сообщение skeletor » 2010-10-04 10:03:33

У меня авторизация выставлена так:

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

{dovecot.conf} mechanisms = plain login cram-md5 digest-md5
{dovecot-sql.conf}  default_pass_scheme = MD5
остальное так же как и у тебя.
В итоге пароль в БД лежит и в чистом виде и в виде хеша.

Аватара пользователя
Linxpro
рядовой
Сообщения: 38
Зарегистрирован: 2007-07-15 10:05:11
Откуда: Казахстан
Контактная информация:

Re: Связка Exim+Dovecot+Mysql+Vexim

Непрочитанное сообщение Linxpro » 2010-10-05 6:13:30

Спасибо за ответы! будем крутить!!!
Опыт появляется сразу после того, когда он не нужен!