Лабораторная работа
Сервер электонной почты на основе sendmail
Теоретические сведения.
Электронная почта - один из наиболее важных и широко используемых сервисов в TCP/IP сетях. Не смотря на то. чтои этот сервис широко используется так называемыми спаммерами для рассылки нежелательной коммерческой почты, попросту говоря - назойливой рекламы или спама,
сервис электронной почты остаётся одним из наиболее удобных и популярных.
Рассмотрим процесс передечи электронной почты от одной пользовательской программы к другой пользовательской программе.
Почтовый агент пользователя (Mail User Agent, MUA) связывается по протоколу SMTP с почтовым транспотрным агентом(Mail Transport Agent, MTA), который проверяет права доступа пользовательского агента и принмает сообщение в спул. Далее MTA проверяет поле "To:" заголовка
письма и производит разбор почтового адреса. При разборе адреса выделяется доменная часть адреса и производится запрос к службе имён DNS для получения записей MX для данного домена или хоста. Запись MX указывает на хост, который является почтовым обменником для данного домена. MTA производит соединение с этим хостом и передаёт почту для получателя по протоколу SMTP. Почтовое сообщение помещается в почтовый ящик конечного пользователя. Когда получатель запускает MUA, тот считывает письма из почтового язика и предоставляет пользователю интерфейс для работы с письмами. Для доступа к почтовому ящику польщователя с локальной машины MUA просто работает с файлом почтого ящика, который обычно называется /var/mail/пользоватьель.
Для удалённого доступа к почтовому ящику используются протоколы POP3 и IMAP. Протокол
POP3 очень простой, он позволяет провести авторизацию скачать все письма нпи пользовательскую машину. Протокол IMAP является более функуиональным (следовательно, и менее безопасным) и позволянт удалённо управлять почтовым ящиком.
Обычно на пользовтельский компъютер скачиваются заголовки писем, а тело и вложния качиваются по мере необходимости.
Почтовый сервер обслуживается несколькими программами. Традиционно в качестве транспортного агента (MTA) используется программа sendmail. Для обеспечения удалённого доступа к почтовому ящику используют набор программ Washingtin University IMAP daemon, клторый содержит демон для протокола POP3 ipopd и демон для протокола IMAP imapd. Запускются указанные демоны не самостоятельно, а посредством сетевого супердемона inetd или xinetd. Эта программа прослушивает указанные порты и при получению обращения запусает соответствующую программу с диска, замыкая ее стандвнртные потоки stdin и stdout на сетевой сокет, а стандвртный поток ошибок stderr на системный жуонал syslog.
Обычнго демоны impad и ipop3d не т ребуют настройки, однако при использовании криптозащиты канала необходимо сгенерировать сертификат.
Настройка sendmail производится путём редактирования многочисленных файлов конфигурации в директории /etc/mail/.
Основным файлли конфигурации является sendmail.cf, однако его синтаксис крайне не удобен и для упрошения работы используют процессор макросов m4 со смпециальным набором макросов. На языке m4 пищут довольно простой файл sendmail.mc, который затем преобразуется в sendmail.mc.
Рпссмотрим наиболее часто применяемые макрокоманды.
Бла Бла Бла
В случае, если почтовый сервер используется для приема почты с нескольких доменов, необходимо указать их имена в файле
/etc/mail/local-host-names.
Для управления доступом к cерверу по протоколу SMTP используется файл /etyc/mail/access.
Рассмотрим пример:
Connect:195.69.76.0 ACCEPT
Connect:192.168.0.0 ACCEPT
stu.cn.ua RELAY
stu. RELAY
sales@ SPAM
badboys.com SPAM
В приведенном примере мы принимаем соединения из двух сетей, пиринимаем письма для последующей отправки (релеинга) из доменов stu.cn.ua и stu, блокируем почту с потправителем sales и из домена badboys.com.
Программа sendmail разрабатывалась как могогпротокольный постовый маршрутизатор. У нее есть 2 встроенных майлера (агента достваки): smtp и local для доставки почты по протоколам SMTP и в локальный ящик пользователя. Кроме того, имеется возможность подключать любой агент доставки как внешнюю программу. Эта программа должна подчиняться чётко определенным требованиям на интерфейс командной строки и на коды выхода. Тело письма направляется программе на stdin. Для правильной обработки писем sendmail произвродит разбор адреса получателя путем многократного переписваения адреса пошаблонам. Результатом разбора является тройка хост (h), мэйлер (m) и пользователь (u). Дальше присьмо передаётся мэйлеру.
Для того, что бы адрес в обфчном
..... еще не дописано ......
Ход работы.
1. Проверьте, установлены ли пакеты sendmail и sendmail-cf командой rpm -qa | grep sendmail. Если пакеты не установлены, скачайте их с файлового сервера и установите командой rpm -ivh имя_пакета.rpm
2. Зайдите в директорию /etc/mail и просмотрите файл конфигурации sendmail.mc. Внимательно прочтите коментарии, а также описание используемых команд конфигурации в файле /usr/share/sendmail-cf/README. Обратите особое внимание на предложение DAEMON_OPTION.
3.Просмотрите файл aliases на предмет наличия необходимых системных псевдонимов. Перенаправьте почту пользователя root на логин, под которым вы обычно работаете.
4. Запустите команду make в директории /etc/mail. Данная команда должна сгенерировать новые sendmail.cf и aliases.db. Если этого не произошло, исправьте файл Makefile так, что бы он все выполнял по команде make. В некоторых системах нужно парвить файл submit.mc, из которого генерируется submit.cf. Последний необходимо вручную переименовать в sendmail.cf
Если в системе отсутствует Makefile, сгенерируйте файл при помощи процессора макросов m4;
m4 sendamil.mc >sendmail.cf
5. Просмотрите внимательно файл запуска /etc/rc.d/init.d/sendmail на предмет используемых переменных окружения и опций запуска. Внесите необходимые изменения в используемые файлы конфигурации.
Запустите sendmail командой /etc/rc.d/init.d/sendmail start.
6. Убедитесь, что sendmail стартовал и принимает соединения от других хостов. Для провеоки с другой машины запустите команду
telnet имя_вашего_хоста 25
Можете отправить письмо пользователю root,
следуя протоколу SMTP.
7. Простотрите файл /etc/mail/access и впищите в него сеть или домен, с которых вы будете использовать данный почтовый сервер в качестве сервера отправки почты (RELAY).
Перезапустите sendmail.
8. Установите пакет imap и настройте запуск ipop3d imapd через супердемон inetd. В ОС Linux обычно используется демон xinetd. Для запуска через xinetd необходимо создать файл для сервиса pop3 в директории /etc/xinetd.d. В качестве примера можно взять файл для сервиса telnet.
9. Перезапустите inetd и проверьте работу скрвиса pop3 при помощи команды
telnet localhost 110
10. Настройте на соседнем хосте почтовый агент пользователя так, что бы он использовал ваш сервер. Отпавьте письмо с заведомо рабочего почтового адреса на локалного ползователя вашего сервера и проверьте получение почты.
Отправьте овет и убедитесь, что письмо дошло.
Содержание отчета.
Отчёт должен содержать:
1. Файлы конфигурации почтового сервера с подробыми комментариями всех опций.
2. Скриншоты процесса приёма и передачи почты почтовым агентом подьзователя через ваш почтовый сервер.
Контрольные вопросы.
1. Какая опция отвечает за использовние таблицы доступа к серверу?
2. Как сконфигурировать сервер для работы по протоколу IMAP?
3. Как описать в файле access сеть, из которой почтовые агенты ползователя доступаются к почтовому серверу?
4. По какому протоколу происходит передача почты от MUA к почтовому серверу?
5. Поясните, каким образом происходит авторизация и аутентификация пользователя к серверу pop3?
6. Почему необходимо явно задавать имена или адреса допустимых релеев?