Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Серверные службы Linux

Postal для оценки производительности почтовых серверов

Оригинал: Mail server benchmarking with Postal
Автор: Ben Martin
Дата: 17 июля 2008
Перевод: Александр Тарасов aka oioki
Дата перевода: 25 июля 2008

Проект Postal состоит из трех программ, нацеленных на оценку производительности почтовых серверов. Основная программа - postal, отправляет с заданной скоростью электронные сообщения адресатам из указанного списка. Таким образом Postal позволяет измерить, насколько быстро ваш сервер обрабатывает входящую корреспонденцию, узнав таким образом насколько, к примеру, ускорилась работа сервера после аппаратного апгрейда или изменениях в конфигурации программ. К примеру, установив серверу другой IMAP-сервер для отправки писем, можно добиться увеличения быстродействия без изменений в его аппаратной части.

Две другие программы набора Postal: rabid - это POP-клиент, получающий новые сообщения с почтового сервера с указанной скоростью и bmh, внешне представляющий из себя сервер передачи почты, однако просто-напросто уничтожающий все входящие сообщения (отсюда и название Black Hole Mailer - Черная дыра).

Пакет postal есть для дистрибутива Ubuntu Hardy, но нет для Fedora или openSUSE. Для этой статьи я собрал Postal версии 0.70 из исходников на 64-битной Fedora 8. Процедура сборки была обычной: ./configure, make, sudo make install. У меня были проблемы с компиляцией, поэтому мне пришлось указать опцию ./configure --disable-gnutls и все прошло гладко.

postal

Основные параметры команды postal - это имя файла, содержащего список электронных адресов, на которые следует слать почту; имя файла со списком адресов отправителей (ключ -f); SMTP-сервер, через который следует слать почту и процент сообщений, который нужно отправить с помощью SSL-шифрования (-s 0). Есть еще и вторичные параметры, как то: сколько потоков запускать (-t 1), максимальный и минимальный размер сообщения в килобайтах (соответственно -m 10 и -M 0) и количество отсылаемой почты за минуту (-r 24000).

Ниже показана команда, отправляющая 30 писем в минуту с использованием двух потоков через локальный SMTP-сервер, отправка на два адреса на одной и той же машине. Начните с малого потока сообщений и понаблюдайте за тем, как ваш сервер отрабатывает, затем увеличьте количество сообщений в минуту с помощью ключа -r. Результат ежеминутно выводится на консоль - печатается количество посланных данных, и (что более важно) сколько сообщений прошло и сколько доставилось с ошибками.

Вышеприведенная команда сгенерирует электронные письма, случайно заполненные строкой MD5: и контрольной md5-суммой тела письма. Это позволяет убедиться в том, что почтовый сервер корректно доставляет все сообщения. В приведенном примере сообщения будут посылаться от пользователей ben и toast самим пользователям ben и toast на локальную машину localhost. Если мы хотим просто проверить, как система справляется с большой массой писем, такое совпадение отправителей и адресатов не должно нас волновать. Если же хотите указать другой список отправителей, это можно сделать с помощью ключа -f.

rabid

Итак, команда postal занимается исключительно отправкой писем, а rabid - наоборот, ее приемом. Некоторые параметры команд postal и rabid похожи; ключ -r используется для ограничения количества соединений в минуту, таким образом можно определить скорость приема сообщений; ключ -p ограничивает число процессов rabid для проверки сразу нескольких аккаунтов; -s определяет процентную долю получений писем через SSL-соединения. Последние два параметра - адрес POP-сервера и имя файла, содержащего список проверяемых аккаунтов. Последний аргумент похож на список отправителей в postal: он содержит список пар аккаунт/пароль, разделенных пробелами. Кстати, можно использовать этот же список и в программе postal - тогда столбец паролей будет просто игнорироваться, а будут задействованы лишь электронные адреса из начала каждой строки.

Ниже показано выполнение команды, проверяющей два аккаунта по POP-протоколу, причем все соединения зашифрованы SSL. Ключ -u говорит rabid о том, что в качестве имени пользователя следует брать то, что стоит слева от знака @, однако при использовании этого ключа иногда у меня были проблемы с аутентифкацией, к примеру, пользователя ben@localhost. Пришлось явно удалить @localhost, и аутентификация прошла как следует. Опция -r 5 ограничивает проверку пятью соединениями в минуту. Аргумент -p 2 создает два процесса, благодаря чему возможна проверка почтовой доставки сразу через два аккаунта. Ключ -s 100 говорит rabid о том, что SSL-шифрованию должны подвергаться 100% всех соединений.

Можно указать и другой порт для соединения, однако в наборе postal это указывается не стандартным способом компьютер:порт. Вместо этого необходимо заключить имя машины в квадратные скобки и сразу дополнить номером порта. Первая часть каждой строки файла user-list-filename.rabid идентична той что в файле user-list-filename; на каждой строке после пробела идет пароль для POP-передачи.

Использование postal для создания сообщений и rabid для их приема должны придавать уверенности в том, что исходящее сообщение должно соответствовать входящему. Действительно, я получил от rabid множество сообщений о несовпадениях. Теперь я разбираюсь, что могло вызвать подобное поведение. Моя система - Fedora 8, для отправки сообщений используется sendmail 8.14.1-4.2.fc8, а для приема uw-imap 2007b-1.fc8.

Программа Black Hole Mailer полезна в том случае, когда нужно узнать, насколько хорошо сервер справляется с рассылками писем множеству адресатов, и таким образом измерить производительность сервера на списках рассылки.

Заключение

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