Автор: Пользователь скрыл имя, 26 Марта 2012 в 22:28, дипломная работа
Основное предназначение электронной почты – дать пользователям возможность общаться друг с другом. Сам процесс общения происходит путем пересылки текстовых и прочих файлов, подобно тому, как при обычной почтовой переписке люди обмениваются письмами, открытками и прочей корреспонденцией. Уникальность электронной почты как сетевого сервиса, состоит в том, что за счет имеющихся шлюзовых соединений между различными сетями почта может доставляться практически в любые и из любых мировых сетей, объединяя их в единое сетевое пространство.
Введение
Техническое задание
Введение
1 Основание для разработки
2 Источники разработки
3 Технические требования
3.1 Состав изделия
3.2 Технические параметры
3.3 Принцип работы
3.4 Требования к надежности
3.5 Условия эксплуатации
3.6 Требования безопасности
4 Экономические показатели
5 Порядок испытаний
1 Анализ программных средств и технологий
1.1 Принципы работы электронной почты
1.1.1 Создание почтового сообщения
1.1.2 Отправка почтового сообщения
1.1.3 Протокол SMTP
1.1.4 Транспортировка сообщений
1.1.5 Доставка почтовых сообщений
1.1.6 Форматы серверных почтовых хранилищ
1.1.7 Организация доступа к серверным хранилищам
1.1.8 Получение сообщений
1.2 Технология DNS
1.3 Способы организации базы данных сообщений
1.4 Способы организации безопасности среды
1.4.1 Организация безопасности средствами операционной системы
1.4.2 Повышенная безопасность с использованием антивирусной защиты
1.4.3 Защита переписки криптографическими средствами
1.5 Технология кластеризации
1.6 Требования к программной части
1.7 Требования к аппаратной части
2 Проектирование корпоративной почтовой системы
2.1 Обоснование выбора DNS-сервера на основе BIND
2.2 Обоснование выбора агента передачи почты Postfix
2.2.1 Основные подсистемы Postfix
2.2.2 Демоны Postfix
2.2.3 Подсистема обработки входящих сообщений
2.2.4 Подсистема доставки почтовых сообщений
2.2.5 Управление очередями сообщений
2.2.6 Вспомогательные утилиты
2.2.7 Описание основных конфигурационных файлов Postfix
2.3 Сервер доставки почты MDA Dovecot
2.4 Обоснование выбора службы каталогов OpenLDAP в качестве базы данных
2.5 Обеспечение безопасной работы в почтовой системе
2.6 Организация кластера на основе Linux-HA
2.6.1 Программный пакет DRBD
2.6.2 Программный пакет Heartbeat
2.7 Обоснование выбора оборудования для почтового сервера
2.8 Обоснование выбора программных продуктов используемых в почтовой системе
3 Реализация корпоративной почтовой системы
3.1 Этапы установки и настройки компонент почтвой системы
3.1.1 Установка и настройка DNS-сервера BIND
3.1.2 Установка и конфигурация компонентов почтового сервера
3.2 Тестирование почтовой системы
3.2.1 Тестирование DNS-сервера
3.2.3 Тестирование спам-фильтра
3.2.4 Тестирование SSL
4 Оценка показателей качества и расчет общей стоимости владения почтовой системой
4.1 Оценка показателей качества
4.2 Расчет общей стоимости владения почтовой системой
4.3 Расчет стоимости теоретического проекта вычислительной системы
4.4 Расчет стоимости технического проекта вычислительной системы
4.5 Расчет стоимости внедрения вычислительной системы
4.6 Расчет стоимости эксплуатации вычислительной системы
4.7 Общая стоимость владения вычислительной системой
5 Раздел безопасности жизнедеятельности
5.1 Требования безопасности при эксплуатации видеодисплейных терминалов (ВДТ) и персональных электронно- вычислительных машин (ПЭВМ)
5.2 Охрана труда для операторов и пользователей персональных электронно-вычислительных машин (ПЭВМ)
5.2.1 Общие положения
5.2.2 Требования безопасности перед началом работы
5.2.3 Требования безопасности во время работы
5.2.4 Требования безопасности в аварийных ситуациях
5.2.5 Требования безопасности после окончания работы
5.3 Выводы по разделу
Заключение
Список используемой литературы
Приложение А
Приложение Б
Приложение В
Local – используется для доставки почты внутри локальной системы. Умеет работать со стандартными для UNIX почтовыми ящиками. В случае если для данного пользователя не заведено системных псевдонимов, в файле псевдонимов обычно это /etc/aliases и нет файлов локального перенаправления .forward, которые любой пользователь может создать в своей домашней директории, то письмо сразу же попадает в целевой почтовый ящик. В противном случае письмо будет передано туда, куда они указывают. Возможности локального агента доставки на этом не заканчиваются. Одновременно могут работать несколько агентов локальной доставки, но в то же время параллельная доставка нескольких писем в один почтовый ящик обычно не практикуется. Несмотря на то, что агент локальной доставки может самостоятельно справиться со всеми проблемами, по желанию администратор может задействовать механизмы, позволяющие передоверить доставку в почтовый ящик внешним программам. Примером такой программы может служить широко известный многим администраторам procmail.
Virtual – агент виртуальной доставки представляет собой очень урезанную версию агента локальной доставки. Поэтому он может работать только с почтовыми ящиками в формате mailbox. В нем также отсутствует поддержка системной базы псевдонимов и файлов .forward. За счет таких ограничений данный агент доставки считается самым безопасным из всех. Благодаря своей природе он может легко работать с почтой, предназначенной для нескольких виртуальных доменов, располагающихся на одной и той же машине.
SMTP-клиент, являющийся еще одним агентом, вступает в действие в тот момент, когда нужно доставить письмо пользователю удаленной системы. Обычно queue manager передает ему следующие данные: имя файла очереди, адрес получателя, хост или домен, куда нужно доставить почту, адрес отправителя. Первым делом с помощью DNS-запроса нужно получить список MX-серверов для целевого домена и отсортировать его по приоритету. Следующим шагом мы начинаем пробовать каждый адрес до тех пор, пока не найдем тот, который находится в рабочем состоянии. Обычно доставка идет одновременно сразу для нескольких доменов, поэтому в системах, через которые проходит большой поток почты, можно увидеть несколько SMTP-клиентов, работающих параллельно. Если доставка завершилась удачно, то SMTP-клиент модифицирует файл почтовой очереди так, чтобы было понятно, что он обработан. В противном случае данный клиент уведомляет queue manager либо о фатальной ошибке, либо о временных затруднениях. Проблемы первого типа могут быть вызваны отсутствием нужного пользователя удаленной системы, а вторые, к примеру, неполадками в сети или неработоспособностью принимающего сервера. В первом случае процесс bounce посылает отправителю оповещение о неудаче предпринятого действия и делает запись в протокол работы почтовой системы с помощью syslogd. А во втором письмо помещается в специальную очередь deferred, где оно должно дожидаться следующей попытки доставки.
LMTP-клиент работает точно так же, как и SMTP-клиент, разве что протокол используется другой. LMTP специально создан для того, чтобы доставлять письмо на локальный или удаленный сервер, выделенный для хранения почтовых ящиков. В таком качестве могут выступать Courier- или Cyrus-сервер. Большим плюсом такого подхода к доставке писем является то, что один сервер Postfix может раздавать письма разным серверам почтовых ящиков. В то же время никто не мешает одному серверу почтовых ящиков получать почту от нескольких серверов postfix одновременно.
Pipe mailer-интерфейс, предназначенный для работы с внешними транспортными агентами. Примером такого взаимодействия может служить работа с UUCP. В то же время никто не мешает нам привязать к данному интерфейсу свой самодельный транспорт.
Как упоминалось ранее, в случае если доставка не удалась, менеджер очередей переправляет файл, в котором хранится письмо, в директорию, где находится очередь deferred. В ней складируются отложенные в доставке письма. На файл с письмом ставится временной штамп, находящийся в будущем, соответственно следующая обработка этого файла произойдет именно в тот момент, на который указывает штамп. Периодически менеджер очередей проверяет, не пришло ли время предпринять следующую попытку доставки отложенных сообщений. В случае если есть необходимость выполнить очередную попытку раньше, чем истечет тайм-аут, нужно воспользоваться командой postfix flush.
Следующим понятием является очередь corrupt. В нее попадают все поврежденные, нечитаемые или неправильно отформатированные файлы почтовых очередей. Такая предосторожность позволяет изолировать подозрительные данные до тех пор, пока администратор системы не решит, что с ними делать. Впрочем, в эту очередь письма попадают крайне редко.
Последняя из существующих в системе очередей называется hold. Здесь хранятся письма, доставка которых приостановлена по тем или иным причинам. Они будут находиться в этой очереди, пока не поступит специальная команда, выводящая их из состояния паузы.
Менеджер очередей может работать в разных режимах, обычно они называются стратегиями. В то же время никто не мешает их комбинировать между собой. Ниже приведены характерные особенности каждого из них:
Менеджер очередей может работать в разных режимах, обычно они называются стратегиями. В то же время никто не мешает их комбинировать между собой. Ниже приведены характерные особенности каждого из них.
leaky bucket (дырявое ведро) - жестко ограничивает количество сообщений в очереди active, тем самым защищая менеджера очередей от потребления чрезмерного объема памяти. Большая часть сообщений для доставки берется из очереди incoming и лишь малая часть из deferred.
fairness (честная очередь) - в случае если очередь active не заполнена, письма берутся равномерно из deferred и incoming. Что дает залежавшейся почте больше шансов быть доставленной, даже если система очень сильно загружена.
slow start (медленный старт) - данная стратегия позволяет бороться с заторами, которые могут образоваться, если принимающая сторона слишком медленно обрабатывает входящие запросы, а очередь предназначенной ей почты слишком велика. Соответственно нужно подобрать ровно такое количество одновременных потоков доставок, чтобы сервер успевал обрабатывать их все, не теряя ни одного из-за перегрузки и следующих за этим тайм-аутов. Подстройка обычно производится с помощью плавного уменьшения количества одновременных попыток доставки.
round robin (круговая сортировка) - обычно менеджер очередей сортирует очередь на доставку по пунктам назначения. С помощью этой стратегии вероятность доставки более равномерно распределяется по всем пунктам назначения, что обеспечивает честные условия конкуренции для каждого пункта.
exponential backoff (экспоненциальный откат) - почта, которая не может быть доставлена с первой же попытки, попадает в очередь deferred. После каждой неудачной попытки доставки тайм-аут увеличивается вдвое. Таким образом, почта для недееспособных узлов не будет потреблять слишком много ресурсов отправляющей системы напрасными попытками доставки.
destination status cache (кэширование статуса) - менеджер очередей поддерживает таблицу, в которой некоторое время хранятся статусы предыдущих попыток доставок. Соответственно это позволяет сэкономить на повторных попытках, обращенных на недоступные узлы.
Кроме всех перечисленных функций менеджер очередей может создавать стандартные оповещения, говорящие отправителю исходного сообщения о том, что какие-то почтовые адреса или целые домены перестали существовать или переменили свои названия, мы можем воспользоваться файлом relocated.
Помимо основного функционала в Postfix есть сопутствующие утилиты.
mailq – программа, позволяющая смотреть список писем, находящихся в почтовых очередях. На самом деле эта программа является всего лишь интерфейсом к демону showq, который вызывается через команду sendmail -bp.
postsuper – предназначена для обслуживания почтовых очередей. Одним из применений является удаление какого-либо сообщения или повторная установка его в очередь на доставку. В то же время не стоит забывать об утилите postqueue, которая также создана для управления очередями. Единственное различие в них это то, что для работы c postsuper требуются права root, а для postqueue таких широких полномочий не нужно, хотя за счет этого теряется часть функционала.
postalias – используется для создания баз псевдонимов или выполнения запросов к этим базам. Для совместимости с sendmail существует команда newaliases, делающая то же самое, что и postalias.
postconf – показывает состояние конфигурационных переменных Postfix.
postlog – команда, которую можно использовать для записи данных в протоколы работы Postfix. Полезна для использования в своих собственных скриптах.
postcat – данная утилита, позволяющая посмотреть содержимое файла почтовой очереди.
postmap – используется для выполнения запросов к вспомогательным таблицам или для создания таких таблиц из текстовых файлов. Перевод данных из текстовой формы в табличную довольно сильно ускоряет процедуру выполнения запросов.
postlock – позволяет работать с блокировками, установленными Postfix на файлы. Обычно применяется для написания скриптов.
postkick – предназначена для отправки сигналов по каналам межпроцессового обмена внутри Postfix. Удобна для организации взаимодействия между внутренними процессами Postfix и самописными скриптами.
spawn – демон, позволяющий подключить внешнюю систему фильтрации содержимого сообщений. На данный момент находится в стадии активной разработки, и хотя работает достаточно надежно, но в силу особенностей реализации создает слишком большую нагрузку на систему. Скорее всего в следующих версиях Postfix будет заменен на что-то лучшее.
proxymap – сервис, позволяющий централизованно выполнять запросы ко всем служебным таблицам вместо того, чтобы каждый из процессов выполнял их самостоятельно. Еще одним применением может быть предоставление Postfix доступа к файлам, находящимся за рамками ограничений, накладываемых chroot.
Главный конфигурационный файл main.cf находится в каталоге /etc/postfix. Все основные параметры настраиваются в нём. В таблице 2.6 представлено описание опций для правильной настройки главного конфигурационного файла.
Листинг файла прилагается в приложение А.
Таблица 2.6 – Описание конфигурационного файла Postfix – main.cf
Параметр | Описание |
soft bounce | Сообщение, которое не смогло быть доставлено сразу попадает в очередь, и через какое-то время попытка повторяется. Если опция отключена, то отправитель сразу уведомляется, что доставка невозможна и сообщение отбрасывается; |
queue_directory | Директория для очереди сообщений; |
command_directory | Расположение административных команд; |
daemon_directory | Директория с дополнительными программами; |
mail_owner | Кому принадлежит почтовая очередь и от какого пользователя выполняется большинство процессов; |
default_privs | Права этого пользователя будут использоваться в процессе локальной доставки сообщений внешним командам или файлам; |
Продолжение таблицы 2.6 | |
Параметр | Описание |
myhostname | Имя системы, по умолчанию используется FQDN имя получаемое с помощью gethostname(); |
mydomain | Доменное имя этой системы; |
myorigin | Значение используется в адресе отправителя почты, если myorigin=company.ru то вся почта будет из @company.ru |
inet_interfaces | На каких сетевых интерфейсах принимать почту; |
mydestination | Для каких доменов мы будем принимать почту; |
unknown_local_recipient_ | Код ответа в случае некорректного получателя сообщения; |
local_recipient_maps | Список всех локальных получателей почты; |
mynetworks | Список доверенных сетей, клиенты из доверенных сетей могут перенаправлять почту через почтовый сервер; |
relay_domains | Для каких доменов мы будем релеем; |
alias_maps alias_database | База псевдонимов используемых для локальной доставки; |
mail_spool_directory | Директория где хранятся почтовые ящики; |
smtpd_banner | Приглашение почтового сервера, код 220; |
debug_peer_level | Уровень отладки при достижение условия в debug_peer_list; |
debug_peer_list | Для этих IP-адресов будет использоваться повышенное журналирование; |
debugger_command | Внешняя программа запускаемая в случае старта Postfix с опцией -D; |
sendmail_path | Расположение команды sendmail которая помещает сообщения в очередь; |
newaliases_path | Путь к программе newaliases; |
mailq_path | Путь к программе mailq, с ее помощью можно посмотреть почтовую очередь; |
setgid_group | Группа владелец set-gid команд; |
html_directory | Директория с HTML-файлами описывающими специфичные возможности Postfix; |
manpage_directory | Расположение manual pages; |
sample_directory | Директория с примерами; |
readme_directory | Директория с README файлами Postfix; |
config_directory | Расположение main.cf и master.cf; |
virtual_mailbox_domains | Конечный пункт назначения для списка доменов, здесь используется такой же синтаксис как в mydestination; |
virtual_mailbox_base | Префикс который используется для всех результатов из virtual_mailbox_maps; |
| |
Продолжение таблицы 2.6 | |
Параметр | Описание |
virtual_mailbox_maps | Таблица с возможными адресатами в доменах, которые отвечают virtual_mailbox_domains; |
virtual_alias_maps | Таблица псевдонимов; |
virtual_minimum_uid | Минимальный UID для виртуальных аккаунтов; |
virtual_uid_maps | Поисковые таблицы с пользовательским идентифи-катором, который используется агентом локальной доставки при записи сообщения в почтовый ящик; |
virtual_gid_maps | Поисковые таблицы с идентификаторами групп пользователей. Используется агентом локальной доставки; |
virtual_transport | Транспорт для доставки почты; |
dovecot_destination_recipient_ | Опция Dovecot, доставлять за раз только одно письмо; |
smtpd_sasl_auth_enable | Включить ли SASL-аутентификацию; |
smtpd_sasl_exceptions_networks | Список сетей которым SASL AUTH предлагаться не будет; |
debug_peer_level | Уровень отладки при достижение условия в debug_peer_list; |
debug_peer_list | Для этих IP-адресов будет использоваться повышенное журналирование; |
debugger_command | Внешняя программа запускаемая в случае старта Postfix с опцией -D; |
sendmail_path | Расположение команды sendmail которая помещает сообщения в очередь; |
newaliases_path | Путь к программе newaliases; |
mailq_path | Путь к программе mailq, с ее помощью можно посмотреть почтовую очередь; |
setgid_group | Группа владелец set-gid команд; |
html_directory | Директория с HTML-файлами описывающими специфичные возможности Postfix; |
manpage_directory | Расположение manual pages; |
sample_directory | Директория с примерами; |
readme_directory | Директория с README файлами Postfix; |
config_directory | Расположение main.cf и master.cf; |
virtual_mailbox_domains | Конечный пункт назначения для списка доменов, здесь используется такой же синтаксис как в mydestination; |
virtual_mailbox_base | Префикс который используется для всех результатов из virtual_mailbox_maps; |
virtual_mailbox_maps | Таблица с возможными адресатами в доменах, которые отвечают virtual_mailbox_domains; |
virtual_alias_maps | Таблица псевдонимов; |
virtual_minimum_uid | Минимальный UID для виртуальных аккаунтов; |
Продолжение таблицы 2.6 | |
Параметр | Описание |
virtual_uid_maps | Поисковые таблицы с пользовательским идентификатором, который используется агентом локальной доставки при записи сообщения в почтовый ящик; |
virtual_gid_maps | Поисковые таблицы с идентификаторами групп пользователей. Используется агентом локальной доставки; |
virtual_transport | Транспорт для доставки почты; |
dovecot_destination_recipient_ | Опция Dovecot, доставлять за раз только одно письмо; |
smtpd_sas l_auth_enable | Включить ли SASL-аутентификацию; |
smtpd_sasl_exceptions_networks | Список сетей которым SASL AUTH предлагаться не будет; |
smtpd_sasl_security_options | Опции для SASL-аутентификации; |
broken_sasl_auth_clients | Совместимость с клиентами, которые используют старую версию AUTH; |
smtpd_sasl_type | Плагин который будет использоваться для аутентификации; |
smtpd_recipient_restrictions | Набор ограничений почтового сервера; |
content_filter | Название транспорта, который фильтрует почту после того, как она поставлена в очередь; |
receive_override_options | Включение или отключение проверки правильности получателя. |
Конфигурационный файл master.cf находится в каталоге /etc/postfix. Этот файл определяет, как клиентская программа соединяется с сервисом и что запускать, когда происходит запрос к сервису. Также используется для определения транспорта, порядка запуска процессов и использования каждого подключенного сервиса, включая антивирус, спам-фильтр и агент доставки.
Листинг файла прилагается в приложение А.
Структура файла может быть представлена 8 столбцами, они перечислены в таблице 2.7.
Таблица 2.7 – Структура файла master.cf
service | type | private | unpriv | chroot | wakeup | maxproc | command + args |
В таблице 2.8 представлено описание опций для настройки подключаемых сервисов.
Таблица 2.8 – Описание сервисов Postfix, настраиваемых в конфигурационном файле master.cf
Название | Описание |
type | Тип сервиса, inet – сервис работает на TCP/IP-сокете, unix – сервис слушает на UNIX-сокете, fifo – именованный pipe, доступ только для локальный клиентов, pass – слушает на UNIX-сокете, принимает одно открытое подключение по запросу и доступно только для локальных пользователей; |
private | Ограничен ли доступ к почтовой системе, тип сервиса inet не может быть приватным; |
unpriv | Запускать от пользователя root или от mail owner в main.cf; |
chroot | Сервис запускается в chroot-окружение или нет; |
wakeup | Через определенное количество секунд можно отсылать запрос сервису чтобы тот “проснулся”; |
maxproc | Максимальное количество процессов которое этот сервис может выполнять одновременно; |
command + args | Исполняемая команда и аргументы для сервиса. |
Информация о работе Корпоративная почтовая система на базе высокодоступного кластера