Прошу помощи зала ...
Есть Exim 4.88 #2 (FreeBSD 11.0)
В конфиге подключен system filter:
system_filter = /usr/local/etc/exim/system.filter
system_filter_user = mailnull
system_filter_pipe_transport = filter_pipe
filter_pipe:
driver = pipe
disable_logging = true
ignore_status = true
/usr/local/etc/exim/system.filter:
if first_delivery and not error_message
then
unseen pipe "/usr/local/bin/perl /usr/local/etc/exim/filter.pl
$message_id $sender_address $recipients $h_subject:"
endif
Перловый скрипт по tcp подключается к другому хосту и передает туда
параметры.
ignore_status добавлял чтобы не зависимо от доступности удаленного
хоста, куда коннектится перловый скрипт, небыло сбоя.
Но вот сегодня с какого-то перепугу при отправке письма на большое
количество получателей сообщения начали замораживаться :(
адрес_получателя: failed to read pipe from transport process 60176 for
transport smtp: required size=2816 > remaining size=2636 and
unfinished=false
и т.д. порядка 50 получателей.
Подскажите, плиз, что еще добавить в "filter_pipe", чтобы сообщения
доставлялись по назначению в любом случае, игнорировались все ошибки.
P.S. Вчера обновил Exim до вчерашнего обновления из порта FreeBSD.
--
Mikhail Golub
_______________________________________________
Exim-users mailing list
Exim-...@mailground.net
http://mailground.net/mailman/listinfo/exim-users
Я не так давно отказался от обработки через acl (не роутера, правда) в
пользу системного фильтра. :)
Да, наверное переделаю, так как нельзя исключить из фильтра определенные
адреса, домены.
А причина такой ошибки в чем может быть?
Пару месяцев, наверное, system filter использовался и проблем не вызывал.
--
Mikhail Golub
Нашел в Инете только такое упоминание.
https://lists.exim.org/lurker/message/20140928.141710.fc9eacc5.el.html
Через минут 5 после заморозки сообщения форсирование отправки помогло -
сообщение ушло без проблем.
Предложение перейти на использование роутера не подходит по причине,
из-за которой я в свое время начал использовать system filter - при
использовании роутера в pipe запускается такое же количество сообщений,
как и получателей письма.
А надо один раз отправить в pipe - это как раз system filter.
16.02.2017 10:50, Mikhail Golub пишет:
> Но вот сегодня с какого-то перепугу при отправке письма на
> большое количество получателей сообщения начали
> замораживаться :(
> адрес_получателя: failed to read pipe from transport process
> 60176 for transport smtp: required size=2816 > remaining
> size=2636 and unfinished=false
> и т.д. порядка 50 получателей.
> Вчера обновил Exim до вчерашнего обновления из порта
> FreeBSD.
Попробуйте одно из трех:
1. Откатиться до 4.87.
2. В начале конфига
chunking_advertise_hosts =
и в каждом транспорте smtp
hosts_try_chunking =
3. Скомпилировать 4.89_RC*:
скачать .bz2 с https://ftp.exim.org/pub/exim/exim4/test/
cd /usr/ports/mail/exim; make clean extract && cd work
tar xof скачанный.bz2
переименовать директорию exim-4.89_RC5 в exim-4.89
cd ..
в Makefile исправить 4.88 на 4.89
в files заменить файл на http://lena.kiev.ua/patch-pass-fd-to-tcpwrappers
cd /usr/ports/mail/exim; make all deinstall reinstall clean
Поскольку я не знаю, как повторить сбой (который был только сегодня и
только два раза и практически подряд), то ограничусь вторым вариантом.
"chunking_advertise_hosts" - прописано (рассылку читаю, да и были
какие-то грабли, не помню).
А вот в транспортах небыло "hosts_try_chunking". Добавил.
Остановлюсь пока на этом варианте.
1 и 3 не буду применять, если ошибка повторяться не будет.
Спасибо за помощь.
--
Mikhail Golub
Накаркал :)
Ошибка повторилась.
Письмо с локального Exchange принимается Exim-ом и передается в облако
Office365.
2017-02-16 13:17:10 Received from *@* H=(*) [10.*.*.*] P=esmtps S=609616
id=4474e256703b40a5990ab1821e4847de@* T="тема"
2017-02-16 13:17:10 |/usr/local/bin/perl /usr/local/etc/exim/my_arc.pl
$message_id $sender_address $recipients $h_subject: <system-filter>:
filter_pipe transport succeeded
2017-02-16 13:17:10 system-filter: children all complete
2017-02-16 13:17:14 *@*.mail.onmicrosoft.com R=dnslookup T=remote_smtp
defer (0) H=*-mail-onmicrosoft-com.mail.protection.outlook.com
[213.199.154.106]: failed to read pipe from transport process 1669 for
transport smtp: required size=2816 > remaining size=2786 and
unfinished=false
Получается, что не в системном фильтре дело?
Пока перешел к третьему варианту - "Скомпилировать 4.89_RC*"
--
Mikhail Golub
Не помогло :(
Пол дня тишина - думал что решено. Нет ... :(
Исходящее письмо. 40 получателей на один домен в облаке Office 365
(*onmicrosoft-com.mail.protection.outlook.com).
30 сообщений "T=remote_smtp defer (0)" и остальные - "T=remote_smtp
defer (-1)".
"failed to read pipe from transport process 95416 for transport smtp:
required size=2816 > remaining size=2786 and unfinished=false"
Значит 4.89 не спасает.
Вернулся на 4.88 #2
Ошибки даже при доставке на локальный Exchange.
smtp transport process returned non-zero status 0x0100: exit code 1
failed to read pipe from transport process 9515 for transport smtp:
required size=2074 > remaining size=80 and unfinished=false
Системный фильтр отключал - не помогло. Не в нем дело.
Что еще не так в транспортах smtp? :(
exchange_transport:
driver = smtp
hosts = такой-то
port = такой-то
hosts_try_chunking =
tls_try_verify_hosts = :
tls_certificate = /usr/local/etc/exim/cert/host.cer
tls_privatekey = /usr/local/etc/exim/cert/host.key
tls_require_ciphers =
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
Сообщение замораживается.
Если "пнуть" (Exim -M id) - письмо размораживается и доставляется
(иногда снова замораживается, но с n-ой попытки все же доставляется).
TLS отключать не хочется.
P.S. Что изменилось? - в день, когда начались проблемы, обновлялся exim
до "4.88 #2" и начался довольно интенсивный почтовый обмен через Exim
между локальным и облачным Exchange.
Вы писали 20 февраля 2017 г., 22:32:40:
> Что еще не так в транспортах smtp? :(
> exchange_transport:
> driver = smtp
> hosts = такой-то
> port = такой-то
> hosts_try_chunking =
> tls_try_verify_hosts = :
> tls_certificate = /usr/local/etc/exim/cert/host.cer
> tls_privatekey = /usr/local/etc/exim/cert/host.key
> tls_require_ciphers =
> ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
упростить до предела - отломать tls
--
С уважением,
Alexander mailto:t...@irk.ru
Для начала tls_require_ciphers
Убрал вообще (и клиент и сервер).
Теперь класс упал с "А" на "В-" на https://www.htbridge.com/ssl/
Но если сбоить перестанет, то затем можно поднастроить этот параметр.
отломать tls - даже не рассматривается ... :)
На одном из сообщений, что было заморожено, запустил доставку с дебагом
(exim -d -M msg_id).
К SSL у Exim вопросов нет:
...
SMTP>> STARTTLS
cmd buf flush 10 bytes
read response data: size=29
SMTP<< 220 2.0.0 SMTP server ready
openssl option, adding from 1100000: 800 (dont_insert_empty_fragments
+no_sslv2 +no_sslv3)
openssl option, adding from 1100800: 1000000 (no_sslv2 +no_sslv3)
openssl option, adding from 1100800: 2000000 (no_sslv3)
setting SSL CTX options: 0x3100800
Diffie-Hellman initialized from default with 2048-bit prime
tls_certificate file /usr/local/etc/exim/cert/host.cer
tls_privatekey file /usr/local/etc/exim/cert/host.key
Initialized TLS
required ciphers:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
10.0.1.1 in tls_verify_hosts? no (option unset)
10.0.1.1 in tls_try_verify_hosts? no (end of list)
Calling SSL_connect
SSL info: before/connect initialization
SSL info: before/connect initialization
SSL info: SSLv2/v3 write client hello A
SSL info: SSLv3 read server hello A
SSL info: SSLv3 read server certificate A
SSL info: SSLv3 read server key exchange A
SSL info: SSLv3 read server certificate request A
SSL info: SSLv3 read server done A
SSL info: SSLv3 write client certificate A
SSL info: SSLv3 write client key exchange A
SSL info: SSLv3 write certificate verify A
SSL info: SSLv3 write change cipher spec A
SSL info: SSLv3 write finished A
SSL info: SSLv3 flush data
SSL info: SSLv3 read finished A
SSL info: SSL negotiation finished successfully
SSL info: SSL negotiation finished successfully
SSL_connect succeeded
Cipher: TLSv1.2:ECDHE-RSA-AES256-SHA384:256
...
Дальше приветствие, mail from, rcpt to, data ... - все ок.
...
SMTP>> QUIT
cmd buf flush 6 bytes
tls_do_write(0x7fffffffa270, 6)
SSL_write(SSL, 0x7fffffffa270, 6)
outbytes=6 error=0
tls_close(): shutting down SSL
SSL info: SSL negotiation finished successfully
SMTP(close)>>
...
Вот здесь не понятно, почему он вернулся к обработке сообщения?
...
Leaving exchange_transport transport
set_process_info: 15161 delivering 1cfpCE-0003uE-Qp (just run
exchange_transport for user@domain, ... in subprocess)
search_tidyup called
header write id:S,subid:0,size:4,final:S000004
header write id:X,subid:1,size:105,final:X100105
reading pipe for subprocess 15161 (not ended)
... куча ругани типа:
DSN read: addr->dsn_aware = 1
header read
id:A,subid:0,size:00214,required:221,remaining:4881,unfinished:0
header read
id:X,subid:1,size:00105,required:112,remaining:4660,unfinished:0
header read
id:X,subid:2,size:04389,required:4396,remaining:4548,unfinished:0
header read
id:X,subid:3,size:02067,required:2074,remaining:152,unfinished:0
remote delivery process 15161 ended
set_process_info: 15154 delivering 1cfpCE-0003uE-Qp
post-process user@domain (1)
LOG: MAIN
== user@domain <user@domain> R=exchange_router_user
T=exchange_transport defer (0) H=10.0.1.1 [10.0.1.1]: failed to read
pipe from transport process 15161 for transport smtp: required size=2074
> remaining size=152 and unfinished=false
...
Вижу, что никто с таким не сталкивался.
Но если найдется решение - может потом будет полезно кому-то.
--
Mikhail Golub
> ... куча ругани типа:
> DSN read: addr->dsn_aware = 1
DSN - отдельное новое письмо-уведомление, что письмо отправлено?
Типа уведомления о доставке?
Google первую же ссылку выдает на
https://lists.exim.org/lurker/message/20140928.141710.fc9eacc5.el.html
Тема "Fix transport-results pipe for multiple recipients combined with
certs".
Как раз похоже на существующую проблему - доставка на несколько
получателей в сочетании с сертификатами.
Видел, что код deliver.c меняли. Может с чем-то перестарались?
P.S. Отключил поддержку DSN в Exim, хотя и не использовал ее.
И всеравно ошибка :(
mail_exim_SET_FORCE=DAEMON EMBEDDED_PERL CONTENT_SCAN LSEARCH SUID SPF
SRS MYSQL OPENLDAP TLS
mail_exim_UNSET_FORCE=IPV6 MAILDIR MAILSTORE NIS PAM SASLAUTHD AUTH_SASL
AUTH_CRAM_MD5 AUTH_RADIUS AUTH_PLAINTEXT INTERNATIONAL DSN
--
Mikhail Golub
вы не одиноки с данной проблемой.
кто-то в буржуйской рассылке уже поднимал шум?
mbr,
--
Igor "CacoDem0n" Grabin
>>> упростить до предела - отломать tls
>>
>> Для начала tls_require_ciphers
>
> Убрал вообще (и клиент и сервер).
> Теперь класс упал с "А" на "В-" на https://www.htbridge.com/ssl/
а у кого-то получилось для exim получить на этом
https://www.htbridge.com/ssl/ оценку A+?
--
Best wishes Victor Ustugov mailto:vic...@corvax.kiev.ua
public GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc
Skype ID: corvax_nb JID: corvax...@jabber.corvax.kiev.ua
Специально подписался, написал. Потом читаю свое сообщение и вижу, что
мало информации для анализа.
Больше не добавлял, так как никто ответить не пытался :(
Пока пофиксил проблему с такими параметрами (добавлением двух последних
опций).
Секция main:
tls_certificate = host.cer
tls_privatekey = host.key
tls_advertise_hosts = *
tls_dhparam = /usr/local/etc/exim/cert/eximdh.key
tls_require_ciphers = TLS_CIPHERS
openssl_options = +dont_insert_empty_fragments +no_sslv2 +no_sslv3
tls_verify_hosts = :
tls_try_verify_hosts = :
И в smtp-транспортах.
tls_try_verify_hosts = :
tls_certificate = host.cer
tls_privatekey = host.key
tls_require_ciphers = TLS_CIPHERS
tls_verify_hosts = :
Согласно документации tls_certificate и tls_privatekey надо указывать
как в main (exim как сервер) так и в транспорте (exim как клиент).
Но опытным путем проверил, что если НЕ указывать эти опции в транспорте,
то используются опции из main и письмо уходит используя esmtps (судя по
логу на получателе).
--
Mikhail Golub
"А" достаточно ...
https://community.centminmod.com/threads/getting-a-on-ssllabs-and-htbridge-ssl-test.8805/
https://community.letsencrypt.org/t/challenge-for-the-a-100-junkies/8648/18
"diff between A and A+ on ssllabs is enabling HSTS in centmin mod lemp
stack's nginx HTTP/2 setup configs
#HSTS long duration
add_header Strict-Transport-Security "max-age=31536000; preload;";"
--
Mikhail Golub
Не помогло :(
"Message frozen" снова пошли.
Одно сообщение размером 95K от <> на 38 получателей.
Второе от реального отправителя размером 1.9M на 22 получателя.
И как-то странно.
Этого глюка небыло, пока Exim не начал использоваться для пересылки
почты между on premises exchange и office365.
Были через него рассылки на сотни адресов получателей и с использованием
шифрованных соединений.
Эти опции в транспорте указывают клиентский сертификат,
который необязателен. Без клиентского сертификата письмо
тоже уходит зашифрованным (STARTTLS).
Эти опции и так по умолчанию пустые.
> "Message frozen" снова пошли.
Попробуйте всё же опять убрать tls_require_ciphers
Причем уже замороженные письма не считаются, в них запомнено
значение этого параметра, которое было при их первоначальной
попытке отправки.
Если не поможет, то в транспорте smtp
connection_max_messages = 5
и в начале конфига
recipients_max = 20
Это нехорошо, обход бага, нарушение RFC,
но хоть как-то работать надеюсь будет.
"hosts_nopass_tls = *" в транспорте не поможет в данном случае?
Если после внесенных мною уже изменений ошибки будут - попробую эту опцию.
--
Mikhail Golub
получить A+ для https не проблема.
я имел ввиду получение A+ на https://www.htbridge.com/ssl/ для
SMTP+STARTTLS/SMTPS в случае использования exim.
--
Best wishes Victor Ustugov mailto:vic...@corvax.kiev.ua
public GnuPG/PGP key: https://victor.corvax.kiev.ua/corvax.asc
Skype ID: corvax_nb JID: corvax...@jabber.corvax.kiev.ua
_______________________________________________
Т.е. во второй строке пустой аргумент.
--
Mikhail Golub
Сомневаюсь.
> подскажите разницу в обработке
> этих двух строк?
> tls_try_verify_hosts = :
> tls_try_verify_hosts =
>
> Т.е. во второй строке пустой аргумент.
Первая строка - один пустой элемент в списке хостов.
Вторая строка - ни одного элемента в списке хостов.
В данном случае немножко (несущественно) правильнее вторая строка.
Пустой элемент в списке хостов использовался бы только в ACL
(обычно rcpt) и только в случае отправки писем с локального хоста
не пайпом на sendmail и не через SMTP на localhost,
а командой `sendmail -bs`, чего, насколько я понимаю,
в реальной жизни в наше время уже не случается.
Верно сомневаетесь.
Не помогло.
>> подскажите разницу в обработке
>> этих двух строк?
>> tls_try_verify_hosts = :
>> tls_try_verify_hosts =
>>
>> Т.е. во второй строке пустой аргумент.
>
> Первая строка - один пустой элемент в списке хостов.
> Вторая строка - ни одного элемента в списке хостов.
> В данном случае немножко (несущественно) правильнее вторая строка.
Спасибо.
В чем проявляется на практике. При указании в транспорте на локальный
Exchange как в первом варианте - в логе нет ругани.
А при втором варианте записи типа:
2017-02-21 15:16:12 [78115] 1cgAId-000KJo-Py [10.0.1.1] SSL verify
error: depth=1 error=unable to get local issuer certificate cert=/DC=UA/****
P.S. Уморила меня эта проблема :(
Отключил TLS при доставке на локальный Exchange.
hosts_avoid_tls = *
--
Mikhail Golub
Heiko Schlittermann ответил:
"The issue is known and being worked on."
--
Mikhail Golub
Это баг Exim.
Уже писал в англоязычную рассылку.