Опубликован: 21.11.2006 | Доступ: свободный | Студентов: 1811 / 140 | Оценка: 4.09 / 4.00 | Длительность: 38:34:00
Лекция 12:

Установка и конфигурирование POP3 и IMAP

В листинге 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 разработано решение этой проблемы.

Как уже упоминалось в "Протокол POP3" , существует несколько альтернативных методов проверки подлинности пользователя. В программе 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. Как уже отмечалось в "Протокол POP3" , для работы по протоколу 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, задаваемой без параметров, пользователи могут изменять пароли АРОР самостоятельно.