smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-11 13:07:00

Всем привет.
Поставил Exim + Dovecot по статье Лиса http://www.lissyara.su/?id=1173
Столкнулся с проблемой, пароли пользователей хранятся в базе созданной postfixadmin криптованы md5crypt. Exim не понимает этот алгоритм и не может авторизовать пользователей... Ставил перед `password` = MD5(' ') в SQL запросе, не помогло. Подскажите как победить?

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

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-11 13:16:00

Возможно что-нибудь из этого можно использовать http://dev.mysql.com/doc/refman/5.1/en/ ... tions.html Для составления корректного запроса?

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-11 14:31:11

Как вариант перенастроить режим аутентфикации пользователей, и завернуть это дело на Dovecot. Он умеет md5-crypt.
В камментах к статье было:
Tech, 2008-08-06 в 12:23:09
Хотел на FreeBSD 7 поднять все это дело, но не сложилось с рейдом: адаптековский asr падал поcтоянно, аналогично как и gmirror. Времени думать долго не было и пришлось лепить с г..на конфту (железо старое) в ускоренном темпе. Поставил Debian etch - и сконфигуировал там md. Пока вроде держится. Но я не об этом...
Поскольку постфиксадмин хранить данные в $CONF['encrypt'] = 'md5crypt'; а хранить в открытом виде как бы не особо и хотелось бы, плюс ко всему проверка логина/пароля на поп3 идет через dovecot, то почему бы не попользоваться им и для smtp auth ?

вот что получается у меня.
postfixadmin/config.inc.php
...
$CONF['encrypt'] = 'md5crypt';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

/etc/dovecot/dovecot-sql.conf
...
default_pass_scheme = MD5
password_query = SELECT `username` as `user`,`password` FROM `mailbox` WHERE `username`='%n@%d' AND `active`='1'

user_query = SELECT `maildir` AS `home`, 102 AS `uid`, 104 AS `gid` FROM `mailbox` WHERE `username`='%n@%d' AND `active`='1'

102,104 - это дефолтный дебиановские Debian-exim. решил поставить их т.к. после апдейта или других манипуляций оно все права на спул и логи exim'a ставит в Debian-exim, вобщем не удобно что-то другое ставить.
соответсвенно, меняем чуток /etc/dovecot/dovecot.conf
...
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = Debian-exim
#group = Debian-exim
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = Debian-exim
#group = Debian-exim
}
}

ну и exim4.conf:
exim_user = Debian-exim
exim_group = Debian-exim
...
dovecot_delivery:
driver = pipe
command = /usr/lib/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = Debian-exim
...
auth_plain:
driver = dovecot
public_name = PLAIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

auth_login:
driver = dovecot
public_name = LOGIN
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1

отмечу также что для нормальной работы dovecot_delivery мне пришлось на dovecot.conf и dovecot-sql.conf поставить группой Debian-exim и дать право на чтение, а то по-дефолту шло -rw-----— 1 root root и доставка не работала а в логе exim'a шли матюки на пермишены файла dovecot.conf
Также нужно поставить права на mail_location как Debian-exim:Debian-exim ну или какие там у вас узеры и группы.

Надеюсь, кому-то это будет полезным. Если что не так (может где глупости делаю) - поправьте меня плиз.
ну а там допилить под себя! :smile:

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-11 15:17:51

Прописал dovecot для авторизации в Exim и, вот что он мне написал:

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

auth_plain authenticator failed for () [192.168.1.7]: 435 Unable to authenticate at present: authentication socket protocol error
2009-08-11 16:14:42 auth_login authenticator failed for () [192.168.1.7]: 435 Unable to authenticate at present: authentication socket protocol error
2009-08-11 16:14:42 H=() [192.168.1.7] F=<igor@> rejected RCPT <vasia>: relay not permitted
При этом права на сокет у Exim есть.

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-11 16:30:38

а почему доменной части у отправителя пусто?
dovecot.conf допиливал?

Гость
проходил мимо

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение Гость » 2009-08-11 16:45:01

Я, удалил доменную часть =). Ошибка остаётся =(


CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-11 17:41:13

Выложи конфигу dovecot и dovecot-sql. Посмотрим. Тока без камментов, желательно :smile:
Или verbose в dovecot и логи сюда!

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 8:21:58

да и там в dovecot-sql.conf ошибочка:
вместо:

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

default_pass_scheme = MD5
нужно:

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

default_pass_scheme = MD5-CRYPT

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 10:03:59

Вот как просили конфиг Dovecot:

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

base_dir = /var/run/dovecot/
protocols = imap imaps
#   protocol imap {
#     listen = *:10143
#     ssl_listen = *:10943
#     ..
#   }
#   protocol pop3 {
#     listen = *:10100
#     ..
#   }
listen = *
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot1.log
log_timestamp = "%b %d %H:%M:%S "
ssl_disable = yes
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
login_process_size = 64
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_max_connections = 256
login_greeting = Hi.
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:/usr/spool/virtual/%Lu
mail_uid = 26
mail_gid = 6
mail_privileged_group = mail
mail_access_groups = mailnull
mail_debug = yes
mail_log_prefix = "%Us(%u): "
mail_log_max_lines_per_sec = 10
mmap_disable = yes
dotlock_use_excl = yes
mail_nfs_storage = no
mail_nfs_index = no
lock_method = fcntl
verbose_proctitle = yes
first_valid_uid = 0
last_valid_uid = 0
first_valid_gid = 0
last_valid_gid = 0
max_mail_processes = 512
mail_process_size = 256
mail_cache_min_mail_count = 0
mailbox_idle_check_interval = 30
mail_save_crlf = no
maildir_stat_dirs = no
maildir_copy_with_hardlinks = yes
mbox_lock_timeout = 300
mbox_dotlock_change_timeout = 120
mbox_dirty_syncs = yes
mbox_very_dirty_syncs = yes

## IMAP specific settings
protocol imap {
login_executable = /usr/local/libexec/dovecot/imap-login
login_greeting_capability = yes
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep outlook-idle
}
## LDA specific settings

protocol lda {
  postmaster_address = postmaster@mail.....
  auth_socket_path = /var/run/dovecot/auth-master
}

## Authentication processes
auth_executable = /usr/local/libexec/dovecot/dovecot-auth
auth_process_size = 256
auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth_failure_delay = 5

auth default {
  mechanisms = plain login cram-md5
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
    userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  user = root
  socket listen {
    master {
path = /var/run/dovecot/auth-master
mode = 0600
user = mailnull
group = mail
mode = 0660
    }
    client {
path = /var/run/dovecot/auth-client
user = mailnull
group = mail
mode = 0660
    }
  }
}
Вот конфиг dovecot-sql.conf

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

driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5

user_query = SELECT username, 'home:/usr/spool/virtual/%Lu' FROM mailbox WHERE username = '%Lu' AND active = 1;
password_query = SELECT password, 'home:/usr/spool/virtual/%Lu' FROM mailbox WHERE username = '%Lu' AND active = 1;


promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 10:05:18

В конфиге прописано так же как и в рекомендации здесь http://wiki.dovecot.org/HowTo/EximAndDovecotSASL

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 10:26:13

CaBa писал(а):да и там в dovecot-sql.conf ошибочка:
вместо:

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

default_pass_scheme = MD5
нужно:

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

default_pass_scheme = MD5-CRYPT
поправь!

и тут второй mode лишний ;-)

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

master {
path = /var/run/dovecot/auth-master
mode = 0600
user = mailnull
group = mail
mode = 0660

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 10:33:41

Ну и ещё:

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

protocols = imap imaps
подкрути до нужного:
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 11:13:44

Поправил, но ошибка сохранилась =(

Вот что пишет Dovecot в лог при попытке отправить письмо:

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

dovecot: Aug 12 12:10:50 Info: auth(default): new auth connection: pid=3782
dovecot: Aug 12 12:10:50 Info: auth(default): client in: AUTH   20      PLAIN   service=smtp    rip=192.168.1.7  lip=192.168.1.120       resp=
dovecot: Aug 12 12:10:50 Info: auth(default): client out: CONT  20
dovecot: Aug 12 12:10:50 Info: auth(default): client in: CONT   20      AGlnb3JAbWFpbC5laXMucnUAQVJCbnJVM1g=
dovecot: Aug 12 12:10:50 Info: auth-worker(default): sql(igor@mail,192.168.1.7): query: SELECT password, 'home:/usr/spool/virtual/igor@mail' FROM mailbox WHERE username = 'igor@mail' AND active = 1;
dovecot: Aug 12 12:10:50 Info: auth(default): client out: OK    20      user=igor@mail   home:/usr/spool/virtual/igor@mail=home:/usr/spool/virtual/igor@mail
dovecot: Aug 12 12:10:50 Info: auth(default): new auth connection: pid=3782
dovecot: Aug 12 12:10:50 Info: auth(default): client in: AUTH   21      LOGIN   service=smtp    rip=192.168.1.7  lip=192.168.1.120       resp=
dovecot: Aug 12 12:10:50 Info: auth(default): client out: CONT  21      VXNlcm5hbWU6
dovecot: Aug 12 12:10:50 Info: auth(default): client in: CONT   21      aWdvckBtYWlsLmVpcy5ydQ==
dovecot: Aug 12 12:10:50 Info: auth(default): client out: CONT  21      UGFzc3dvcmQ6
dovecot: Aug 12 12:10:50 Info: auth(default): client in: CONT   21      QVJCbnJVM1g=
dovecot: Aug 12 12:10:50 Info: auth-worker(default): sql(igor@mail,192.168.1.7): query: SELECT password, 'home:/usr/spool/virtual/igor@mail' FROM mailbox WHERE username = 'igor@mail' AND active = 1;
dovecot: Aug 12 12:10:50 Info: auth(default): client out: OK    21      user=igor@mail  home:/usr/spool/virtual/igor@mail.eis.ru=home:/usr/spool/virtual/igor@mail
P.S. Доменную часть удалил в ручную.

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 13:02:33

Что-то я затупил и недосмотрел! :smile: А Dovecot-sql не из статьи вроде?

вот мой:

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

driver = mysql

connect = host=localhost dbname=exim user=***** password=*****

default_pass_scheme = MD5-CRYPT

password_query =  SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = '%n@%d' AND `active` = '1'

user_query = SELECT `maildir` AS `home`, 26 AS  `uid`, 26 AS  `gid` FROM `mailbox` WHERE `username` = '%n@%d' AND `active` = '1'

у тебя с запросом напартачено ;-)

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 13:07:17

Или у тебя гибрид ёжика с бегемотом? И ты пытаешься брать пользователей из файла, а пароли из базы? :cz2:
Что-то в общем какое отступление от статьи... И тогда не совсем понятно, что за схема у тебя. :smile:

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 13:31:50

Спасибо тебе огромное!!! Теперь вспоминаю, как сам составлял запросы к сиквелу а не из статьи брал 8)

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 14:12:23

Незачто :drinks:! Да и лучше всё-таки сделать SSL ;-)! Оно правильнее ИМХО. Да и сертификаты в общем то, можно нахаляву раздобыть. :smile:

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 14:26:12

SSL сделать в планах... А где можно на халяву раздобыть?

promSSe
ефрейтор
Сообщения: 55
Зарегистрирован: 2008-12-15 14:16:36

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение promSSe » 2009-08-12 14:30:30

А всё таки аунтификация cram-md5 при хранение паролей хешированых md5-crypt возможна через dovecot?

CaBa
мл. сержант
Сообщения: 72
Зарегистрирован: 2009-06-10 22:10:03

Re: smtp auth Exim, Dovecot, MySQL (пароли в md5crypt)

Непрочитанное сообщение CaBa » 2009-08-12 14:52:20

ХЗ где ещё, но я делал на StarSSL.com. Он правда на каждый хост отдельно, зато любимая халява :smile:
По поводу cram-md5 - ХЗ это летучий мышь так авторизуется, а у меня его нету :-).
Мож кто из обладателей подскажет.