Perl для системного администрирования



     Денежные переводы Казань тут. |          

Распространенные ошибки при отправке почты


Что ж, можно приступить к использованию электронной почты для отправки извещений. Однако когда мы начнем писать программы для выполнения этой функции, то быстро обнаружим, что вопрос как посылать почту, отнюдь не так интересен, как вопросы когда и что посылать.

В данном разделе мы исследуем эти вопросы, действуя «от противного». Если рассмотреть, что и как не надо посылать, то сами вопросы можно изучить глубже. Так что поговорим об ошибках, допускаемых наиболее часто при написании программ системного администрирования, отправляющих почту.

Слишком частая отправка сообщений

Самая распространенная ошибка - это отправка слишком большого количества сообщений. Иметь сценарии, отправляющие почту, вообще говоря, отличная идея. Если с какой-либо службой случится что-то неприятное, то отправка обычного электронного сообщения или сообщения на пейджер - очень хороший способ привлечь внимание человека к случившейся проблеме. Но в большинстве случаев, раз в пять минут отправлять по сообщению о неприятностях - это очень плохое решение. Слишком усердные почтовые генераторы очень быстро попадают в почтовые фильтры тех, кто должен был их читать. В результате оказывается, что важная почта просто игнорируется.

Контроль над частотой отправки почты

Самый простой способ избежать лишней почты - добавить в программу меры предосторожности, чтобы устанавливать задержку между сообщениями. Если сценарий запущен постоянно, то очень просто запомнить время отправки последнего сообщения:

$last_sent = time;

Если программа запускается один раз в N минут или часов через сгоп в Unix или механизмы планирования задач NT, эту информацию можно переписать в файл, состоящий из одной строки, и считывать его при следующем запуске программы. В подобном случае обязательно обратите внимание на меры предосторожности, перечисленные в главе 1 «Введение».

В зависимости от ситуации можно поэкспериментировать с временем задержки. В этом примере показана экспоненциальная задержка (exponential backoff):

$max = 24*60*60; и максимальная задержка в секундах (1 день)




Содержание  Назад  Вперед