voliuf.narod.ru

главная

друзья

помощь сайту

Администрирование почтовых серверов sendmail  

Бесплатные учебники по темам

Партнерская программа

1.Принципы организации систем электронной почты

2.Использование ОС Linux в качестве сервера электронной почты

3.Установка телекоммуникационного оборудования в ОС Linux

4.DNS и доменные имена

5.Протокол SMTP

6.Протокол POP3

7.Протокол IMAP

8.Протокол РРР

9.Протокол UUCP

10.Программа sendmail

11.Установка и конфигурирование sendmail

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

13.Подключение почтового сервера к провайдеру Internet

14.Администрирование почтового сервера

15.Конфигурирование клиентов ЛВС

16.Поддержка удаленных клиентов

17.Почтовые псевдонимы и преобразование адресов

18.Списки рассылки

19.Маршрутизация IP в ОС Linux

 

Администрирование почтовых серверов sendmail 
6.Протокол POP3
  

В предыдущей лекции описывался процесс пересылки почтового сообщения пользователю удаленного компьютера с использованием протокола SMTP. В начале 80-х годов пользователь, которому предназначалось электронное письмо, должен был находиться за терминалом и быть зарегистрированным в системе, чтобы получить и прочесть электронное сообщение с помощью примитивной программы текстового процессора. Сегодня положение вещей в корне изменилось. Пользователи компьютеров хотят иметь свободу во времени и пространстве при чтении своей электронной почты; кроме того, они хотят это делать с помощью приятных графических интерфейсов. Если по каким-либо причинам пользователь не может быть допущен непосредственно на почтовый сервер под управлением ОС Linux для чтения своей почты в среде X Window, то наилучший выход в такой ситуации — организовать такому пользователю соединение с сервером по локальной сети. Тогда с помощью соответствующего клиентского программного обеспечения на локальном ПК пользователь сможет обращаться к своему почтовому ящику на сервере. Протокол, который позволяет считывать почтовые сообщения с удаленного почтового сервера, описан в RFC 1939 и назван протоколом почтового офиса Post Office Protocol (POP). В настоящее время используется версия 3 этого протокола, отсюда название — POP3.

 

Описание протокола POP3

Подобно протоколу SMTP (описанному в лекции 5, "Протокол SMTP"), работа протокола POP3 также основана на использовании набора команд. Сервер POP3 прослушивает TCP-порт номер 110 на предмет запросов на установку соединения и отвечает на них, выдавая специальную строку-приглашение, которая сигнализирует о его готовности к приему команд. Один из методов убедиться в том, что на данном хост-компьютере запущен сервер POP3 — попытаться зайти с помощью telnet на порт 110. Если при этом вы получите соответствующее приглашение сервера POP3, значит, POP3-сервер работает на данном компьютере. В листинге 6.1 представлен пример такого сеанса.

 
1 [frank@shadrach frank]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 QUIT
7 +OK Sayonara
8 Connection closed by foreign host.
9 [frank@shadrach frank]$

Листинг 6.1. Пример сеанса с клиентом POP3

В строке 1 показан пример вызова соединения с портом TCP 110 на локальном компьютере с помощью команды telnet. Строка 5 представляет собой приглашение, выдаваемое сервером POP3. В строке 6 клиентом задается POP3-команда завершить сеанс работы с сервером, а в строке 7 представлено прощальное сообщение, выдаваемое сервером POP3. По завершении сеанса сервер POP3 инициирует закрытие TCP-соединения. Как правило, клиент отреагирует на закрытие TCP-соединения.

 

Первое, что происходит при сеансе POP3, — это регистрация клиента на сервере. Существует несколько способов регистрации. После регистрации на сервере POP3 клиент посылает на сервер запрос с требованием проверить, имеются ли в почтовом ящике с соответствующим идентификатором пользователя сообщения. В функции протокола POP3 не входит обеспечение клиента возможностями манипулирования сообщениями внутри его почтового ящика. Протокол POP3 всего лишь посылает список имеющихся у него для клиента сообщений, и высылает каждое из них клиенту. Клиент же может производить операции над сообщениями, только после получения их к себе на локальный компьютер из почтового ящика.

 

Методы установления подлинности клиента в POP3

После того как клиент POP3 установил TCP-соединение с сервером, он должен идентифицировать себя. Это одновременно является подтверждением того, что сообщения посылаются именно тому пользователю, для которого они предназначены. Стандартная проверка подлинности пользователя в POP3 выполняется с помощью набора команд для идентификации пользователя и пароля. К сожалению, при регистрации на сервере передача идентификатора пользователя и пароля осуществляется в текстовом виде. Конечно, такой метод использовать опасно, особенно в тех случаях, когда при установлении соединения с удаленным сервером пакеты проходят через неизвестные сети. Устранить эти недостатки попытались в документе RFC 1734, где описывается более безопасный способ подключения к серверу POP3 посредством команды AUTH. В последующих разделах описываются оба метода проверки подлинности клиентов, а также третий, более новый метод под названием АPOP.

 

Команды USER/PASS

Комбинация команд USER/PASS — самая простая в реализации, но в то же время самая опасная с точки зрения безопасности. Каждый раз при соединении клиента с сервером POP3 с целью проверки почты по сети посылается его идентификатор пользователя и пароль в виде текста в формате ASCII. Это просто находка для хакера!

 

Формат этих команд следующий:

 
USER username
PASS password

В роли username выступает идентификатор пользователя для сервера POP3. Соответственно, параметр password означает пароль для этого идентификатора пользователя. В листинге 6.2 показан пример сеанса POP3 с применением комбинации USER/PASS.

 
1 [melanie@shadrach melanie]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 USER melanie
7 +OK User name accepted, password please
8 PASS toybox
9 +OK Mailbox open, 0 messages
10 QUIT
11 +OK Sayonara
12 Connection closed by foreign host.
13 [melanie@shadrach melanie]$

Листинг 6.2. Пример регистрации клиента POP3 с использованием USER/PASS

В строке 6 клиент посылает команду USER со своим идентификатором пользователя в текстовом виде. В ответ сервер POP3 запрашивает пароль для этого пользователя. В строке 8 клиент посылает пароль на сервер. После того как получен пароль, производится сравнение комбинации идентификатор пользователя/пароль с имеющимися на сервере. Единственная защита сервера POP3 заключается в том, что сервер не возвращает ответ клиенту о неправильности идентификатора пользователя, а дожидается ввода пароля. Это исключает возможность подбора хакерами корректных идентификаторов пользователя для данного хоста POP3. В листинге 6.3 можно наблюдать разницу между реакцией на неправильный пароль для корректного идентификатора и на неправильный идентификатор пользователя.

 
1 [rich@shadrach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS hello
9 -ERR Bad login
10 USER baduser
11 +OK User name accepted; password please
12 PASS hello
13 -ERR Bad login
14 QUIT
15 +OK Sayonara
16 Connection closed by foreign host.
17 [rich@shadrach rich]$

Листинг 6.3. Пример попыток регистрации на сервере POP3

В строке 6 задано корректное имя пользователя, но в 8-й строке набран неправильный пароль. Ответ сервера POP3 в строке 9 вполне понятен и в пояснениях не нуждается. В строке 10 делается попытка подключиться к серверу с неправильным идентификатором пользователя, на что в строке 13 получен соответствующий ответ сервера POP3. Обратите внимание, что и в той, и в другой ситуации сервер сгенерировал одинаковое сообщение об ошибке. Это также препятствует подбору хакерами корректных идентификаторов пользователя с помощью обращения к серверу POP3. Конечно, имеется и обратная сторона медали: такие сообщения могут ввести администраторов почтовых систем в заблуждение при поиске неполадок.

 

Применение идентификатора пользователя и пароля открытым текстом при работе с POP3 становится еще более опасным, когда пользователь проверяет содержимое почтового ящика несколько раз в день (или в час). Большинство клиентских программ для работы с электронной почтой можно конфигурировать так, чтобы они обращались к почтовому ящику через определенные интервалы времени. Это подарок для хакера, так как при помощи сетевого анализатора он легко может получить идентификатор и пароль пользователя. Эти недостатки были в некоторой степени устранены с помощью команды APOP, описанной в RFC 1939.

 

Команда APOP

Для входа на сервер POP3, вместо комбинации команд USER/PASS, клиент может использовать команду APOP. Команда APOP позволяет клиенту регистрироваться на сервере, не посылая пароль в текстовом виде, — она использует зашифрованную с помощью алгоритма MD5 версию пароля. Формат команды APOP приведен ниже:

 
APOP name digest

Аргумент name — это обычный идентификатор пользователя, который регистрируется на сервере. Параметр digest позволяет клиенту посылать на сервер закодированное MD5 значение digest, с помощью которого и производится проверка подлинности пользователя. Алгоритм шифрования MD5 был разработан Роном Райвестом (Ron Rivest) и описан в документе RFC 1321. Этот алгоритм основан на использовании алгоритма хеширования для наложения известного сообщения на секретное слово (ключ), которое известно лишь двум оконечным точкам. Признаком работы алгоритма хеширования является наличие параметра digest, который передается вместе с именем клиента. Очевидно, что для нормальной работы такой схемы нужно, чтобы клиенту и серверу заранее был известен ключ. В роли известного сообщения, налагаемого на ключ, может выступать приглашение сервера POP3 при установлении с ним TCP-соединения. Как правило, в роли такого сообщения выступает идентификатор, который следует за именем хоста сервера POP3. Пример сеанса с использованием APOP представлен в листинге 6.4.

 
1 [chris@shadrach chris]$ telnet meshach 110
2 Trying 198.162.0.5...
3 Connected "to meshach.smallorg.org.
4 Escape character is '^]'.
5 +OK POP3 server ready <1896.698370952@meshach.smallorg.org>
6 APOP chris c4c9334bac560ecc928e58001b3e22fb
7 -OK maildrop has 1 message (369 octets)
8 QUIT
9 +OK Sayonara
10 Connection closed by foreign host.
11 [chris@shadrach chris]$

Листинг 6.4. Пример сеанса с использованием APOP

В строке 5 показано приглашение сервера POP3. Заранее известное сообщение включает в себя метку времени и имя хоста в угловых скобках. Все эти сведения используются в качестве заранее известного сообщения. В строке 6 вводится команда APOP с заданными идентификатором пользователя и хешированным MD5 значением известного сообщения, а также с секретным ключом. При этом реальный пароль в текстовом виде нигде не передается. Если нет секретного ключа, то пароль клиента можно получить из закодированной последовательности, лишь взломав код MD5, а это довольно сложно.

 

Однако следует отметить, что поддержка команды APOP не является обязательной для протокола POP3. Проверить, поддерживается ли эта команда вашим сервером можно, проанализировав приглашение сервера POP3. Как видно из листинга 6.1, сервер POP3, приведенный в этом примере, не выводит соответствующее сообщение о поддержке алгоритма шифрования MD5. Следовательно, при регистрации на этом сервере клиент не сможет воспользоваться возможностями команды APOP. В таком случае попытка использования команды APOP приведет к появлению сообщения об ошибке.

 

Команда AUTH

Еще один метод повышения безопасности при регистрации пользователя — применение команды AUTH, описанной в RFC 1734. Команда была позаимствована из более нового протокола IMAP (см. лекцию 7, "Протокол IMAP"), который более гибок при работе с почтовыми ящиками, чем протокол POP3. Формат команды AUTH следующий:

 
AUTH mechanism

Параметр mechanism определяет собственно метод проверки подлинности пользователя, с помощью которого производится подключение клиента к серверу. Когда метод проверки пользователя согласован, то вступает в силу проверка подлинности идентификатора пользователя.

 

Клиент инициирует сеанс переговоров с сервером, в течение которого согласовывается метод проверки подлинности. Вначале клиент выдает команду AUTH с наивысшей возможной степенью шифрования. Если сервером не поддерживается соответствующий уровень шифрования, то он вернет негативный ответ. Затем клиент может выдать еще одну команду AUTH, с уже другим механизмом проверки подлинности. Эти переговоры между клиентом и сервером будут продолжаться до тех пор, пока клиент и сервер не найдут приемлемый для обоих алгоритм проверки подлинности, в противном случае они просто перейдут к использованию комбинации команд USER/PASS. В листинге 6.5 показан пример сеанса переговоров между клиентом и сервером POP3 с применением команды AUTH.

 
1 [matthew@shadrach matthew]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POPS localhost v6.50 server ready
6 AUTH KERBEROS_V4
7 -ERR Bad authentication
8 AUTH GSSAPI
9 -ERR Bad authentication
10 AUTH SKEY
11 -ERR Bad authentication
12 AUTH
13 +OK Supported authentication mechanisms:
14 LOGIN
15 .
16 AUTH LOGIN
17 + VXNlciBOYW1lAA==
18 xxxxxxxxx
19 + UGFzc3dvcmQA
20 xxxxxxxxx
21 -ERR Bad authentication
22 USER matthew
23 +OK User name accepted, password please
24 PASS apple
25 +OK Mailbox open, 0 messages
26 QUIT
27 +OK Sayonara
28 Connection closed by foreign host.
29 [matthew@shadrach matthew]$

Листинг 6.5. Пример сеанса переговоров по команде AUTH

Строки 6–11 отображают попытки клиента вести переговоры с сервером POP3, согласно стандартной процедуре проверки подлинности в IMAP. Как видим, все они не увенчались успехом. В строке 12 клиент выдает команду AUTH без параметров. На это сервер отвечает списком поддерживаемых методов проверки подлинности (строки 14 и 15). В строке 16 клиент пытается использовать один из поддерживаемых сервером методов LOGIN. Далее, в строке 17, мы видим зашифрованный ответ сервера на команду AUTH. К сожалению, в данном случае клиенту не удалось зарегистрироваться на сервере с помощью метода LOGIN, поэтому клиент и сервер перешли к применению обычной комбинации USER/PASS, как это видно из строк 22–25.

 

Команды клиента POP3

После успешной регистрации на сервере POP3 клиент переходит в нормальный режим работы. Для управления получением почтовых сообщений с сервера он должен выдавать соответствующие команды. Каждая команда предполагает соответствующую реакцию на нее сервера POP3.

 

Команда STAT

В команде STAT дополнительные параметры не задаются. Она применяется для получения текущего листинга работы сервера POP3. Текущий листинг представляет собой форматированный текст, который отображает текущее состояние почтового ящика пользователя. Строка вывода при этом имеет формат:

 
+ОК nn mm

Формат ответа на команду STAT является стандартным. С его помощью пользователи системы электронной почты получат информацию о состоянии своих почтовых ящиков. Значение nn указывает, какое количество сообщений находится в данный момент в почтовом ящике пользователя. Сообщения с пометкой "удалено" не считаются, однако учитываются уже прочитанные сообщения. Значение mm отражает объем сообщений, находящихся в ящике пользователя, в байтах. Команда STAT часто используется для быстрой проверки состояния почтового ящика клиентскими программами для работы с почтой. Выдав команду STAT, программа для работы с электронной почтой может сравнить количество сообщений в почтовом ящике с тем, что было получено в результате последней проверки. Если они отличаются, то программа для работы с электронной почтой может инициировать процесс получения новых сообщений. Единственная проблема, возникающая при использовании этого алгоритма, заключается в том, что программе-клиенту не известно, сколько сообщений было получено в прошлый раз и какие из них не были удалены.

 

Команда LIST

Команда LIST используется для получения развернутого листинга почтового ящика. Развернутый листинг представляет собой краткое содержание почтового ящика, включая номер и объем сообщения в байтах. Когда команда LIST задается без параметров, то отображается развернутый листинг всех сообщений в почтовом ящике. Если же использовать в качестве параметров команды номер сообщения, то развернутый листинг будет производиться только для него. Пример сеанса работы команды LIST представлен в листинге 6.6.

 
1 [alex@shadrach alex]$ telnet localhost 110
2 Trying 127.0.0.1 ...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v6.50 server ready
6 USER alex
7 +OK User name accepted, password please
8 PASS tarzan
9 +OK Mailbox open, 2 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 355
13 2 465
14 .
15 LIST 1
16 +OK 1 355
17 LIST 2
18 +OK 2 465
19 LIST 3
20 -ERR No such message
21 QUIT
22 +OK Sayonara
23 Connection closed by foreign host.
24 [alex@shadracn alex]$

Листинг 6.6. Пример работы команды LIST

Давайте рассмотрим, что происходит. В строке 10 клиент выдает серверу команду LIST без параметров. Ответ сервера заключается в строках 12–14 с уведомлением в строке 11 о том, что команда опознана. Строки 12 и 13 обозначают сообщения, которые находятся в почтовом ящике. Некоторые реализации серверов POP3 включают в положительный ответ сервера результаты выполнения команды STAT в качестве обобщающего сообщения. Однако программам-клиентам не стоит полагаться на эти сведения (как показано в данном листинге). В строках 15 и 17 выдается команда LIST для каждого сообщения. Соответствующие ответы сервера показаны в строках 16 и 18. В строке 19 клиент задает команду LIST для несуществующего сообщения. В 20-й строке сервер возвращает отрицательный ответ на это действие.

 

Команда RETR

Команда RETR используется для получения сообщений из почтового ящика на компьютер клиента. Параметр, который можно использовать с этой командой, — это номер сообщения, полученный с помощью команды LIST. Если имеется сообщение с заданным номером, то сервер будет отвечать позитивным сообщением, завершая текст письма специальным символом (одной точкой в последней строке). Почтовое сообщение, которое отдается клиенту, должно быть форматировано в соответствии с RFC 822 так же, как оно было принято почтовым сервером (чаще всего SMTP). Сервер POP3 не принимает никакого участия в форматировании и манипулировании сообщением. Работа сервера POP3 заключается лишь в передаче сообщения клиенту в целости и сохранности. Пример работы команды RETR показан в листинге 6.7.

 
1 [rich@shadrach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v6.50 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 2 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 355
13 2 465
14 .
15 RETR 1
16 +OK 355 octets
17 Return-Path: <rich>
18 Received: (from rich@localhost)
19 by shadrach.smallorg.org (8.8.7/8.8.7) id KAA00648
20 for rich; Thu, 2 Sep 1999 10:15:25 -0500
21 Date: Thu, 2 Sep 1999 10:15:25 -0500
22 From: rich@shadrach.smallorg.org
23 Message-Id: <199909021515.KAA00648@shadrach.smallorg.org>
24 To: rich@shadrach.smallorg.org
25 Subject: Message 1
26 Status: 0
27
28 This is test message 1
29 .
30 QUIT
31 +OK Sayonara
32 Connection closed by foreign host.
33 [rich@shadrach rich]$

Листинг 6.7. Пример применения команды RETR

В строке 15 клиент выдает команду RETR для получения из ящика сообщения с номером 1. Строки 16–27 показывают, что сообщение полностью передается клиенту. В обязанности клиента входит организация буфера, достаточного для хранения сообщения (с этой целью команда LIST и выдает сведения об объеме сообщений).

 

Команда DELE

Команда DELE используется для удаления сообщений из почтового ящика на сервере. Единственный параметр, который можно в ней задавать, — это номер сообщения, полученный с помощью команды LIST. Команда DELE физически не удаляет сообщение, она лишь помечает его для удаления. Удаление сообщения происходит лишь после корректного завершения сеанса с помощью команды QUIT (о ней немного позже). При использовании команды DELE следует быть очень осторожным. Внимательно посмотрите, правильно ли указан номер сообщения, которое вы собираетесь удалить. В листинге 6.8 показаны результаты удаления сообщения по развернутому листингу.

 
1 [rich&shadr-ach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 3 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 377
13 2 387
14 3 396
15 .
16 DELE 1
17 +OK Message deleted
18 LIST
19 +OK Mailbox scan listing follows
20 2 387
21 3 396
22 .
23 QUIT
24 +OK Sayonara
25 Connection closed by foreign host.
26 [rich@shadrach rich]$ telnet localhost 110
27 Trying 127.0.0.1...
28 Connected to localhost.
29 Escape character is '^]'.
30 +OK POPS localhost v7.59 server ready
31 USER rich
32 +OK User name accepted, password please
33 PASS guitar
34 +OK Mailbox open, 2 messages
35 LIST
36 +OK Mailbox scan listing follows
37 1 387
38 2 396
39 .
40 QUIT
41 +OK Sayonara
42 Connection closed by foreign host.
43 [rich@shadrach rich]$

Листинг 6.8. Результаты применения команды DELE

В строке 10 клиент задает команду LIST, чтобы проверить содержимое своего почтового ящика. Строки 11–15 показывают, что в ящике находятся три сообщения. В строке 16 клиент выдает команду DELE для удаления сообщения с номером 1 (оно лишь будет помечено для удаления). В строке 17 показан ответ сервера POP3, подтверждающий совершение им действия. Теперь новый развернутый листинг почтового ящика (строки 20 и 21) показывает, что для загрузки доступны только сообщения с номерами 2 и 3. В этой точке клиент завершает сеанс с сервером POP3.

 

Строки 26–42 отображают еще один сеанс POP3. В этом сеансе в строке 35 еще раз выдается команда LIST. Как и раньше, сервер POP3 показывает, что в почтовом ящике находятся два сообщения. Однако, обратите внимание: в этом сеансе сервер перенумеровал сообщения. Сообщение, имевшее номер 2, получило номер 1, а сообщение с номером 3 —номер 2.

 

Этот пример показывает, что номера сообщений не являются постоянными величинами. Номера сообщений имеют смысл только для текущего сеанса POP3. Любая попытка клиента использовать одни и те же номера сообщений в различных сеансах, почти всегда приводит к неожиданным результатам. Команда UIDL, которую мы рассмотрим позже в этом разделе, поддерживается некоторыми серверами POP3 и используется как раз для уникальной идентификации сообщений для всех сеансов POP3.

 

Команда NOOP

Команда NOOP в буквальном смысле ничего не делает. При получении команды NOOP сервер POP3 лишь отправляет положительный ответ. Эта команда может использоваться для определения наличия соединения с сервером POP3. Ее можно задавать только после установления соединения и после регистрации на сервере.

 

Команда RSET

Команда RSET сбрасывает текущий сеанс POP3 и возвращает его к точке, когда пользователь уже прошел процедуру проверки подлинности на сервере (т.е. повторная регистрация не требуется). При этом важно помнить, что с помощью команды RSET сервер отменяет все ранее сделанные пометки об удалении. Все сообщения будут присутствовать в развернутом листинге под теми номерами, которые они имели до того, как были помечены.

 

Команда QUIT

Команда QUIT используется для завершения сеанса POP3. Когда сервер получает команду QUIT, то он удаляет все помеченные для удаления в течение сеанса сообщения и закрывает TCP-соединение. Если сеанс POP3 завершить до того, как клиент выдаст команду QUIT, то все помеченные для удаления сообщения будут сохранены и удаляться не будут.

 

Команда TOP

Команда TOP является необязательной и поддерживается не всеми серверами POP3. Эта команда весьма полезна для клиента и помогает ему получать краткое описание сообщений, которые находятся в почтовом ящике. В результате ее выполнения клиент получает стандартные поля заголовка сообщения в формате RFC 822 вместе с заданным числом строк из тела сообщения. Команда TOP требует двух обязательных параметров. Формат команды:

 
TOP msg n

Параметр msg — номер сообщения, полученный с помощью команды LIST, а n — целое число, которое показывает количество отображаемых строк из тела сообщения. Часто программы-клиенты прибегают к использованию этой команды, чтобы получить поле заголовка Subject:, которое они затем выводят в списке сообщений. При этом необходимость в загрузке на локальный компьютер полного текста сообщений отпадает. В листинге 6.9 представлен пример применения команды TOP.

 
1 [rich@shadrach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POPS localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 5 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 387
13 2 396
14 3 374
15 4 375
16 5 383
17 .
18 TOP 1 0
19 +OK Top of message follows
20 Return-Path: <rich>
21 Received: (from rich@localhost)
22 by shadrach.smallorg.org (8.9.3/8.9.3) id MAA00496
23 for rich; Thu, 2 Sep 1999 12:35:51 -0500
24 Date: Thu, 2 Sep 1999 12:35:51 -0500
25 From: rich@shadrach.smallorg.org
26 Message-Id: <199909021735.MAA00496@shadrach.smallorg.org>
27 To: rich@shadrach.smallorg.org
28 Subject: Test message 1
29 Status: 0
30
31 .
32 TOP 4 10
33 +OK Top of message follows
34 Return-Path: <rich>
35 Received: (from rich@localhost)
36 by shadrach.smallorg.org (8.9.3/8.9.3) id NAA00588
37 for rich; Thu, 2 Sep 1999 13:32:35 -0500
38 Date: Thu, 2 Sep 1999 13:32:35 -0500
39 From: rich@shadrach.smallorg.org
40 Message-Id: <199909021832.NAA00588@shadrach.smallorg.org>
41 To: rich@shadrach.smallorg.org
42 Subject: Sample message #4
43 Status:
44
45 This is the fourth sample message.
46 .
47 QUIT
48 +OK Sayonara
49 Connection closed by foreign host.
50 [rich@shadrach rich]$

Листинг 6.9. Пример использования команды TOP

В строке 10 клиент выдает команду LIST для получения информации о номерах сообщений, содержащихся в почтовом ящике на сервере POP3. Когда клиенту известны номера сообщений, он может воспользоваться командой TOP для получения информации из заголовков сообщений. При этом заголовки сообщений должны соответствовать RFC 822. В строке 18 показано, как клиент запрашивает информацию о сообщении с номером 1, при этом строки из тела сообщения не запрашиваются. Ответ сервера показан в строках 19–31. В строке 32 клиент запрашивает 10 строк из тела сообщения номер 4. Однако поскольку тело сообщения содержит только одну строку, то сервер отвечает выводом на экран всего заголовка и тела сообщения.

 

Команда UIDL

Еще одна необязательная для всех серверов POP3 команда — UIDL. Благодаря ей все сообщения, хранящиеся на сервере, получают уникальные номера, которые сохраняются для всех сеансов POP3. Как уже говорилось ранее, сообщения нумеруются по порядку в течение сеанса POP3. По завершении клиентом сеанса и с началом нового сеанса сообщения перенумеровываются. Таким образом, если клиент имел в своем ящике десять сообщений и удалил шестое сообщение в течение сеанса, то при следующем сеансе POP3 девять сообщений будут перенумерованы с первого по девятое. Как видите, у клиентского программного обеспечения довольно непростая задача — следить за перенумерацией сообщений.

 

Для решения этой проблемы в некоторые серверы POP3 встроена поддержка команды UIDL или "листинг с уникальным идентификатором". Каждому сообщению назначается уникальный идентификатор, который представляет собой строку символов формата ASCII (до 70 символов). Этот идентификатор сохраняется за сообщением все время, пока оно находится в почтовом ящике. Довольно часто идентификатор UIDL для сообщения получают посредством применения алгоритма хеширования к заголовку сообщения. Однако применение такой технологии может привести к тому, что два одинаковых сообщения получат одинаковый UIDL. Клиентское программное обеспечение должно распознавать и устранять такие ситуации. В листинге 6.10 представлен пример вывода на экран и удаления сообщений, идентифицируемых с помощью UIDL.

 
1 [rich@shadrach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 3 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 370
13 2 371
14 3 370
15 .
16 UIDL
17 +OK Unique-ID listing follows
18 1 37cabbcb0000009
19 2 37cabbcb0000000a
20 3 37cabbcb0000000b
21 .
22 DELE 1
23 +OK Message deleted
24 LIST
25 +OK Mailbox scan listing follows
26 2 371
27 3 370
28 .
29 UIDL
30 +OK Unique-ID listing follows
31 2 37cabbcb0000000a
32 3 37cabbcb0000000b
33 .
34 QUIT
35 +OK Sayonara
36 Connection closed by foreign host.
37 [rich@shadrach rich]$ telnet localhost 110
38 Trying 127.0.0.1 ...
39 Connected to localhost.
40 Escape character is '^]'.
41 +OK POP3 localhost v7.59 server ready
42 USER rich
43 +OK User name accepted, password please
44 PASS guitar
45 +OK Mailbox open, 2 messages
46 LIST
47 +OK Mailbox scan listing follows
48 1 371
49 2 370
50 .
51 UIDL
52 +OK Unique-ID listing follows
53 1 37cabbcb0000000a
54 2 37cabbcb0000000b
55 .
56 QUIT
57 +OK Sayonara
58 Connection closed by foreign host.
59 [rich@shadrach rich]$

Листинг 6.10. Пример выполнения команды UIDL

В строке 16 клиентом выдается команда UIDL для отображения уникальных идентификаторов сообщений, которые находятся в почтовом ящике. Строки 17–21 представляют собой ответы сервера с соответствующими уникальными идентификаторами для каждого сообщения. В строке 22 клиент удаляет сообщение с номером 1. Далее из строк 30–33 видно, что оставшиеся UIDL сообщений не изменились. В следующем сеансе POP3 (строки 47–50) мы видим, что сообщения были перенумерованы, но их уникальные идентификаторы UIDL остались неизменными с момента последнего сеанса (строки 52–55). Таким образом, программа-клиент может идентифицировать сообщения независимо от сеансов POP3.

 

Ответы сервера POP3

Как показано в примерах сеансов POP3, приведенных выше в этой лекции, на каждую команду, посланную клиентом, сервер POP3 возвращает ответ. Формат ответов сервера следующий:

 
result text

Под result подразумевается код ответа сервера POP3, а text — это текстовое сообщение, которое описывает результаты выполнения той или иной команды.

 

Сервер POP3 может возвращать ответы двух типов. Ответ с сообщением +ОК означает, что команда была выполнена успешно, а ответ -ERR свидетельствует о том, что команда не была выполнена.

 

Подробности о выполнении той или иной команды содержатся в текстовой части ответа сервера. Возможны ответы, состоящие из нескольких строк. Конец многострочного ответа обозначается строкой с одной точкой (.).

 

Реализация POP3 в ОС Linux

Для операционной системы Linux разработано несколько различных программных пакетов, которые реализуют функции клиента и сервера POP3. В этом разделе мы рассмотрим три наиболее популярных программных пакета, доступных для большинства версий ОС Linux.

 

ОС Linux как клиент POP3

На сегодняшний день наибольшую популярность получил пакет клиента POP3 для ОС Linux под названием fetchmail, написанный Эриком Рэймондом (Eric Raymond). Называть этот пакет программой для работы с POP3 не совсем корректно, так как, помимо функций клиента POP3, он имеет и другие возможности. С помощью этой программы можно получать сообщения из почтового ящика на удаленном сервере с использованием протоколов POP3, IMAP4 или SMTP (посредством команды ETRN). С ростом популярности протокола POP3, и услуг предлагаемых провайдерами Internet на его основе, программа fetchmail стала практически стандартом для большинства пользователей Linux при работе с серверами POP3. Программа fetchmail автоматически определяет перечень протоколов, которые поддерживаются на удаленном сервере, и выбирает наилучший способ для получения сообщений. Получив сообщение, эта программа сразу же передает его локальному почтовому процессору на сервере с ОС Linux, который доставляет сообщение локальному пользователю.

 

Одно из преимуществ fetchmail, которое в последнее время все более широко используется, — возможность получения почты для всего домена через один почтовый ящик на узле провайдера Internet. Провайдер при этом должен сконфигурировать свою программу sendmail таким образом, чтобы она пересылала сообщения, адресованные любому пользователю из этого домена, в один почтовый ящик. Например, все сообщения адресованные prez@smallorg.org, viceprez@smallorg.org или janitor@smallorg.org будут перенаправлены на почтовый ящик maildrop@smallorg.org. Затем почтовый сервер на базе ОС Linux, обслуживающий домен smallorg.org, с помощью fetchmail и POP3 получает сообщения из ящика maildrop@smallorg.org. Хотя каждое сообщение помещается в один почтовый ящик, все они имеют разные значения в поле заголовка To: (Кому:) в формате RFC 822 (см. раздел "Форматы сообщений" в лекции 5 "Протокол SMTP"). Программу fetchmail можно сконфигурировать так, чтобы она рассылала все принятые сообщения в соответствующие локальные почтовые ящики на почтовом сервере на основании значений поля To:. Хотя такой алгоритм стал довольно популярным (особенно на серверах POP3 на базе ОС Windows), мы бы не рекомендовали увлекаться такой практикой, так как при этом может теряться важная информация из заголовка. Лучше всего использовать метод SMTP ETRN, описанный в лекции 13 "Подключение почтового сервера к провайдеру Internet". При этом в сообщениях полностью сохраняются заголовки в формате RFC 822.

 

Установка fetchmail

Во многие версии ОС Linux включен пользующийся большой популярностью бинарный пакет программы fetchmail. Если в имеющейся у вас версии ОС Linux нет fetchmail или же вы хотите получить свежую версию этой программы (текущая версия — 5.0.7), обратитесь на начальную страницу fetchmail в Internet по адресу: http://tuxedo.org/~esr/fetchmail. Оттуда можно получить исходный код fetchmail. Понадобится также текущая версия компилятора gcc и копия программы flex, установленная на вашем Linux-сервере. После получения исходного кода распакуйте его в рабочий каталог, откуда будет производится установка, примерно следующим образом:

 
tar -zxvf fetchmail-5.0.7.tar.gz

С помощью этой команды создается подкаталог fetchmail-5.0.7, где разворачивается исходный код и другие файлы, нужные для компиляции. Для создания выполняемого модуля программы fetchmail проделайте следующее.

 
  • Запустите программу configure. Эта программа проверяет специфические параметры компилятора в вашей версии Linux с целью создания Makefile. Далее программа configure тестирует библиотеки и параметры компилятора и выдает сообщения о своей работе. Если необходимо настроить fetchmail определенным образом, то можно задавать параметры программе configure для изменения той или иной части fetchmail. Например, можно отказаться от поддержки IMAP и SMTP, если она не нужна, с целью сокращения выполняемого модуля.
  • Запустите утилиту make для создания Makefile. Этим действием как раз совершается компиляция исходного кода и создаются двоичные файлы fetchmail и fetchmailconf.
  • Выполните make install с правами пользователя root, чтобы поместить выполняемые модули в соответствующие каталоги. Таким образом исключается возможность конфликтов по правам пользователей (если только вы не добиваетесь обратного), и любой пользователь Linux сможет теперь их использовать.
 

После создания и установки выполняемых модулей необходимо создать конфигурационный файл для каждого пользователя fetchmail — программа сможет соединиться с сервером и забрать вашу почту.

 

Конфигурирование fetchmail

Каждому пользователю для работы с fetchmail требуется свой конфигурационный файл. Конфигурационные файлы пользователя хранятся в $HOME/.fetchmailrc. При запуске программа проверяет наличие этих файлов и, в случае их отсутствия, выдает сообщение о том, что они не найдены:

 
fetchmail: no mailservers have been specified.

Файл .fetchmailrc представляет собой стандартный текстовый файл в формате ASCII. В нем содержатся сведения о том, к какому серверу должна подключаться fetchmail, какой протокол использовать и какой метод проверки подлинности будет применяться во время почтового сеанса. Формат конфигурационного файла имеет двойную структуру: половина файла носит описательный характер, а другая половина — собственно конфигурация fetchmail. Пример файла .fetchmailrc представлен в листинге 6.11.

 
1 # Configuration created Fri Sep 3 09:16:53 1999 by fetchmailconf
2 set postmaster "rich"
3 set bouncemail
4 set properties " "
5 poll 10.0.0.1 with proto POP3
6 user "rich" there with password "guitar" is rich here

Листинг 6.11. Пример файла .fetchmailrc

В строках 5 и 6 устанавливаются параметры конфигурации для пользователя с идентификатором "rich". Как видите, в этом файле задаются адрес удаленного хоста, протокол, идентификатор пользователя и пароль. В строке 6 fetchmail подставляет для удаленного пользователя "rich" соответствующий идентификатор пользователя ОС Linux "rich". При необходимости он может быть изменен, но будьте осторожны, чтобы не запутать ситуацию еще больше.

 

Самый простой способ конфигурирования .fetchmailrc — использование программы fetchmailconf для среды X Window. С помощью этой программы с графическим интерфейсом можно настраивать fetchmail для своих нужд. В табл. 6.1 представлены строки файла .fetchmailrc, с помощью которых производится конфигурирование в fetchmailconf.

 
Таблица 6.1. Строки для файла .fetchmailrc, сгенерированные с помощью fetchmailconf .
Окно fetchmailconf Строки .fetchmailrc
Конфигуратор для новичков poll, frequency
Хост-конфигуратор poll, proto, user
Конфигурация пользователя password, properties
 

На рис. 6.1 представлен основной экран программы fetchmailconf.

 

Для использования возможностей конфигурирования нажмите кнопку Конфигурировать fetchmai (Configuire fetchmail). Ее нажатие вызовет меню конфигуратора fetchmail, показанное на рис. 6.2.

 

Если вы выберете опцию Конфигурация для новичков (Novice Configuration), fetchmailconf будет помогать вам при установке параметров сервера POP3, к которому производится подключение. Основной экран сразу же попросит вас ввести адрес сервера или серверов POP3 и частоту обращения к ним за новой почтой. После задания частоты обращений можно запустить fetchmail в фоновом режиме, и она будет опрашивать соответствующие серверы с этой частотой. Хотя, если вы работаете с провайдером по коммутируемому соединению, то вам нужен другой подход. Следует установить частоту опроса серверов равной 0 и написать специальный сценарий дозвона до сервера провайдера, в котором предусмотреть запуск fetchmail. Затем с помощью файла cron можно запускать этот сценарий с необходимой частотой. На рис. 6.3 показано диалоговое окно конфигуратора для новичков.

 

 

Основное окно программы fetchmailconf

Рис. 6.1.  Основное окно программы fetchmailconf

 

 

 

Основное окно конфигуратора fetchmail

Рис. 6.2.  Основное окно конфигуратора fetchmail

 

 

 

Окно конфигуратора fetchmail для новичков

Рис. 6.3.  Окно конфигуратора fetchmail для новичков

 

 

После введения адреса сервера POP3 его параметры можно редактировать. Для этого нужно выделить адрес сервера и щелкнуть на кнопке Редактировать (Edit). С помощью этой кнопки вызывается окно конфигурирования хоста. Здесь можно задать протокол, необходимый для соединения с удаленным сервером, а также указать fetchmail самой формировать запросы на удаленный сервер. При этом она будет автоматически определять, какой протокол поддерживается на нем. Можно также выбирать наилучший протокол из поддерживаемых сервером. Это делается с помощью кнопки Исследовать поддерживаемые протоколы (Probe for supported protocols). Также можно задать список идентификаторов, по которому fetchmail будет получать почту. На рис. 6.4 показано окно конфигурации хоста.

 

 

Окно конфигурации хоста fetchmail

Рис. 6.4.  Окно конфигурации хоста fetchmail

 

 

Выделив идентификатор пользователя и нажав на кнопку Редактировать (Edit), можно сконфигурировать параметры для подключения к серверу в качестве пользователя. На рис. 6.5 представлено окно для конфигурирования пользователя.

 

 

Окно для конфигурирования пользователя fetchmail.

Рис. 6.5.  Окно для конфигурирования пользователя fetchmail.

 

 

Окно для конфигурирования пользователя позволяет задавать пароль для идентификатора пользователя, под которым производится подключение к серверу POP3. Имеются также два флажка для выбора других параметров пользователя. Первый флажок определяет, будет ли fetchmail удалять сообщения в почтовом ящике пользователя на сервере после их получения локальной машиной. Включение этой опции экономит дисковое пространство на сервере. Однако если пользователь обращается к серверу с различных ПК, то сообщения будут разбросаны по этим ПК, что приведет к путанице. Второй параметр — Выбрать старые сообщения вместе с новыми (Fetch old messages as well as new) — позволяет использовать POP3 с UIDL для идентификации уже полученных сообщений, чтобы не загружать их повторно. Этот параметр может оказаться весьма полезным, если пользователь забирает свою почту с различных ПК. Задав его, пользователь будет получать только новые сообщения из почтового ящика, независимо от того, на какой ПК он их получает. При этом сообщения из почтового ящика не удаляются. Хотя таким образом проблема накопления одних и тех же сообщений на различных ПК решается, остается проблема экономии дискового пространства на сервере, поскольку там хранятся все сообщения.

 

Применение fetchmail

После создания конфигурационного файла .fetchmailrc можно использовать программу fetchmail для получения сообщений электронной почты от сервера POP3. Для работы в интерактивном режиме все, что нужно для работы с ней, — это набрать в командной строке fetchmail. По этой команде fetchmail считывает конфигурационный файл и пытается зарегистрироваться на указанных в нем серверах. Затем она получает почту для заданных идентификаторов пользователя на локальный компьютер с ОС Linux. Управление fetchmail можно осуществлять, задавая в командной строке различные параметры. В табл. 6.2 приведены некоторые параметры, которые можно задавать в командной строке при использовании fetchmail для работы с сервером POP3.

 
Таблица 6.2. Параметры командной строки для fetchmail
Параметр Описание
-V Отображает версию fetchmail
-c Проверяет наличие почты в ящике без их загрузки на компьютер пользователя
-s Режим ожидания — без вывода на экран
-v Детальный режим — расширенный вывод на экран
-a Получать все сообщения с сервера
-k После получения сообщений сохранять на сервере их копии
-K Удалять сообщения с сервера после их получения (по умолчанию)
-F Сброс — удаление старых сообщений перед получением новых
-p Определяет протокол передачи
-U Использовать UIDL при идентификации сообщений
-P Использовать другой TCP-порт
-t Устанавливает величину интервала ожидания
 

Программу fetchmail можно использовать в качестве обычного процесса-демона в ОС Linux, задав частоту обращения к почтовому серверу в файле конфигурации. В этом случае fetchmail работает в фоновом режиме и регулярно проверяет почтовый ящик на наличие новых сообщений.

 

ОС Linux как сервер POP3

В ОС Linux реализована также поддержка сервера POP3, что позволяет создавать на сервере почтовые ящики, к которым будут обращаться за почтой удаленные пользователи. Каждый пользователь электронной почты для получения доступа к своему почтовому ящику должен иметь идентификатор пользователя. На сервере с ОС Linux программное обеспечение сервера POP3 запускается в фоновом режиме и наблюдает за установкой POP3-соединений. На рис. 6.6 представлена схема взаимодействия программного обеспечения сервера POP3 с операционной системой Linux, что позволяет удаленным пользователям обращаться к почтовым ящикам, хранящимся на сервере под управлением ОС Linux.

 

 

Почтовый сервер под управлением ОС Linux в качестве сервера POP3

Рис. 6.6.  Почтовый сервер под управлением ОС Linux в качестве сервера POP3

 

 

Пакет ipopd

Пакет ipopd — программа для поддержки сервера POP3, используемая в ОС Linux по умолчанию. Программное обеспечение ipopd является частью проекта программного обеспечения по поддержке IMAP, разрабатываемого Вашингтонским университетом. В проект по созданию программного пакета IMAP входят реализации серверов POP3 и IMAP. Большинство версий ОС Linux включают это программное обеспечение в виде готового пакета. Текущая версия поставляемая с Red Hat 6.0 — imap 4.5-3.

 

Программа ipopd содержит реализацию обеих версий протокола POP3 и их предшественника — протокола POP2. Все новое клиентское программное обеспечение для работы с электронной почтой поддерживает протокол POP3, а протокол POP2 считается вышедшим из употребления. Программа для работы с POP3 называется ipop3d и вызывается программой inetd. В файле /etc/inetd.conf, вероятнее всего, имеется строка для вызова сервера POP3, но она может быть закомментирована. Эта строка выглядит примерно так:

 
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d

Как правило, программа ipop3d обычно устанавливается в каталог /usr/sbin.

 

Программа qpopper

Программа qpopper представляет собой реализацию сервера POP3. Она написана в университете Беркли (штат Калифорния), но в настоящее время ее распространением занимается компания Qualcomm. Программа qpopper поставляется с большинством версий ОС Linux, а ее последнюю версию (2.53) можно получить через Internet на Web-сайте компании Eudora по адресу: http://www.eudora.com/free/servers.html. Одно из существенных преимуществ qpopper перед ipopd — наличие поддержки соединений при помощи APOP с использованием специальной базы данных идентификаторов пользователя. Для запуска qpopper используется два загрузочных модуля — in.qpopper и popauth.

 

Программа in.qpopper пришла на смену ipop3d, которая ранее включалась в ОС Linux в качестве сервера POP3. Файл /etc/inetd.conf должен быть модифицирован соответствующим образом для запуска этой программы при установлении соединения с клиентом на TCP, порт 110. Строка в файле /etc/inetd.conf для включения qpopper выглядит следующим образом:

 
pop3 stream tcp nowait root /usr/sbin/tcpd in.qpopper

После этого следует перезапустить процесс inetd для того, чтобы программа in.qpopper смогла обслуживать соединения по протоколу POP3.

 

Программа popauth позволяет организовывать qpopper-соединения с клиентами при помощи APOP. Для этого с ее помощью создается база данных пользователей (файл /etc/pop.auth), в которую можно добавлять и удалять идентификаторы пользователей. Для добавления идентификатора пользователя в базу данных используйте команду:

 
popauth -user username

Так вводятся новые пользователи в базу данных. Для удаления пользователей из базы данных задайте команду:

 
popauth -delete username

Чтобы получить список пользователей в базе данных, воспользуйтесь командой:

 
popauth -list

После того как идентификаторы пользователей занесены в базу данных pop.auth, любой из них может воспользоваться программой POP3, в которую встроена поддержка проверки подлинности пользователя с помощью APOP для подключения к серверу qpopper.

 

Философия почтового сервера

 

Обслуживание сервера электронной почты может быть довольно сложным. В многопользовательской среде администратору почтовой системы приходится порой принимать политические и философские решения для удержания системы электронной почты "на плаву". Правила обмена почтовыми сообщениями должны быть выработаны до того, как начнут страдать пользователи или сервер.

 

Внимание администратора почтовой системы в основном требуется обратить на аккумуляцию почтовых сообщений на сервере. Большинство серверов электронной почты, какими бы большими дисками они не обладали, все равно имеют предел дискового пространства. Следовательно, и число, а точнее, размер хранимых на них сообщений также имеет предел. Протоколом POP3 не уточняется алгоритм удаления сообщений электронной почты с сервера после того, как они уже были получены пользователем. Решение о том, оставлять ли копии сообщений на сервере или удалять их после получения локальным ПК, целиком зависит от пользователей электронной почты.

 

Один из методов решения этой проблемы — лимитирование дискового пространства, отводимого под каждый почтовый ящик. По достижении заданного администратором лимита пользователь не сможет принимать в свой ящик другие сообщения. Этот метод иногда очень трудно реализовать политически (попробуйте сказать боссу, что его лимит исчерпан!).

 

Существует еще одно решение данной проблемы. Можно сохранять сообщения, используя метод временной задержки. Это означает, что по прошествии нескольких дней прочитанные пользователем сообщения будут удаляться из почтового ящика. Такой метод иногда используется, хотя его реализация также связана с некоторыми трудностями.

 

Многие программы-клиенты POP3 способны работать с командой UIDL для идентификации сообщений в почтовом ящике. При этом они будут загружать пользователю только новые сообщения, сохраняя время их получения. К сожалению, не все клиенты POP3 (в основном более старые) поддерживают эту команду и, таким образом, каждый раз при соединении с сервером будут получать все сообщения — как новые, так и старые. Существует только один путь избежать этого — удалять сообщения с сервера после их получения клиентом. Однако это порождает другую проблему.

 

Довольно часто в последнее время компании разрешают своим работникам получать электронную почту как на рабочий ПК в офисе, так и на домашний ПК (см. лекцию 16, "Поддержка удаленных клиентов"). Результатом этого является "разбиение" их почтовых ящиков на два отдельных ящика. Почта, полученная на домашний ПК, не может дублироваться на офисный ПК. Естественно, что такое положение вещей не удовлетворяет самих пользователей системы электронной почты.

 

Резюме

Передав почту посредством SMTP-сервера под управлением ОС Linux, пользователи должны иметь возможность получать ответы на свои сообщения. Для получения сообщений с почтового сервера на локальный ПК пользователя был разработан протокол почтового офиса версии 3 — POP3. Протокол POP3 не так универсален, как его более молодые собратья, но простота настройки и применения сделала его наиболее широко применяемым протоколом для обмена почтовыми сообщениями. Существует программное обеспечение, реализующее функции как клиента, так и сервера POP3 в ОС Linux. Программы ipopd и qpopper используются в ОС Linux для обеспечения работы сервера POP3. С их помощью пользователи могут подключаться к серверу и получать предназначенные для них сообщения электронной почты. С помощью программы fetchmail в ОС Linux можно реализовать функции клиента POP3 для получения почты от провайдера Internet. К сожалению, в протоколе POP3 имеются определенные ограничения. Однако сейчас разрабатываются альтернативные протоколы для получения электронной почты, которые были бы лишены недостатков POP3. Например, протокол IMAP, речь о котором пойдет в следующей лекции.

 
Автор: Р. Блам  источник: http://www.INTUIT.ru 


 

13 центов(0,13$) за клик, выплаты через WebMoney каждый вторник +10% с рефералов

Мы выкупаем 100% трафа! $12 за 1000 хостов (РФ), и до $4 за 1000 хостов (зарубежный траф) + 10% с дохода Ваших рефералов!
 Выплаты через
WebMoney

~80-100$ за1000 хостов 2.5$ за 1 смс.
реф. процент - 10 %Выплаты происходят раз в неделю, в четверг на
WebMoney
 
 

 

____________________________

Посмотреть порно видео в онлайне »

_______________________________

 

   
   
Сайт управляется системой uCoz