Re: exim vs sendmail

From
Sergey Skvortsov (2:5020/400)
To
Slawa Olhovchenkov
Date
2006-12-14T08:46:54Z
Area
RU.UNIX.BSD
From: Sergey Skvortsov <skv@protey.ru>

Slawa Olhovchenkov wrote:
> 
>  >> 1. бурную деятельность не изображать
>  >> 2. при коннекте на 25 порт говорить "место ек"
>  >> 3. в статусе (по mailq который) говорить тоже самое
>  >> 4. ждать когда место будет. при появлении продолжить работу.
>  >>
>  >> это рокет сайнс?
> 
>  SS> Это какая-то придумка в стиле "а я вот так хочу". Неубедительно.
> 
>  SS> Читай документацию. Hint: check_spool_space, check_spool_inodes,
>  SS> check_log_space. Лучше документированного opensource MTA чем exim нет в
>  SS> природе.
> 
>  SS> И докажи, что предложенные тобой настройки по умолчанию будут лучше чем
>  SS>  0. Вот эти числа каждый админ пусть сам выбирает.
> 
> Это не важно какие числа, важна логика. А логика настройками не меняется.

Вообще-то, если ты выставишь check_log_space/check_spool_space, то Exim
честно будет выдавать 452 ошибку при превышении лимита.

Более того, check_log_space нужен только если логи лежат на другом
разделе, отличном от раздела со spool'ом.

Далее, если указывается параметр SIZE в команде MAIL, то будет
требоваться на диске как минимум check_spool_space+SIZE.

Короче, единственная неувязка по умолчанию (исходя из твоих ожиданий) -
то, что check_log_space равен 0.

Но это легко исправить. Уж промолчу о том, что заботиться о логах - дело
newsyslog и ему подобным тварям. Негоже лилиям прясть, а Exim'у думать о
работе явно внешних guardian'ов.

В качестве же общих размышлений стоит отметить, что в таких случаях
"должное" поведение сервисов можно разбить на два взаимоисключающих вида:

1. robustness любой ценой. Если нет ресурсов - жить по принципу
"приказано выжить", тупо ожидая появления ресурсов, и переходить на
режим экономии (degradation of service quality). В данном случае -
выдавать temporary error, в случае HTTP - типа 503 с заголовком
Retry-after (жаль, что в SMTP нет такого аналога).

2. ни одного запроса без логов. Как пример крайнего случая - это когда
ОС с включенным аудитом принципиально умирает, если для логов аудита нет
места. В этом смысле syslog вообще нехорош, ибо логи могут потеряться, а
 никто об этом не узнает.

С практической точки зрения первый вариант удобнее, поскольку о крайних
ситуациях нехватки ресурсов думает каждый сервис по отдельности, а
админ... ну скажем спит. В реальности же, за "здоровьем" системы всё же
должны следить отдельные сущности, и уж если ресурсы действительно
кончились, несмотря на все усилия "служб спасения" - то да, сервисам
логично умереть, и ожить лишь по внешнему приказу (всё тех же
guardian'ов, которые должны поднять сервисы когда ресурсы появятся).

Как итог, всё же не следует ожидать от каждого сервиса навыков выживания
в пустыне, уж лучше продумать всё загодя.

-- 
Sergey Skvortsov
mailto: skv@protey.ru
--- ifmail v.2.15dev5.3
 * Origin: Demos online service (2:5020/400)
SEEN-BY: 50/12 400/814 450/159 1024 461/43 132 640 469/999 4616/3 4625/8
SEEN-BY: 4641/444 5000/76 5000 5006/1 5007/1 5010/70 5011/13 5012/46 5015/28
SEEN-BY: 5019/26 5020/18 175 194 400 545 982 1057 1909 1922 2238 2395 2871
SEEN-BY: 5020/4441 5021/29 5025/3 5026/14 45 5027/12 5030/1080 1957 5034/10 13
SEEN-BY: 5035/3 38 5036/1 5045/7 5049/1 5051/15 5054/1 4 8 9 11 28 35 36 37 45
SEEN-BY: 5054/66 67 70 75 84 85 5059/9 5060/88 5061/15 5062/10 5063/3 5064/7
SEEN-BY: 5066/18 5075/5 5076/1 5077/70 5080/1003 5084/9 5085/13 5095/20
SEEN-BY: 5096/18 6001/10
PATH: 5020/400 545 5054/1 37