Страница 1 из 1
Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-08 16:22:48
PostFx
Здравствуйте.
Досконально читал статьи с сайта на эту тему, но на практике не получается добиться работоспособности связки.
Dovecot + mysql - аутентификация заработала, ок.
Проблема теперь в exim.
На самом деле я не очень понимаю вообще алгоритм задания типа аутентификации.
В exim.conf есть такое:
begin authenticators
Код: Выделить всё
PLAIN:
driver = plaintext
server_set_id = $auth2
server_prompts = :
server_condition = ${lookup mysql{SELECT username FROM mailbox WHERE username = '${quote_mysql:$auth2}' AND password = '${quote_mysql:$auth3}'}{yes}{no}}
server_advertise_condition = ${if def:tls_cipher }
LOGIN:
driver = plaintext
server_set_id = $auth1
server_prompts = <| Username: | Password:
server_condition = ${lookup mysql{SELECT username FROM mailbox WHERE username = '${quote_mysql:$auth1}' AND password = '${quote_mysql:$auth2}'}{yes}{no}}
server_advertise_condition = ${if def:tls_cipher }
Но на mysql-сервере не вижу никаких запросов. Если намеренно "испортить" запрос, ситуация тоже не меняется. Как проверить, есть ли вообще попытки использования этого mysql-запроса?
На данный момент в логи сыпется вот что:
Код: Выделить всё
2012-02-08 17:17:37 [24089] H=([10.249.0.21]) [10.249.0.21]:54301 I=[77.232.152.12]:25 incomplete transaction (RSET) from <test@mydomain.com> for test_mail@yandex.ru
2012-02-08 17:17:37 [24089] SMTP connection from ([10.249.0.21]) [10.249.0.21]:54301 I=[77.232.152.12]:25 lost
TheBat на клиентской машине выдаёт что-то вроде "Не удалось обнаружить на сервере подходящих алгоритмов аутентификации", в логах ничего такого подробного нет.
При этом:
log_selector = +all
И доступ к mysql настроен:
hide mysql_servers = localhost/mymail/mymail/<pass>
Если отправлять письмо самому себе, то:
Код: Выделить всё
2012-02-08 17:23:51 [24192] H=([10.249.0.21]) [10.249.0.21]:54319 I=[77.232.152.12]:25 F=<test@mydomain.com> rejected RCPT <test@mydomain.com>: Unknown user
2012-02-08 17:23:51 [24192] H=([10.249.0.21]) [10.249.0.21]:54319 I=[77.232.152.12]:25 incomplete transaction (RSET) from <test@mydomain.com>
Буду рад любой помощи.
Спасибо.
С уважением, Дмитрий.
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-09 1:12:16
dikens3
http://wiki.lissyara.su/wiki/%D0%90%D1% ... B8_dovecot
А так, последняя строка в секциях говорит что аутентифицироваться можно только по защищённому каналу, т.е. TLS.
Код: Выделить всё
server_advertise_condition = ${if def:tls_cipher }
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-10 16:34:54
PostFx
спасибо за совет. исходящая почта с аутентификацией заработала, но дальше существует проблема с приемом почты
в логах экзима пишет следующее:
Код: Выделить всё
2012-02-10 16:47:25 [16471] SMTP connection from [209.85.160.175]:43173 I=[77.232.152.12]:25 (TCP/IP connection count = 2)
2012-02-10 16:47:26 [16556] 1Rvpsr-0004J2-Sv DKIM: d=gmail.com s=gamma c=relaxed/relaxed a=rsa-sha256 [verification succeeded]
2012-02-10 16:47:26 [16556] 1Rvpsr-0004J2-Sv <= test@gmail.com H=mail-gy0-f175.google.com [209.85.160.175]:43173 I=[77.232.152.12]:25 P=esmtp S=1473 id=CALe_hoVF+cLMbm7OVRm_8=OXt3539LtWnf6nEeK6C3LbXF9Ugg@mail.gmail.com T="test" from <test@gmail.com> for test@mydomain.com
2012-02-10 16:47:26 [16557] cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1Rvpsr-0004J2-Sv
2012-02-10 16:47:26 [16557] 1Rvpsr-0004J2-Sv ** test@mydomain.com F=<test@gmail.com> P=<test@gmail.com> R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 127 (could mean unable to exec or command does not exist) from command: /usr/libexec/dovecot/dovecot-lda
2012-02-10 16:47:26 [16562] cwd=/var/spool/exim 7 args: /usr/sbin/exim -t -oem -oi -f <> -E1Rvpsr-0004J2-Sv
2012-02-10 16:47:26 [16562] 1Rvpss-0004J8-AU <= <> R=1Rvpsr-0004J2-Sv U=znmail P=local S=2293 T="Mail delivery failed: returning message to sender" from <> for test@gmail.com
2012-02-10 16:47:26 [16563] cwd=/var/spool/exim 3 args: /usr/sbin/exim -Mc 1Rvpss-0004J8-AU
2012-02-10 16:47:26 [16557] 1Rvpsr-0004J2-Sv Completed QT=1s
2012-02-10 16:47:27 [16563] 1Rvpss-0004J8-AU => test@gmail.com F=<> P=<> R=dnslookup T=remote_smtp S=2354 H=gmail-smtp-in.l.google.com [173.194.69.27]:25 X=TLSv1:ECDHE-RSA-RC4-SHA:128 CV=no DN="/C=US/ST=California/L=Mountain View/O=Google Inc/CN=mx.google.com" C="250 2.0.0 OK 1328878061 um8si2931916bkb.75" QT=1s DT=1s
2012-02-10 16:47:27 [16563] 1Rvpss-0004J8-AU Completed QT=1s
2012-02-10 16:47:32 [16547] SMTP connection from mail-gx0-f175.google.com [209.85.161.175]:37145 I=[77.232.152.12]:25 closed by QUIT
2012-02-10 16:47:56 [16556] SMTP connection from mail-gy0-f175.google.com [209.85.160.175]:43173 I=[77.232.152.12]:25 closed by QUIT
конфиг экзима:
Код: Выделить всё
hide mysql_servers = localhost/znmail/znmail/pass
log_selector = +all
primary_hostname = mail.mydomain.com
domainlist local_domains = mydomain.com
domainlist relay_to_domains = mydomain.com
hostlist relay_from_hosts = localhost : 127.0.0.1/8
#hostlist relay_from_hosts = *
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
#av_scaner = clamd:/var/run/clamav/clamd
qualify_domain = mydomain.com
qualify_recipient = mydomain.com
exim_user = znmail
exim_group = znmail
never_users = root
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
#helo_accept_junk_hosts = 192.168.0.0/16
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP"
smtp_accept_max = 500
smtp_accept_max_per_connection = 70
smtp_connect_backlog = 50
smtp_accept_max_per_host = 30
split_spool_directory = true
remote_max_parallel = 15
#return_size_limit = 70k
message_size_limit = 64M
#hello_allow_chars = _
smtp_enforce_sync = true
begin acl
acl_check_rcpt:
accept
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
domains = +local_domains
require verify = sender
deny message = "HELO/EHLO require by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
accept authenticated = *
deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts :
condition = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}
deny condition = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "main IP in your HELO! Access denied!"
deny condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "can not be only number in HELO!"
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}
warn
set acl_m0 = 30s
warn
logwrite = Delay $acl_m0 for $sender_host_name [$sender_host_address] with HELO=$sender_helo_name. Mail from $sender_address to $local_part@$domain.
delay = $acl_m0
accept domains = +local_domains
endpass
message = "In my mailserver not stored this user"
verify = recipient
accept domains = +relay_to_domains
endpass
message = "main server not know how relay to this address"
verify = recipient
deny message = you in blacklist: $dnslist_domain \n $dnslist_text
dnslists = opm.blitzed.org : \
cbl.abuseat.org : \
bl.csma.biz : \
dynablock.njabl.org
accept hosts = +relay_from_hosts
deny message = "Homo hominus lupus est"
########### =========================================================================================
acl_check_data:
# deny malware = *
# message = "In e-mail found virus - $malware_name"
accept
##############################################################################################################
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/mail/aliases}}
user = znmail
file_transport = address_file
pipe_transport = address_pipe
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM \
`alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
# allow_filter
no_verify
no_expn
check_ancestor
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
procmail:
check_local_user
driver = accept
transport = procmail_pipe
require_files = ${local_part}:+${home}:+${home}/.procmailrc:+/usr/bin/procmail
no_verify
#maildrop:
# check_local_user
# driver = accept
# transport = maildrop_pipe
# require_files = ${local_part}:+${home}:+${home}/.mailfilter:+/usr/bin/maildrop
# no_verify
localuser:
driver = accept
check_local_user
local_part_suffix = +* : -*
local_part_suffix_optional
# transport = local_delivery
transport = dovecot_delivery
cannot_route_message = Unknown user
###########################################################################################################
begin transports
remote_smtp:
driver = smtp
dovecot_delivery:
driver = pipe
command = /usr/libexec/dovecot/dovecot-lda -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = znmail
#local_delivery:
# driver = appendfile
# file = /znmail/$local_part@$domain
# delivery_date_add
# envelope_to_add
# return_path_add
# group = znmail
# mode = 0660
address_pipe:
driver = pipe
return_output
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
address_reply:
driver = autoreply
#procmail_pipe:
# driver = pipe
# command = "/usr/bin/procmail -d ${local_part}"
# return_path_add
# delivery_date_add
# envelope_to_add
#maildrop_pipe:
# driver = pipe
# command = "/usr/bin/maildrop -d ${local_part}"
# return_path_add
# delivery_date_add
# envelope_to_add
######################################################################
# RETRY CONFIGURATION #
######################################################################
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
######################################################################
# REWRITE CONFIGURATION #
######################################################################
begin rewrite
######################################################################
# AUTHENTICATION CONFIGURATION #
######################################################################
begin authenticators
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
auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth1
в чем может быть проблема? Спасибо
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-10 16:42:36
PostFx
Если пробовать отправлять письмо самому себе через консоль:
Код: Выделить всё
mail exim # telnet mail.mydomain.com 25
Trying 77.232.152.12...
Connected to mail.mydomain.com.
Escape character is '^]'.
220 mail.mydomain.com, ESMTP
EHLO test.com
250-mail.mydomain.com Hello mail.mydomain.com [77.232.152.12]
250-SIZE 67108864
250-PIPELINING
250-AUTH PLAIN LOGIN CRAM-MD5
250 HELP
MAIL FROM:test@mydomain.com
250 OK
RCPT TO: test@mydomain.com
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
test test hello hello.
.
250 OK id=1RvqTr-0004Pd-Mx
QUIT
221 mail.zhuknet.ru closing connection
Connection closed by foreign host.
То есть как видно, письмо вроде как отправлено, ему присвоен id: "1RvqTr-0004Pd-Mx", но в директориях и поддиректориях /var/spool/exim/input и /var/spool/exim/msglog файл не присутствует.
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-11 17:40:15
dikens3
Вот твоя проблема:
2012-02-10 16:47:26 [16557] 1Rvpsr-0004J2-Sv **
test@mydomain.com F=<
test@gmail.com> P=<
test@gmail.com> R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 127 (could mean unable to exec or command does not exist) from command: /usr/libexec/dovecot/dovecot-lda
Что-то неверно при доставке через dovecot-lda. Перевод такой - не могу запустить команду /usr/libexec/dovecot/dovecot-lda, возможно файла не существует.
Возможно права не те на директории или их вовсе нет, возможно в конфиг Exim надо что-то добавить. Я плохо dovecot знаю.
А так у тебя сейчас дело происходит так:
1. Получение письма
2. Попытка положить в папку пользователю (неудачная)
3. Отправка отправителю ответа об ошибке.
Выложи конфиг dovecot. Структуру папок с правами (ls -l) Скорее там проблема.
То есть как видно, письмо вроде как отправлено, ему присвоен id: "1RvqTr-0004Pd-Mx", но в директориях и поддиректориях /var/spool/exim/input и /var/spool/exim/msglog файл не присутствует.
Смотри логи exim.
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-12 19:38:36
PandoraBox2007
я вот давно ищю логичиский скрипт для автоматической настройки exim+dovecot+sqlite
Re: Проблемы с настройкой связки exim+dovecot+mysql
Добавлено: 2012-02-13 10:31:46
PostFx
Спасибо всем за советы, все дело было в правах. Сейчас всё работает, всё уходит и приходит.
Теперь начинаю ковырять clamav + spamassasin, так что, думаю, еще вопросы возникнут.