Courier Mail Server Forum Index Courier Mail Server
www.courierms.ru
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Как работает тайм-аут в POP3-клиенте CMS?

 
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx
View previous topic :: View next topic  
Author Message
Vf-y6d
Messenger
Messenger


Joined: 23 Nov 2008
Posts: 40

PostPosted: 01 Apr 2011 15:25 (Fri)    Post subject: Как работает тайм-аут в POP3-клиенте CMS? Reply with quote

Вот такая ситуация, как в анекдоте.
Короче - ЦМС устанавливает соединение с POP3-сервером, запрашивает передачу письма. POP3-сервер начинает передачу, а через несколько секунд замолкает без предупреждения. Через некоторое время он уже доступен для подключения другого клиента, то есть, про ЦМС просто забыл. А тот упорно продолжает ждать окончания передачи - пока его не перезапустишь. Даже если нажать кнопку "Разорвать соединение" - кнопка "обесцвечивается", но соединение из списка не пропадает.
Нельзя ли как-то контролировать такую ситуацию - типо за 10 минут не поступило ни одного пакета - отсоединяться нафег?
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 01 Apr 2011 16:01 (Fri)    Post subject: Reply with quote

Для этого имеется настройка "Тайм-аут" в свойствах внешнего POP3-сервера.

Проблема может быть не только во внешнем сервере, но и в нестабильном интернет-канале, и в антивирусе, медленно проверяющем письмо (или вообще зависшем из-за нарушенной структуры письма).
Если установленный тайм-аут не срабатывает, значит, информация на CMS поступает, только очень медленно.

Чтобы можно было разорвать соединение, внешний сервер должен быть доступен (даже разрыв соединения сопровождается обменом информацией). Иначе остаётся только ждать истечения тайм-аута или завершения проверки письма антивирусом.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Vf-y6d
Messenger
Messenger


Joined: 23 Nov 2008
Posts: 40

PostPosted: 02 Apr 2011 3:04 (Sat)    Post subject: Reply with quote

...а я так понимал, что тайм-аут - это действует только в процессе установления соединения, типо послали запрос - не получили ответ через заданное время. А тут-то - соединение уже установлено и идет прием. То есть, запросы уже не посылаются до окончания приема. Установка таймаута и тут должна продолжать работать?
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 02 Apr 2011 13:54 (Sat)    Post subject: Reply with quote

Да. Этот тайм-аут действует как раз с момента подключения к внешнему серверу и до момента отключения от него.
Соединение установлено и идёт приём, т.е. POP3-сервер передаёт на CMS данные. Если он перестал их передавать, то CMS ждёт указанное время (тайм-аут), по его истечении он считает соединение "зависшим" и принудительно его закрывает.

А величина тайм-аута при установке соединения определяется Windows и зависит от типа подключения к интернету. В CMS этот тайм-аут не настраивается.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Vf-y6d
Messenger
Messenger


Joined: 23 Nov 2008
Posts: 40

PostPosted: 16 Apr 2011 19:19 (Sat)    Post subject: Reply with quote

NAMOR wrote:
...А величина тайм-аута при установке соединения определяется Windows и зависит от типа подключения к интернету. В CMS этот тайм-аут не настраивается.

- а вот тут что-то не то... В Виндусе есть "время простоя до разрыва соединения", но оно как я понимаю, касается самого канала связи с интернетом. И при постоянном подключении обычно выставлено в "никогда".
А вот "отпад" CMS от зависшего соединения с почтовым сервером происходит когда через 5 минут, когда через 45, а когда и вообще перезапускать приходится. Может в ём самом чего предусмотреть надо?
В свойствах внешнего POP3 сервера таймаут выставляется, но, как я понял, этот таймаут действует только в процессе установки соединения, от запроса до ответа сервера. И он срабатывает точно, на сколько задано - если сервер воще не отвечает.
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 16 Apr 2011 23:58 (Sat)    Post subject: Reply with quote

Vf-y6d wrote:
А вот "отпад" CMS от зависшего соединения с почтовым сервером происходит когда через 5 минут, когда через 45, а когда и вообще перезапускать приходится. Может в ём самом чего предусмотреть надо?

Если в течение установленного в CMS тайм-аута внешний сервер не пришлёт ни одного байта, то CMS разорвёт соединение. Если до истечения тайм-аута внешний сервер пришлёт хотя бы один байт, то CMS не разорвёт соединение (и начнёт отсчёт тайм-аута сначала).
Можно, конечно, замерять скорость соединения и, если она меньше заданного значения, разрывать соединение. Подумаем, может, в будущем так и сделаем.

Vf-y6d wrote:
В свойствах внешнего POP3 сервера таймаут выставляется, но, как я понял, этот таймаут действует только в процессе установки соединения, от запроса до ответа сервера. И он срабатывает точно, на сколько задано - если сервер воще не отвечает.

Повторюсь: тайм-аут процесса установки соединения в CMS не настраивается.
Привожу пример, из которого видно, что процесс подключения к внешнему серверу прервался ровно через 1 секунду после его начала, несмотря на то, что тайм-аут для этого сервера был установлен в 300 секунд.
Code:
~16.04.2011 23:38:56 000Q Thread started (TCsReceiveThread)
~16.04.2011 23:38:56 000Q Начали приём почты из группы внешних п/я "Test"...
 16.04.2011 23:38:56 000Q Подключаемся к серверу mail.ru:110...
 16.04.2011 23:38:56 000Q Начали приём почты из внешнего п/я <test@mail.ru>...
~16.04.2011 23:38:56 000Q iphlpapi.dll loaded
~16.04.2011 23:38:56 000Q Windows DNS servers: 213.132.77.124;213.132.64.251;213.132.67.110;
~16.04.2011 23:38:56 000Q iphlpapi.dll unloaded
 16.04.2011 23:38:56 000Q Получаем IP-адреса для mail.ru...
~16.04.2011 23:38:56 000Q DNS query [213.132.77.124]: mail.ru 1
~16.04.2011 23:38:56 000Q mail.ru A 94.100.191.204
~16.04.2011 23:38:56 000Q mail.ru A 94.100.191.201
~16.04.2011 23:38:56 000Q mail.ru A 94.100.191.202
~16.04.2011 23:38:56 000Q mail.ru A 94.100.191.203
 16.04.2011 23:38:56 000Q IP-адреса: 94.100.191.204;94.100.191.201;94.100.191.202;94.100.191.203;
!16.04.2011 23:38:57 000Q Не удалось подключиться к серверу mail.ru:110: Подключение отклонено удалённым хостом (10061)
 16.04.2011 23:38:57 000Q Закончили приём почты из внешнего п/я <test@mail.ru>
~16.04.2011 23:38:57 000Q Закончили приём почты из группы внешних п/я "Test"
~16.04.2011 23:38:57 000Q Thread stopped (TCsReceiveThread)
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Vf-y6d
Messenger
Messenger


Joined: 23 Nov 2008
Posts: 40

PostPosted: 17 Apr 2011 16:53 (Sun)    Post subject: Reply with quote

Не, ну тут-то - "Отклонено удаленным хостом"...
Это же уже не таймаут получился, а послали конкретно...
==================
Авот тут например 2 сеанса: в обоих случаях (по всей видимости?- лог не подробный) первый из серверов воще не отвечает, и от него отваливается через 30 секунд - прям так и пишет - "Тайм-аут":

31.03.2011 14:15:00 00B3 Начали приём почты из группы внешних п/я "bolon"...
31.03.2011 14:15:00 00B4 Начали приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>...
!31.03.2011 14:15:30 00B4 Тайм-аут соединения
31.03.2011 14:15:30 00B4 Закончили приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>
31.03.2011 14:15:30 00B4 Начали приём почты из внешнего п/я <хххххххх@mail.ru>...
31.03.2011 14:15:31 00B4 Писем во внешнем п/я: 37 (новых 0)
31.03.2011 14:15:31 00B4 Закончили приём почты из внешнего п/я <хххххххх@mail.ru>
31.03.2011 14:15:31 00B3 Закончили приём почты из группы внешних п/я "bolon"
========================
+05.04.2011 12:01:33 00IG Подключились к "Диал-Ап", скорость (bps): 28800
05.04.2011 12:01:33 00IG Начали приём почты из группы внешних п/я "bolon"...
05.04.2011 12:01:33 00IH Начали приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>...
!05.04.2011 12:02:03 00IH Тайм-аут соединения
05.04.2011 12:02:03 00IH Закончили приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>
05.04.2011 12:02:03 00IH Начали приём почты из внешнего п/я <хххххххх@mail.ru>...
05.04.2011 12:02:05 00IH Писем во внешнем п/я: 57 (новых 0)
05.04.2011 12:02:06 00IH Закончили приём почты из внешнего п/я <хххххххх@mail.ru>
05.04.2011 12:02:06 00IG Закончили приём почты из группы внешних п/я "bolon"
-05.04.2011 12:02:08 00IG Отключились от "Диал-Ап"
==========================

А тут вот вообще вот - единственное письмо из ящщика принято нормально, а окончание сеанса - через 30 секунд по тайм-ауту:
=======================
05.04.2011 14:00:00 00JN Начали приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>...
05.04.2011 14:00:19 00JN Писем во внешнем п/я: 22 (новых 1)
@05.04.2011 14:00:22 00JN Принято письмо N22 0MP0002B (7383 байт) от <calldet@office.beeline.ru> из п/я <хххххххххх@[194.85.113.246]> (Тема: "BEELINE Call Detail Record(s)"; UID: "3N3"!G-`!!L~\"!RH("!")
@05.04.2011 14:00:22 00JP Обрабатываем письмо 0MP0002B (7383 байт) от <calldet@office.beeline.ru> для <> (Тема: "BEELINE Call Detail Record(s)")
05.04.2011 14:00:22 00JP Начали сортировку "Dalsvyaz sorter"... Получатели: <>
05.04.2011 14:00:22 00JP Добавили получателя <dalsvyaz@bolon.local> (ID: 7)
05.04.2011 14:00:22 00JP Выполнилось условие: [Return-path!:"<>" & From!:"daemon" & From!:"ххххх@mail.amursk.ru"] (ID: 5)
05.04.2011 14:00:22 00JP Добавили получателя <admin@bolon.local> (ID: 5)
05.04.2011 14:00:22 00JP Закончили сортировку "Dalsvyaz sorter". Получатели: <admin@bolon.local>;<dalsvyaz@bolon.local>
05.04.2011 14:00:22 00JP Начали сортировку "Main sorter"... Получатели: <admin@bolon.local>;<dalsvyaz@bolon.local>
05.04.2011 14:00:22 00JP Запустили задание "Application" (ID: 1)
05.04.2011 14:00:22 00JP Закончили сортировку "Main sorter". Получатели: <admin@bolon.local>;<dalsvyaz@bolon.local>
@05.04.2011 14:00:22 00JP Доставлено письмо 0MP0002B (7505 байт) от <calldet@office.beeline.ru> для <dalsvyaz@bolon.local> (Тема: "BEELINE Call Detail Record(s)")
@05.04.2011 14:00:22 00JP Доставлено письмо 0MP0002B (7505 байт) от <calldet@office.beeline.ru> для <admin@bolon.local> (Тема: "BEELINE Call Detail Record(s)")
!05.04.2011 14:00:52 00JN Тайм-аут соединения
05.04.2011 14:00:52 00JN Закончили приём почты из внешнего п/я <хххххххххх@[194.85.113.246]>
==========
- то есть, тут кто накосячил? Внешний сервер после передачи письма должен был сказать "Все, я закончил", или ЦМС должен был сказать "Все, мне от тибя больше ничего не надо" ? Почему тайм-аут возникнул?
Back to top
View user's profile Send private message
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 18 Apr 2011 0:31 (Mon)    Post subject: Reply with quote

По вашим примерам почти ничего нельзя сказать, т.к. журнал ("лог") у вас — с обычным уровнем подробности. Для детального разбора нужен отладочный уровень. Отсюда и ваши вопросы, поскольку вы видите лишь малую часть из того, что реально происходит при приёме писем из внешнего ящика.
Тем не менее, из второго примера ясно, что тайм-аут для внешнего POP3-сервера у вас установлен в 30 сек. Для Dial-Up-подключения этого крайне мало, тем более при скорости 28.8 кбит. Надо хотя бы 120 сек. Да и для не-Dial-Up тоже не помешает такое значение указать или большее. Если связь отличная, то тайм-аутов не будет и большой тайм-аут ничем не помешает, а если связь вдруг испортилась, то и поможет. Но тайм-аут больше 300 сек. указывать, думаю, смысла тоже нет.

Vf-y6d wrote:
- то есть, тут кто накосячил? Внешний сервер после передачи письма должен был сказать "Все, я закончил", или ЦМС должен был сказать "Все, мне от тибя больше ничего не надо" ?

Сначала "Внешний сервер после передачи письма должен был сказать "Все, я закончил"", а потом "ЦМС должен был сказать "Все, мне от тибя больше ничего не надо".

Vf-y6d wrote:
Почему тайм-аут возникнул?

Связь плохая, пакеты не идут в одном или в обоих направлениях. CMS "устал" ждать данных от сервера и разорвал соединение по тайм-ауту. А вот в какой именно момент тайм-аут возник, нужно смотреть в отладочном журнале. Хотя, кроме удовлетворения любопытства, это ничего не даст. Проблема — в ненадёжной связи и в малом значении тайм-аута.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
NAMOR
CMS Developer


Joined: 15 Oct 2005
Posts: 1079

PostPosted: 31 Oct 2015 14:50 (Sat)    Post subject: Reply with quote

Vf-y6d wrote:
А вот "отпад" CMS от зависшего соединения с почтовым сервером происходит когда через 5 минут, когда через 45, а когда и вообще перезапускать приходится. Может в ём самом чего предусмотреть надо?

Для решения этой проблемы сделали в CMS 3.06 beta 1 следующее:
Code:
[*] Тайм-аут, задаваемый в свойствах сервисов и внешних серверов, теперь
    действует не только при приёме, но и при отправке данных. Это позволяет
    избежать случаев длительного зависания соединений.
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Courier Mail Server Forum Index -> Courier Mail Server 2.xx All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group