Ставил только системные секьюрити патчи. Но тут выпало время на праздники 12го июня и решил сразу и систему поднять до 11.1 и обновить все порты, заодно завершив жизнь dovecot-antispam и перейти на использование, как это рекомендуется, sieve для целей обучения spam.
Все операции прошли в принципе без сучка и задоринки, но по факту на следующий день всплыла одна проблема: перестал работать автоответчик по отпускам, а после, как выяснилось, и пересылка писем по правилам sieve, если таковые устанавливал пользователь в roundcube или thundebird через managesieve.
Смешнее всего, что конфигурация по сути не правилась, все разрешения и права остались как были ранее, но почему-то изменилась логика обработки команды send в sieve.
Ниже я приведу те ошибки что сейчас получаются при использовании. Я уже всю голову поломал, пытаясь найти корень проблемы. А лежит она скорее всего на поверхности, но я ее не могу отловить.
И так.
Код: Выделить всё
root@mail:~ # dovecot --version
2.3.1 (8e2f634)
maillog.log
Код: Выделить всё
Jun 23 11:16:24 mail dovecot: lda(tester@***.ru)<61293><pHlZKdgBLltt7wAA0J78UA>: Error: smtp-client: conn localhost:25 [0]: connect(::1:25) failed: Connection refused
Jun 23 11:16:24 mail dovecot: lda(tester@***.ru)<61293><pHlZKdgBLltt7wAA0J78UA>: Error: sieve: msgid=<585494030.20180623111622@***.ru>: failed to send vacation response to dserga@***.org: <smtp(localhost:25): RCPT TO failed: Failed to connect to remote server> (temporary error)
Jun 23 11:16:24 mail dovecot: lda(tester@***.ru)<61293><pHlZKdgBLltt7wAA0J78UA>: sieve: msgid=<585494030.20180623111622@***.ru>: stored mail into mailbox 'INBOX'
Код: Выделить всё
error: msgid=<585494030.20180623111622@***.ru>: failed to send vacation response to dserga@****.org: <smtp(localhost:25): RCPT TO failed: Failed to connect to remote server> (temporary error).
Читать логи я умею и меня сильно смутил вот такой факт: Error: smtp-client: conn localhost:25 [0]: connect(::1:25) failed: Connection refused
Т.е. по сути это выглядит так, что dovecot lda не может достучаться до exim, который его шлет, но тогда это еще страннее, тем более, что авторизация пользователей для отправки почты в exim у меня реализована через dovecot.
Команда mail в консоли от имени root-а отрабатывается нормально. Также без проблем этот самый автоответ уходит, если ручками его запулить через dovecot-lda с кочами -f -d в локальный ящик.
Но (!) какого фига lda пытается доставить это письмо внешнему получателю, а не передает его exim для обработки?
Могу привести последовательность роутеров и транспортов в exim, но по факту, до обновления системы все работало, поэтому сомневаться в их работоспособности я не вижу резона. Но привести их приведу. Могу также добавить конфигурацию dovecot.
Последовательность роутеров exim без обработчиков спама, ибо выполняются они нормально:
Код: Выделить всё
#Finding path through DNS.
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = \
0.0.0.0/8 : \
10.0.0.0/8 : 172.16.0.0/12 : 192.168.0.0/16 : \
127.0.0.0/8 : \
169.254.0.0/16 : \
192.0.2.0/24 : \
192.88.99.0/24 : \
198.18.0.0/15 : \
224.0.0.0/4 : \
240.0.0.0/4
no_more
#SYSTEM/VIRTUAL_ALIASES_ROUTERS
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE \
`address`='${quote_mysql:$local_part@$domain}' OR \
`address`='${quote_mysql:@$domain}'}}
virtual_alias:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}dbm{/etc/mail/aliases.db}}
user = mailnull
group = mail
pipe_transport = address_pipe
# Deliver to dovecot
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_virtual_delivery
Код: Выделить всё
remote_smtp:
driver = smtp
dkim_domain = DKIM_DOMAIN
dkim_selector = mail1
dkim_private_key = DKIM_PRIVATE_KEY
headers_add = "X-Bounce-ID: $primary_hostname"
dovecot_virtual_delivery:
driver = pipe
command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = mailnull
group = mail
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78