Лабораторная работа

Сервер электонной почты на основе 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.  Почему необходимо явно задавать имена или адреса допустимых релеев?