После успешной установки программы sendmail
ваш сервер электронной почты сможет
принимать почту от других почтовых серверов.
Однако все сообщения будут накапливаться на
сервере, а дальнейшая их доставка
по-прежнему будет зависеть от самих клиентов
системы электронной почты. Они должны будут
самостоятельно забирать свою почту с
почтового сервера.
Некоторые пользователи, имеющие физический
доступ к серверу электронной почты, могут
зарегистрироваться на нем и открыть
интерактивный сеанс либо с помощью обычной
консоли, либо сеанс X Window. После
регистрации и открытия сеанса с сервером
пользователь для получения доступа к своему
почтовому ящику может использовать одну из
программ почтовых пользовательских агентов (MUA),
например pine,
elm или
kmail. Все эти
программы позволяют пользователям
просматривать и удалять почтовые сообщения
во время сеанса работы с локальным почтовым
сервером.
К сожалению,
многие пользователи не имеют физического
доступа к почтовому серверу. В большинстве
случаев просто невозможно обеспечить всем
пользователям сети физический доступ к
почтовому серверу только для того, чтобы они
могли читать сообщения, пришедшие в их
почтовые ящики на сервере. Еще одним
возможным решением этой проблемы может быть
обеспечение удаленных клиентов электронной
почты доступом к почтовому серверу с помощью
программы удаленного доступа
telnet или
терминальных программ для Х-терминала.
Однако такое решение неэффективно, поскольку
и cеансы telnet,
и сеансы Х-терминала создают большую
перегрузку сетевого трафика, и все лишь для
чтения нескольких строк почтового сообщения.
Наилучшим
решением из возможных решений является
использование почтовых доставочных агентов
(Mail Delivery Agents — MDA). Агенты MDA
предоставляют удаленным пользователям
удобный метод доступа к их почтовым ящикам
на сервере электронной почты практически без
перегрузки сетевого трафика.
Программы-агенты MDA могут подключаться к
клиентскому почтовому ящику и загружать
оттуда на клиентский компьютер только
необходимую информацию о сообщениях для
определенного пользователя. На рис. 12.1
представлена схема получения сообщений с
почтового сервера клиентами с помощью
программ MDA.
Рис. 12.1. Получение клиентами
почтовых сообщений с сервера электронной
почты
В лекциях 6,
"Протокол POP3" и 7, "Протокол IMAP", были
рассмотрены два протокола, позволяющие
удаленный доступ к почтовым ящикам на
сервере электронной почты. Согласно
протоколам POP3 и IMAP, пользователи на
удаленных рабочих станциях могут
просматривать и удалять сообщения на
локальном почтовом сервере с помощью
клиентских почтовых программ. Соответственно,
почтовый сервер под управлением ОС Linux
должен иметь программное обеспечение,
поддерживающее работу протоколов POP3 и IMAP.
В этой лекции
дается описание двух программных пакетов для
поддержки протоколов POP3 и IMAP на сервере
электронной почты под управлением ОС Linux.
Программа qpopper
позволяет почтовому Linux-серверу
поддерживать с удаленными компьютерами
POP3-соединения, через которые последние
получают доступ к почтовым ящикам на сервере.
Программа IMAP
Вашингтонского университета поддерживает
доступ к почтовым ящикам пользователей как
по протоколу POP3, так и по протоколу IMAP.
Клиентские
протоколы электронной почты
Несмотря на
то что программы по поддержке POP3 и IMAP
выполняют сходные функции, методы, которые
используются в них для обеспечения доступа к
почтовым ящикам пользователей, абсолютно
различны. Оба эти протокола используются на
рабочих станциях клиентов для получения
почты с сервера, однако в каждом из них
используется различный принцип хранения
сообщений. Администратор почтовой системы
должен знать об этих принципиальных отличиях,
так как они очень важны для работы почтового
сервера.
В этом
разделе делается сравнительный анализ и
дается оценка этим двум клиентским
протоколам электронной почты, что поможет
администратору почтовой системы сделать
обоснованный выбор.
Протокол
POP3
Протокол
почтового офиса (Post Office Protocol —
POP3) в последнее время приобрел большую
популярность. Широко распространилась и
де-факто стала стандартом его третья версия
(отсюда и цифра 3 в его названии). На рис.
12.2 представлена схема получения почты с
почтового сервера с помощью протокола POP3.
Рис. 12.2. Работа протокола POP3
Клиентский
компьютер, согласно протоколу POP3, может
получать сообщения из почтового ящика
пользователя на сервере и помещать их в
папки на своем жестком диске. После
получения сообщения локальным компьютером
его можно удалить с сервера или оставить там
его копию. В любом случае просмотр
полученного с сервера сообщения полностью
зависит от программного обеспечения на
клиентском компьютере. Программы для
просмотра сообщений на рабочей станции часто
называют почтовыми клиентами.
Протокол POP3
пользуется широкой популярностью у
провайдеров сети Internet, так как им
приходится обслуживать сотни почтовых ящиков
на десятках серверов. Дело в том, что этот
протокол позволяет провайдерам Internet
принудительно удалять сообщения с серверов
электронной почты после того, как они были
получены из почтового ящика клиентами. Эта
функция позволяет экономить дисковое
пространство на почтовых серверах.
Единственное неприятное следствие выполнения
таких операций состоит в том, что вся почта
для определенного пользователя должна
храниться на одном компьютере, получающем
почту из ящика на сервере, а многим
пользователям необходимо работать с
электронной почтой как в офисе, так и дома
на своем домашнем ПК. В этом состоит главный
недостаток протокола POP3. Например, если
пользователь проверил свой почтовый ящик из
дому и получил 20 новых сообщений, то все
они уже хранятся на его домашнем ПК.
Добравшись же на работу и еще раз проверив
ящик со своей рабочей станции, он этих
сообщений на почтовом сервере не обнаружит.
Такая ситуация исключена при работе с
протоколом IMAP.
Протокол
IMAP
Протокол
интерактивного доступа к почтовому ящику
(Interactive Mail Access Protocol — IMAP)
менее известен в мире электронной почты, но
в настоящее время стремительно приобретает
популярность. В данный момент
распространяется версия 4 реализации 1 этого
протокола (сокращенно IMAP4rev1). На рис.
12.3 представлена схема работы протокола
IMAP.
Рис. 12.3. Работа протокола IMAP
Основное
отличие между протоколами POP3 и IMAP —
место хранения почтовых сообщений.
Протоколом POP3 предусматривается, что все
сообщения складируются на почтовом сервере,
но далее по запросу клиента передаются к
нему на рабочую станцию для дальнейшего
манипулирования ими. Довольно часто
сообщения, полученные клиентом, удаляются из
ящика на сервере. В протоколе IMAP все
сообщения обслуживаются на сервере
электронной почты в соответствующих папках.
Каждый пользователь имеет на сервере свою
папку с названием по умолчанию
INBOX. Все
полученные сообщения помещаются в папку
INBOX, откуда
пользователь их может читать. При каждом
подключении пользователя к серверу IMAP ему
выдается список сообщений, которые находятся
в папке INBOX.
Затем пользователь может получить все или
одно из них на любой компьютер в сети. Это
прекрасная возможность, особенно для тех
пользователей, которым в течение рабочего
дня необходимо получать доступ к своему
почтовому ящику с разных рабочих станций.
Кроме того, для улучшения управления
сообщениями можно создавать дополнительные
папки на почтовом сервере. Все папки
находятся на почтовом сервере, а не на
рабочей станции клиента, помните об этом!
Хотя эти свойства протокола IMAP облегчают
жизнь пользователям электронной почты, они
усложняют ее администраторам почтовых систем.
Поскольку все почтовые сообщения находятся
на сервере, то дисковое пространство на нем
становится для почтовой системы критическим
параметром.
POP3
против IMAP
Выбор
между POP3 и IMAP может быть не в пользу
ни того, ни другого. На многих узлах
обеспечивается поддержка обоих
протоколов, что дает пользователям
возможность самим определять способ
получения сообщений из почтового ящика
на сервере. Для пользователей,
работающих с электронной почтой в
основном в домашних условиях, более
приемлем протокол IMAP, в то же время
клиенты, которые соединяются с сервером
по запросу по коммутируемой линии, для
чтения сообщений с сервера обычно
пользуются протоколом POP3. При
использовании такого сценария работы с
почтой будьте осторожны. Клиенты,
получающие почту с помощью POP3, не
должны удалять сообщения с сервера,
иначе они не будут доступны в сеансах
IMAP. При использовании обоих протоколов
вы даете пользователю возможность выбора
сценария работы с почтовым сервером. К
сожалению, это влечет за собой и
увеличение нагрузки на персонал
администраторов почтовой системы.
Два
программных пакета, описанных в этой лекции,
позволяют составить представление об общих
чертах серверов POP3 и IMAP на базе ОС
Linux, включая работу с зашифрованными
паролями и использование файла паролей.
Программа
qpopper
Программа
qpopper была разработана в университете
Беркли, штат Калифорния, и распространяется
свободно. В настоящее время она является
собственностью корпорации Qualcomm, которая
занимается ее поддержкой и обслуживанием.
Кроме qpopper, эта корпорация также
занимается поддержкой клиентской почтовой
программы Eudora (об этом более подробно в
лекции 15, "Конфигурирование клиентов ЛВС").
Программа qpopper была написана для
обеспечения работы программного обеспечения
сервера POP3 на большинстве UNIX-платформ.
Хорошо она работает и с ОС Linux. Программа
qpopper поддерживает обычную аутентификацию
пользователя POP3 с помощью имени
пользователя и пароля; кроме того, она
поддерживает шифрование при аутентификации
APOP для POP3. Алгоритм APOP поддерживает
шифрование паролей с использованием базы
данных паролей, которую обслуживает
администратор почтовой системы.
Любую
информацию о программе qpopper вы можете
найти на Web-сайте:
http://www.eudora.com/freeware/servers.html
В настоящее
время текущая версия qpopper — 2.53.
Доступна также тестовая бета-версия —
3.0b18. Если в вашей системе используется
версия qpopper ниже, чем 2.41, откажитесь от
нее, так как в ранних версиях имеются
серьезные ошибки, связанные с переполнением
буферов. Этим могут воспользоваться хакеры
для проникновения на ваш почтовый сервер.
Как
получить qpopper
На сервере
FTP корпорации Qualcomm всегда имеется
последняя версия программы qpopper. Сервер
находится в сети Internet по адресу:
ftp.qualcomm.com.
Программа
qpopper находится в каталоге
/eudora/servers/unix/popper.
На момент написания книги в этом каталоге
были доступны три версии qpopper — 2.53,
3.0b17 и 3.0b18. Все они сжаты с помощью
стандартных утилит сжатия UNIX в отдельные
файлы. До перекачки файлов убедитесь в том,
что в программе для работы с FTP задан режим
для загрузки бинарных файлов
BINARY. В
качестве примера мы запросим файл
qpopper3.0b18.tar.Z:
ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper3.0b18.tar.Z
После того
как файл получен на локальный компьютер (бета-версия
3.0 размером немного меньше 2,5 Мбайт),
можно извлечь исходный код программы в
рабочий каталог с помощью команды:
tar -zxvf
qpopper3.0b18
По этой
команде утилита tar
сама создает подкаталог
qpopper3.0 в
рабочем каталоге и помещает туда файлы
исходного кода и необходимые подкаталоги.
Конфигурирование qpopper
Для проверки
операционной среды и создания
Makefile, в
котором содержатся ссылки на компилятор,
библиотеки и файлы языка С, в программе
qpopper применяется программа
configure.
Программу configure
можно запускать из командной строки с
определенными параметрами, которые позволяют
реализовать те или иные функции на сервере.
По умолчанию
при конфигурировании qpopper дополнительные
параметры в командной строке не задаются. В
этом случае конфигурирование сводится к
командам ./configure
и make. При
этом создается стандартный сервер POP3 без
поддержки APOP и без использования базы
данных теневых паролей, даже если таковая
имеется. Программа qpopper представляет
собой выполняемый файл с именем
popper,
который находится в подкаталоге
popper ниже
каталога qpopper3.0.
Вам необходимо скопировать эту программу в
общий для исполняемых модулей каталог с
правами пользователя
root. В документации к qpopper
рекомендуется использовать в качестве
рабочего каталог /usr/local/lib.
Для изменения
режимов работы сервера POP3 программа
popper может
запускаться с набором параметров. Все они
представлены в табл. 12.1.
Таблица 12.1. Параметры командной
строки программы popper
Параметр |
Описание |
-b |
Изменяет каталог
по умолчанию для циркулярных
сообщений |
-c |
Изменяет регистр
всех имен пользователей на
нижний регистр |
-d |
Включает режим
отладки |
-e |
Определяет
расширения POP3 |
-k |
Включает
поддержку Kerberos |
-s |
Включает сбор
статистики |
-t |
Определяет
альтернативные файлы отладки и
протокола |
-T |
Изменяет интервал
ожидания, заданный по умолчанию |
-R |
Запрещает
обратное преобразование адресов
клиентов |
Для запуска
программы qpopper используется программа
inetd.
Программа inetd
обнаруживает сетевые соединения и передает
информацию о них соответствующим программам
в зависимости от номера TCP- или UDP-порта,
по которому установлено соединение. Первая
часть конфигурирования
inetd для
работы с qpopper заключается в том, чтобы
обеспечить обнаружение соединения по TCP-порту
(для POP3 порт 110). Эта информация
находится в файле
/etc/services. Строка, разрешающая
действия с портом 110, выглядит примерно так:
pop-3 110/tcp #POP
version 3
После того
как вы убедились в наличии поддержки POP3 в
файле /etc/services,
следует включить ее и в конфигурационном
файле inetd.
Файл конфигурации для
inetd — /etc/inetd.conf.
В нем должна быть активирована строка,
отвечающая метке
pop-3 в файле
/etc/services и запускающая
соответствующую программу для организации
соединения по данному порту. Эта строка
должна выглядеть примерно так:
#pop-3 stream tcp
nowait root /usr/local/lib/popper popper
-s
Подобная
запись в inetd.conf
свидетельствует о том, что программа
popper
находится в каталоге
/usr/local/lib и разрешен сбор
статистических данных о ее работе (параметр
-s). По
умолчанию все статистические данные будут
включаться в стандартный файл отчета в ОС
Linux syslog.
В Mandrake Linux 6.0 это файл
/var/log/messages.
Чтобы новые
настройки в
inetd.conf вступили в силу, нужно
перезапустить демон-процесс
inetd. Это
можно сделать, послав ему сигнал
SIGHUP. Ниже
описана процедура перезапуска процесса:
[root@shadrach
lizzy]# ps ax | grep inetd
327 ? S 0:00 inetd
12600 pts/2 S 0:00 grep inetd
[root@shadrach lizzy]#kill -HUP 327
[root@shadrach lizzy]#
Правильность
установки программы qpopper можно проверить,
подключившись с помощью программы
telnet к порту
110 почтового сервера, как это показано в
листинге 12.1.
1 [erin@shadrach
erin]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is'^]'.
5 +OK QPOP (version 3.0b18) at
shadrach.smallorg.org starting.
6 QUIT
7 +OK Pop server at
shadrach.smallorg.org signing off.
8 Connection closed by foreign host.
9 [erin@shadrach erin]$
Листинг 12.1.
Пример сеанса POP3
В строке 1
листинга 12.1 показана команда на
подключение с помощью программы
telnet к порту
110 локального хоста. В строке 5 вы видите
приглашение, выданное программой qpopper.
Стандартная
конфигурация qpopper должна нормально
работать на обычных серверах POP3 под
управлением ОС Linux. Однако имеется
возможность задавать в qpopper более сложные
настройки, что сделает ее более
универсальной.
Поддержка
теневых паролей
Общее
свойство для ОС Linux — поддержка теневых
паролей. В традиционной конфигурации Linux
пароли и идентификаторы пользователей
хранятся в файле
/etc/passwd. К сожалению, этот файл
доступен для чтения любому пользователю
системы. Благодаря этому программа
login может
обслуживать запросы на регистрацию в системе,
но вместе с тем файл становится уязвимым для
хакеров (они могут загрузить его к себе на
компьютер и взломать с помощью специальных
программ). В этом случае первыми жертвами
хакеров становятся пользователи, которые
используют в качестве пароля свои имена или
названия любимых футбольных команд.
ОС
Linux и пароли
В лекции
14, "Администрирование почтового сервера",
вопросы обслуживания идентификаторов
пользователей и паролей в ОС Linux
обсуждаются более подробно.
Во многих
версиях ОС Linux для решения этой проблемы
применяется так называемый файл теневых
паролей. При этом идентификаторы
пользователей системы по-прежнему хранятся в
файле /etc/passwd,
но пароли в зашифрованном виде хранятся в
другом файле, который можно сделать
недоступным для других пользователей. Если
используется файл теневых паролей, то
программы, проверяющие идентификаторы
пользователей, должны обнаруживать его.
Определить,
используются ли в вашей системе теневые
пароли, можно с помощью анализа файла
/etc/passwd. В
листинге 12.2 приведен пример файла
passwd с
использованием теневых паролей.
1
root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:
3 daemon:x:2:2:daemon:/sbin:
4 adm:x:3:4:adm:/var/adm:
5 lp:x:4:7:ip:/var/spool/lpd:
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:
10 news:x:9:13:news:/var/spool/news:
11 uucp:x:10:14:uucp:/var/spool/uucp:
12 operator:x:11:0:operator:/root:
13 games:x:2:100:games:/usr/games:
14 gopher:x:13:30:gopher:/usr/lib/gopher-data:
15 ftp:x:14:50:FTP User:/home/ftp:
16 nobody:x:99:99:Nobody:/:
17 postgres:x:100:101:PostgreSQL Server:
/var/lib/pgsql:/bin/bash
18
lists:x:500:500:BeroList:/dev/null:/dev/null
19 xfs:x:101:103:X Font Server:/etc/X11/fs:/bin/false
20
rich:x:501:501:Rich:/home/rich:/bin/bash
21 barbara:x:502:502:Barbara's logon id:
/home/barbara: /bin/bash
22 katie:x:503:503:Katie's logon
id:/home/katie: /bin/bash
23 jessica:x:504:504 Jessica's logon
id:/home/jessica: /bin/bash
Листинг 12.2.
Пример файла /etc/passwd для ОС Linux
В листинге
12.2 представлено несколько идентификаторов
пользователей из файла
/etc/passwd.
Для разделения полей в записях используются
двоеточия (:).
В первом поле, как правило, хранится имя
пользователя, а во втором — зашифрованный
пароль. В файле, приведенном в качестве
примера, во втором поле всегда присутствует
буква х. Это
является для системы признаком того, что
используются теневые пароли. В данном случае
реальные пароли хранятся в файле
/etc/shadow.
Этот файл представлен в листинге 12.3.
1
root:$1$wkRtb3BgrTSWmezOiXx.ZGAtG/zGKU1:10863:0:99999:7:-1:-1:134537880
2 bin:*:10863:0:99999:7:::
3 daemon:*:10863:0:99999:7:::
4 adm:*:10863:0:99999:7:::
5 lp:*:10863:99999:7:::
6 sync:*:10863:0:99999:7:::
7 shutdown:*:10863:0:99999:7:::
8 halt:*:10863:0:99999:7:::
9 mail:*:10863:0:99999:7:::
10 news:*:10863:0:99999:7:::
11 uucp:*:10863:0:99999:7:::
12 operator:*:10863:0:99999:7:::
13 games:*:10863:0:99999:7:::
14 gopher :*:10863: 0:99999:7 ::
15 ftp:*:10863:0:99999:7:::
16 nobody:*:10863:0:99999:7:::
17 postgres:!!:10863:0:99999:7:::
18 lists:!!:10863:0:99999:7:::
19 xfs:!!:10863:0:99999:7:::
20 rich:LMQ0lb3GwZr1s:10863 0:99999:7:::
21 barbara: MDOb23ddXdgPP:
10863:0:99999:7:::
22 katie:$1$ORlQdo1l$ggBH8mFNPGCBUUHMEjXWe1:10863:0:99999:7:1:-1:
134537888
23 jessica:$1$XEd8PKaP$AhJre7HN3UBcKjBBGeL1d1:10882:0:99999:7:-1:-1:
134537872
Листинг 12.3.
Пример файла /etc/ shadow для ОС Linux
Из листинга
12.3 видно, что во втором поле содержатся
зашифрованные пароли пользователей. Для
получения доступа к файлу теневых паролей
программа qpopper должна быть скомпилирована
соответствующим образом.
Если перед
этим вы компилировали qpopper, то необходимо
очистить выполняемый и объектный файлы в
рабочем каталоге. Это делается с помощью
команды, задаваемой в каталоге
qpopper3.0:
make clean
По этой
команде будут удалены добавленные или
измененные во время установки файлы. Далее
необходимо запустить сценарий конфигурации с
параметром, который включает поддержку
теневых паролей. Формат команды следующий:
./configure --
enable-specialauth
По этой
команде с помощью параметров, необходимых
для работы компилятора GNU
gcc по
включению файлов теневых паролей, вновь
создается Makefile.
После того как программа конфигурации
закончит создание
Makefile, нужно снова запустить
программу make.
При этом в подкаталоге
popper
создается новый выполняемый файл
popper. После
этого вам придется еще раз скопировать файл
в каталог, указанный в файле конфигурации
inetd.conf (для
этого вы должны обладать правами
пользователя root).
При этом не нужно перезапускать
процесс-демон inetd,
так как содержимое файла
/etc/inetd.conf
не изменялось. После копирования нового
выполняемого файла в соответствующий каталог
можно проверить правильность конфигурации с
помощью программы
telnet. Для этого нужно обратиться на
порт 110. В листинге 12.4 приводится пример
такого сеанса.
1 [riley@shadrach
riley]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK QPOP (version 3.0b18) at
shadrach.smallorg.org starting.
6 USER riley
7 +OK Password required for riley.
8 PASS firetruck
9 +OK riley has 3 messages (1162
octets).
10 QUIT
11 +OK Pop server at
shadrach.smallorg.org signing off.
12 Connection closed by foreign host.
13 [riley@shadrach riley]$
Листинг 12.4.
Пример входа в систему с помощью
протокола POP3
Вы видите,
как в строке 1 листинга 12.4 открывается
сеанс с помощью
telnet с портом 110 (порт POP3)
локального почтового сервера. В строке 5
выдается стандартное сообщение программы
qpopper о том,
что она запущена и готова к работе. В
строках 6 и 8 пользователь вводит свои имя и
пароль, а в строке 9 программа
qpopper
уведомляет о том, что пароль и имя
пользователя опознаны и в его почтовом ящике
находятся три новых сообщения.
Поддержка
проверки подлинности с помощью APOP
Как видно из
листинга 12.4, клиент почтовой системы
должен сообщать серверу
qpopper свое
имя и пароль в текстовом виде. Если
предположить, что пользователь
riley
проверяет свой почтовый ящик по сети
Internet, то очевидно, что существует
вероятность перехвата его имени и пароля
хакерами, которые могут использовать эту
информацию в корыстных целях.
Однако для
протокола POP3 разработано решение этой
проблемы.
Как уже
упоминалось в лекции 6, существует несколько
альтернативных методов проверки подлинности
пользователя. В программе
qpopper
поддерживается метод аутентификации
пользователей APOP. Для возможности
поддержки APOP программой
qpopper
требуется ее перекомпиляция.
Сначала
необходимо удалить объектные и выполняемые
файлы, созданные ранее; воспользовавшись для
этого командой
make clean
Затем снова
запустите сценарий конфигурирования, включая
параметры, определяющие местоположение базы
данных паролей APOP, и идентификатор
пользователя, который будет администратором
APOP. Для это задайте следующую команду:
./configure
–-enable –-apop=/etc/pop.auth -–with-popuid=pop
По этой
команде создается
Makefile, где в качестве базы данных
паролей используется файл
/etc/pop.auth,
а администратором этой базы данных является
пользователь pop.
Затем с помощью команды
GNU make можно
создать новые выполняемые файлы. При
использовании APOP создаются два выполняемых
файла — popper
и popauth.
Как и в
предыдущем случае, скопируйте новый
выполняемый файл
popper в каталог, указанный в файле
inetd.conf (например,
/usr/local/lib).
С помощью файла
popauth можно добавлять пользователей
в базу данных APOP, которая указывается в
строке конфигурации.
Для
тестирования новой конфигурации зайдите с
помощью telnet
на порт 110 — вы увидите измененное
стандартное приглашение сервера. В листинге
12.5 приведен пример сеанса работы с
сервером qpopper
с аутентификацией пользователей посредством
APOP.
1 [carol@shadrach
carol]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK QPOP (version 3.0b18) at
shadrach.smallorg.org starting.
<17166.940368317@shadrach.smallorg.org>
6 QUIT
7 +OK Pop server at
shadrach.smallorg.org signing off.
8 Connection closed by foreign host.
9 [carol@shadrach carol]$
Листинг 12.5.
Пример стандартного сообщения от сервера
qpopper при использовании APOP
В строке 1
листинга 12.5 задается команда
telnet на
подключение к порту, обслуживающему сервер
POP3. В строке 5 вы видите новое стандартное
приглашение сервера, сгенерированное
программой qpopper.
Как видите, оно отличается от аналогичных
приглашений из листингов 12.1 и 12.4. В
данном случае в него включена информация о
работе APOP. Как уже отмечалось в лекции 6,
для работы по протоколу APOP требуется
задать начальные значения для хеширования с
заранее известным ключом (в нашем случае в
качестве ключа выступает пароль). Его в
зашифрованном виде вы можете наблюдать в
приглашении сервера POP3. Обе стороны,
участвующие в соединении по POP3, должны
знать ключ заранее, чтобы при хешировании
зашифрованные значения могли быть распознаны
на удаленной стороне. Сервер
qpopper хранит
все ключи в аутентификационной базе данных.
База данных
АРОР создается с помощью команды
./popauth -init
С помощью
этой команды создается новая
аутентификационная база данных (например, в
каталоге /etc/pop.auth).
При этом пользователь с идентификатором,
указанным в параметре
-with-popuid, является
администратором базы данных АРОР и имеет
право добавлять в нее пользователей. Одна из
проблем, часто возникающих при использовании
qpopper,
состоит в том, что после занесения
пользователя в аутентификационную базу
данных ему приходится подключаться к серверу
POP3 только через АРОР, т.е. он уже не
сможет подключиться к нему без
аутентификации.
Для того
чтобы добавить в базу данных нового
пользователя, администратор АРОР должен
задать команду:
popauth -user
user,
где
user —
принятое в ОС Linux имя пользователя.
Программа popauth
далее запросит у администратора пароль,
который будет использоваться данным
пользователем при аутентификации по АРОР.
Этот пароль может отличаться от обычного
пароля, принятого в ОС Linux. Для удаления
пользователя из базы данных АРОР задается
команда:
popauth -delete
user,
где
user — имя
пользователя в ОС Linux, которое удаляется
из базы. С помощью команды
popauth,
задаваемой без параметров, пользователи
могут изменять пароли АРОР самостоятельно.
Циркулярные сообщения qpopper
Еще одно
полезное свойство
qpopper — рассылка циркулярных
сообщений. Циркулярные сообщения — это
сообщения, посылаемые сразу всем
пользователям сервера POP3. При подключении
пользователя к серверу POP3 программа
qpopper
проверяет каталог циркулярных сообщений
определяя, какие из них не были прочитаны.
Все непрочитанные циркулярные сообщения
добавляются к обычным почтовым сообщениям в
почтовые ящики пользователей. Администратор
почтовой системы может запретить
пользователю отправку циркулярных сообщений,
ограничив доступ к каталогу циркулярных
сообщений.
Для
обеспечения работы с циркулярными
сообщениями прежде всего удалите все
ненужные объектные и выполняемые файлы, если
уже имеется скомпилированная версия
qpopper. Как
вы уже знаете, это делается с помощью
команды:
make clean
Затем следует
запустить программу
configure с параметром, разрешающим
использование циркулярных сообщений. Далее
вы можете запустить программу
configure с
несколькими необходимыми параметрами, если,
кроме работы с циркулярными сообщениями,
требуется поддержка теневых паролей и работа
с АРОР. Формат команды на включение
поддержки теневых паролей и циркулярных
сообщений следующий:
./configure
-–enable-bulletins=/var/spool/bulls
-–enable-specialauth,
где параметр
-–enable-bulletins
указывает на каталог, в котором будут
храниться циркулярные сообщения. После
выполнения сценария конфигурации необходимо
запустить утилиту GNU
make для создания выполняемого файла
popper. Затем
следует еще раз скопировать выполняемый файл
popper в
каталог, указанный в конфигурационном файле
inetd.conf.
Работая с
циркулярными сообщениями, для каждого из них
необходимо создавать отдельный файл и
помещать его в каталог циркулярных
сообщений. Имена файлов должны быть
представлены в следующем формате:
nnnnn.string,
где
nnnnn
представляет собой пятизначный номер
циркулярного сообщения, а
string —
строка текста для идентификации циркулярного
сообщения (например,
00001.Test_Bulletin). Все циркулярные
сообщения должны нумероваться, чтобы
программа qpopper
могла отслеживать, какие сообщения были
прочитаны, а какие нет. После получения
клиентом POP3 циркулярного сообщения оно не
будет отображаться в списке сообщений,
содержащихся в его почтовом ящике. Текст в
циркулярном сообщении должен соответствовать
формату RFC 822. В листинге 12.6 приведен
пример циркулярного сообщения.
1 From pop Wed Oct
20 18:25:00 1999
2 Date: Wed, 20 Oct 1999 18:25:00 (EST)
3 From: "Mail Administrator"
<postmaster@shadrach.smallorg.org>
4 Subject: Test bulletin
5
6 This is a test of the Qpopper mail
bulletin system. This is only a test
7 Had this been a real bulletin you
would have been instructed to do
8 something important, like log off of
the system.
9 This is the end of the bulletin test.
Листинг 12.6.
Пример циркулярного сообщения,
рассылаемого программой qpopper
Пока
циркулярное сообщение находится в каталоге
циркулярных сообщений, оно может быть
загружено. После его удаления из каталога
новые клиенты сервера POP3 не смогут
принимать его в свои почтовые ящики.
Программа
IMAP Вашингтонского университета
Один из
наиболее широко распространенных программных
пакетов для поддержки POP3 и IMAP для
платформы Linux был разработан в
Вашингтонском университете. В пакет входят
программы, реализующие функции сервера POP3
и сервера IMAP4rev1. В этом разделе
рассматривается установка и конфигурирование
программного обеспечения UW IMAP (буквы UW
от англ. Вашингтонский университет —
University of Washington) на сервере под
управлением ОС Linux.
Большинство
дистрибутивов ОС Linux поставляется с
бинарным пакетом UW IMAP. В Mandrake Linux
6.0 это пакет
imap-4.5-5mdk.i586.rpm. Для его
установки можно использовать стандартную
программу инсталляции пакетов — RPM. Команда
на установку пакета на вашем компьютере
выглядит следующим образом:
rpm -Uvh i
imap-4.5-5mdk.i586.rpm
В настоящее
время Вашингтонским университетом
поддерживается Web-сайт с описанием
программного обеспечения IMAP. Его адрес в
сети Internet:
http://www.washington.edu/imap/.
Там можно
найти любую информацию о проекте UW IMAP,
разрабатываемом в университете, а также
ссылки на текущую версию программы (в
настоящее время 4.6). Получить исходный код
дистрибутива этой версии вы можете по ссылке,
указанной на Web-сайте. Кроме того, можно
получить текущую версию этой программы
непосредственно из каталога
/imap на FTP-сервере
ftp.cac.washington.edu. Файл
imap.tar.Z, на
который указывает ссылка, всегда содержит
новую версию программы. На этом FTP-сервере
доступна для загрузки также тестовая
бета-версия 4.7. Исходный код программы
поставляется в файле, сжатом стандартными
средствами UNIX. Имя этого файла —
imap-4.7.BETA.tar.Z.
Помните, что при получении данного файла по
FTP следует использовать режим
BINARY.
После того
как вы получите исходный код, его нужно
распаковать из архива в рабочий каталог:
tar -zxvf
imap-4.7.BETA.tar.Z
С помощью
этой команды создается подкаталог
imap-4.7.BETA,
и в него помещается исходный код
программного пакета.
При
компиляции программы UW IMAP, в отличие от
qpopper,
никакие дополнительные параметры не
используются. Главным требованием при
создании выполняемых файлов программного
пакета IMAP из исходного кода является
точное знание версии операционной системы.
Это необходимо для того, чтобы использовать
соответствующий раздел
Makefile. В
табл. 12.2 представлены параметры для
создания IMAP в различных версиях ОС Linux.
Таблица 12.2. Параметры make для UW
IMAP
Параметр |
Описание |
lnx |
Традиционные
системы семейства Linux |
lnp |
Системы Linux со
встроенными модулями
аутентификации Pluggable
Authentification Modules (PAM) |
sl4 |
Системы Linux c
использованием
-lshadow
для паролей |
sl5 |
Системы Linux с
использованием теневых паролей |
slx |
Системы Linux c
использованием
-lcrypt
для паролей |
В Mandrake
Linux 6.0 для разрешения использования
теневых паролей следует задать параметр
slx:
make slx
С помощью
этой команды из исходного кода компилируются
выполняемые модули IMAP, которые помещаются
в соответствующие подкаталоги. Затем
устанавливаются и конфигурируются отдельные
модули IMAP.
Конфигурирование UW POP3
Для
обеспечения нормальной работы программного
обеспечения сервера UW POP3 его необходимо
установить и соответствующим образом
сконфигурировать. Вначале необходимо
скопировать выполняемые файлы в общий
каталог. Поскольку программы
ipop3d и
imapd
сконфигурированы для использования совместно
c программой tcpd,
то лучше всего поместить их в каталог
/usr/sbin.
Однако программа
ipop3d находится в подкаталоге
ipopd каталога
imap-4.7.BETA.
В этот же каталог помещается и сервер POP2 —
ipop2d. Это
делается лишь с целью обеспечения
совместимости со старыми почтовыми
программами, в которых отсутствует поддержка
протокола POP3. Если создается новая система
электронной почты, то желательно, конечно,
обеспечить поддержку протокола POP3 в ней.
Для работы с почтовым сервером по протоколу
POP3 имеется достаточно программ,
реализующих функции клиентов электронной
почты (см. лекцию 15, "Конфигурирование
клиентов ЛВС"). Помните, что копирование
файла ipop3d в
каталог /usr/sbin
должно выполняться с правами пользователя
root.
После того
как выполняемые модули помещены в
соответствующий каталог, необходимо
настроить файлы конфигурации
inetd. Вначале
измените файл
/etc/services. Убедитесь, что в нем
сконфигурирован соответствующий порт TCP.
Строка конфигурации для разрешения работы
POP3 должна выглядеть примерно так:
pop-3 110/tcp #
POP version 3
Эта строка
сообщает программе
inetd о возможности соединения с
портом TCP номер 110. Причем инициировать
соединение может программа, определенная в
строке файла
/etc/inetd.conf, которая описана
меткой pop-3.
В
конфигурационном файле определяется, где
расположены выполняемые модули. При
установлении соединения они будут вызываться
именно из каталогов, указанных в этом файле.
Строка в файле
/etc/inetd.conf для организации
работы по протоколу POP3 выглядит следующим
образом:
pop-3 stream tcp
nowait root /usr/sbin/tcpd ipop3d
В строке
определяется, что программы
tcpd и
ipop3d должны
находиться в каталоге
/usr/sbin. Метка
pop-3 в данном
случае указывает на такую же метку в файле
/etc/services.
Чтобы
настройки, заданные в файле
inetd.conf,
возымели действие, необходимо перезапустить
демон-процесс inetd.
Для этого процессу посылается сигнал
SIGHUP. Ниже
приведены команды, с помощью которых можно
перезапустить процесс-демон:
[root@shadrach
erin]# ps ax | grep inetd
327 ? S 0:00 inetd
12600 pts/2 S 0:00 grep inetd
[root@shadrach erin]# kill -HUP 327
[root@shadrach erin]#
После
перезапуска демона
inetd можно провести тестирование
программного пакета UW IMAP. В листинге 12.7
показан пример тестирования сервера POP3.
1 [lizzy@shadrach
lizzy]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.63 server ready
6 USER lizzy
7 +OK User name accepted, password
please
8 PASS SINGING
9 +OK Mailbox open, 5 messages
10 QUIT
11 +OK Sayonara
12 Connection closed by foreign host.
13 [lizzy@shadrach lizzy]$
Листинг 12.7.
Пример сеанса с сервером POP3
В строке 1
листинга 12.7 показана организация сеанса
программы telnet
с портом POP3 — 110. В строке 5 вы видите
стандартное сообщение сервера UW POP3, в
котором говорится, что сервер запущен и
готов к работе.
Одна из
дополнительных возможностей, которые
обеспечивает сервер UW POP3, — использование
АРОР для аутентификации пользователей.
Реализация АРОР в UW POP3 намного проще, чем
в qpopper, но
служит той же цели.
Обнаружив
файл
/etc/cram-md5.pwd, сервер UW POP3
автоматически обеспечивает поддержку
протоколов аутентификации APOP и CRAM-MD5. В
обоих случаях используется один и тот же
алгоритм хеширования ключа с определенным
значением для создания зашифрованного пароля,
который затем будет применяться при
аутентификации. Как уже было описано в
лекции 6, значение, с которым проводится
хеширование, представляется в стандартном
приглашении сервера POP3. Для успешной
аутентификации и клиент, и сервер должны
заранее знать ключ, чтобы хешировать его с
заданным значением.
При работе с
пакетом UW POP3 ключи хранятся в файле
/etc/cram-md5.pwd.
В каждой строке этого файла хранятся имя
пользователя и ключ, который будет им
использоваться. В листинге 12.8 представлен
пример файла
/etc/cram-md5.pwd.
1 rich guitar
2 barbara reading
3 riley firetruck
4 haley starwars
5 katie boxcar
6 jessica sharks
Листинг 12.8.
Пример файла /etc/cram-md5.pwd
Как видно из
листинга 12.8, база данных
cram-md5.pwd
является текстовой. Для того чтобы защитить
пароли от посторонних, задайте режим доступа
к файлу 600,
таким образом, другие пользователи в системе
не смогут просмотреть его. Это означает, что
администратору почтовой системы для
изменения паролей необходимо обладать
правами пользователя
root. Это также означает, что
пользователи не смогут изменять свои пароли
самостоятельно.
Для того
чтобы проверить, включена ли поддержка АРОР,
подключитесь с помощью
telnet к порту
110 для работы по протоколу POP3. При этом
вы должны увидеть в приглашении сервера
значение, с которым будет производиться
хеширование. В листинге 12.9 представлен
пример сеанса работы сервера POP3 с
поддержкой АРОР.
1 [kevin@shadrach
kevin]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POPS v7.63 server ready
<4d61.380e35cc@localhost>
6 USER kevin
7 +OK User name accepted, password
please
8 PASS dinosaur
9 +OK Mailbox open, 0 messages
10 QUIT
11 +OK Sayonara
12 Connection closed by foreign host.
13 [kevin@shadrach kevin]$
Листинг 12.9.
Пример сеанса работы сервера POP3 с
поддержкой АРОР
Здесь, как и
в предыдущем листинге, представлен пример
сеанса telnet
с портом сервера POP3. Однако стандартное
приглашение сервера в строке 5 отличается от
представленного в листинге 12.7. Как видите,
в данном случае в нем приводится значение
АРОР. В строке 6 демонстрируется работа АРОР
в программе UW POP3. В отличие от qpopper,
пользователи UW POP3 могут подключаться к
серверу как с помощью АРОР, так и
посредством обычного имени и пароля. Это
частично решает проблему тех пользователей,
которые подключаются к почтовому серверу с
различных ПК и с помощью различных почтовых
программ.
Конфигурирование UW IMAP
В состав
программного обеспечения сервера UW IMAP,
как и сервера POP3, входит программа
inetd. В
конфигурационных файлах для обеспечения
работы IMAP требуются определенные строки.
Так, в файле
/etc/services необходимо задать
строку:
imap2 143/tcp imap
# Interim Mail Access Proto v2
Эта строка
приведена для Mandrake Linux 6.0. Вы можете
справедливо заметить, что в ней задается
конфигурация для протокола IMAP2, однако в
действительности здесь используется
псевдоним для imap.
Таким образом программа
inetd будет
искать соответствующую метку в файле
inetd.conf. (В
системе Mandrake тоже иногда могут быть
ошибки!).
Для поддержки
сервера IMAP необходимо также внести
изменения в файл
/etc/inetd.conf. Строка конфигурации,
где выполняются эти действия, должна
выглядеть таким образом:
imap stream tcp
nowait root /usr/sbin/tcpd imapd
Как видите,
здесь задается каталог, в котором должны
находиться программы
tcpd и imapd.
Для того
чтобы новые настройки возымели действие,
необходимо перезапустить демон
inetd. Для
этого ему нужно послать сигнал
SIGHUP, как
описано в разделе "Конфигурирование UW
POP3".
После
перезапуска демона протестируйте сервер IMAP,
подключившись с помощью
telnet к порту
IMAP —143. В листинге 12.10 представлен
пример сеанса работы с сервером IMAP.
1 [jessica@shadrach
jessica]$ telnet localhost 143
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 * OK localhost IMAP4rev1 v12.261
server ready
6 a1 LOGIN jessica sharks
7 a1 OK LOGIN completed
8 a2 SELECT INBOX
9 * 0 EXISTS
10 * 0 RECENT
11 * OK [UIDVALIDITY 940284862] UID
validity status
12 * OK [UIDNEXT 2] Predicted next UID
13 * FLAGS (\Answered \Flagged \Deleted
\Draft \Seen)
14 * OK [PERMANENTFLAGS (\* \Answered
\Flagged \Deleted \Draft \Seen)]
Permanent flags
15 a2 OK [READ-WRITE] SELECT completed
16 a3 LOGOUT
17 * BYE shadrach.smallorg.org IMAP4rev1
server terminating connection
18 a3 OK LOGOUT completed
19 Connection closed by foreign host.
20 [jessica@shadrach jessica]$
Листинг 12.10.
Пример сеанса работы с сервером IMAP
Резюме
Когда вся
почта для клиентов сети собирается на
почтовом сервере под управлением ОС Linux,
необходимо обеспечить клиентов возможностью
забирать ее к себе на рабочие станции. В
настоящее время наиболее широкое
распространение в качестве основных средств
для работы с почтовым сервером получили
протоколы IMAP и POP3. В каждом из них есть
свои сильные и слабые стороны. Для работы на
почтовом сервере с ОС Linux в основном
используются два программных пакета — сервер
POP3 qpopper и
серверы POP3 и IMAP Вашингтонского
университета (программа UW IMAP). Оба эти
пакета можно легко установить и
сконфигурировать на почтовом сервере.
Имеется также достаточное количество
клиентских почтовых программ, в функции
которых входит проверка содержимого почтовых
ящиков на сервере. В лекции 15, "Конфигурирование
клиентов ЛВС", подробно описан процесс
настройки этих программ для работы с
серверными программами POP3 и IMAP. В
следующей лекции обсуждаются вопросы
конфигурирования почтового сервера под
управлением ОС Linux для работы в различных
сетях.
|