56
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ Экономико-гуманитарный факультет в г. Кафедра информатики и математики Регистрационный номер ______________________ КУРСОВАЯ РАБОТА На тему: ____________________________________________ _______ ____________________________________________ _______ ____________________________________________ _______ Исполнитель: Студент(ка) ______ курса _____ группы ________________________________ ____ (Фамилия, имя, отчество полностью, подпись) Научный руководитель _______________

Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Embed Size (px)

Citation preview

Page 1: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

Экономико-гуманитарный факультет в г.

Кафедра информатики и математики

Регистрационный номер______________________

КУРСОВАЯ РАБОТА

На тему: ___________________________________________________

___________________________________________________

___________________________________________________

Исполнитель:Студент(ка) ______ курса _____ группы____________________________________

(Фамилия, имя, отчество полностью, подпись)

Научный руководитель ___________________________________________________

(Научная степень, звание, фамилия, инициалы, подпись)

Контроль соответствия нормативным требованиям ____________________________________________________________

(Научная степень, звание, фамилия, инициалы, подпись)

Защищено __________________________С оценкой __________________________

Заведующий кафедрой ______________д.т.н., профессор

Мелитополь, 2004

Page 2: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

УСЛОВНЫЕ ОБОЗНАЧЕНИЯ

ASCII American Standard Code for Information Interchange

CRLF идущие подряд символы #10#13

DNS Domain Name System

IMAP Internet Message Access Protocol

POP Post Office Protocol

RFC Request for Comment

SMTP Simple Mail Transfer Protocol

TCP Transmission Control Protocol

3

Page 3: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

ВВЕДЕНИЕ

Развитие компьютерной сети Интернет привело к тому, что одной из основных

проблем пользователей стал избыток информации. Самой распространенной

службой в сети является e-mail - электронная почта. Практически каждый

пользователь сети имеет свой электронный почтовый ящик, а зачастую и не один.

Часто им приходится сталкиваться с явлением, называемым спамом.

Под термином «спам» подразумевается массовая рассылка не запрошенной

корреспонденции, которая почти всегда является рекламой. В таких письмах

может предлагаться купить коттедж под Москвой, съездить за границу, купить

виагру или заработать миллион долларов за две недели. Нередко в них содержатся

компьютерные вирусы, способные нарушить безопасность компьютерной

системы или привести к необратимой утрате ценных данных.

Такая корреспонденция и называется спамом. Эти бесполезные письма

перегружают сеть, принося миллионы убытка, распространяют вирусы, помогают

мошенникам обманывать сотни и тысячи людей по всему миру, отрицательно

действуют на настроение и нервы человека.

Спам является одной из самых серьезных проблем современного Интернета.

Цели данного исследования:

1) изучить используемые в сети почтовые протоколы;

2) проанализировать достоинства и недостатки существующих на данный

момент методов защиты;

3) разработать и написать программу способную обезопасить пользователя и

свести к минимуму наносимый спамом ущерб.

4

Page 4: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

1 ЭЛЕКТРОННАЯ ПОЧТА

Электронная почта – это служба позволяющая производить обмен почтовыми

сообщениями с любым пользователем сети Internet.

Эта служба во многом похожа на обычную почту. С ее помощью письмо – текст,

снабженный стандартным заголовком (конвертом) – доставляется по указанному

адресу, который определяет местонахождение компьютера с нужным почтовым

сервером и имя адресата. Сервер получает письмо и помещает его в файл

называемый почтовым ящиком адресата, с тем, чтобы адресат мог его достать и

прочесть в удобное для него время.

Существует также возможность отправки вместе с письмами файлов –

вложений, которые могут быть как текстовыми, так и двоичными файлами.

Несомненным преимуществом электронной почты является скорость доставки.

Отправленное письмо приходит в ящик адресата спустя несколько минут (а

иногда и секунд) после отправки, хотя его отправитель может находиться на

другой половине земного шара.

Чтобы почтовые программы и сервера всей сети понимали друг друга,

существуют специальные наборы команд называемые почтовыми протоколами.

Эти протоколы являются всемирно принятым стандартом, поэтому с ними

работают программы по всему миру.

1.1 Адресация в системе электронной почты

Для того чтобы электронное письмо дошло до своего адресата, необходимо,

чтобы оно было оформлено в соответствии с международными стандартами и

имело стандартизованный почтовый электронный адрес.

5

Page 5: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Общепринятый формат послания определяется документом под названием

"Standard for the Format of ARPA - Internet Text messages", сокращенно - Request

for Comment или RFC822, и имеет заголовок и непосредственно сообщение.

Заголовок выглядит примерно так:

- From: почтовый электронный адрес - от кого пришло послание;

- To: почтовый электронный адрес - кому адресовано;

- Cc: почтовые электронные адреса - кому еще направлено;

- Subject: тема сообщения (произвольной формы);

- Date: дата и время отправки сообщения.

Строки заголовка From и Date формируются, как правило, автоматически,

программными средствами. Помимо этих строк заголовка, послание может

содержать и другие, например:

- Message-Id: уникальный идентификатор послания, присвоенный ему

почтовой машиной;

- Reply-To: обычно адрес абонента, которому вы отвечаете на присланное вам

письмо.

Само послание являет собой текстовый файл достаточно произвольного

содержания. При передаче нетекстовых данных (исполняемой программы,

графической информации) применяется перекодировка сообщений, которая

выполняется соответствующими программными средствами.

Почтовый электронный адрес может иметь разные форматы. Наиболее

широко распространена система формирования адреса DNS (Domain Name

System). Дешифрацию адреса и перевод его в необходимый формат осуществляют

встроенные программные средства, применяемые в сети Internet.

С точки зрения логики, для того чтобы адрес был информативным, необходимо

чтобы в нем присутствовали:

- идентификатор абонента (по аналогии - строка КОМУ: на почтовом

конверте);

- почтовые координаты, определяющие его местонахождение (по аналогии –

дом, улица, город, страна на почтовом конверте).

6

Page 6: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Почтовый электронный адрес имеет все эти составляющие. Для того чтобы

отделить идентификатор абонента от его почтовых координат, используется

значок @.

Рассмотрим пример адреса электронной почты: [email protected]. Слева от @

стоит имя адресата, точнее, имя его личного почтового ящика на машине, с

которой он забирает письма. Обычно пользователь называет свой почтовый ящик

тем же именем, под которым он зарегистрирован в системе. Чаще всего это имя

(например, vasya), фамилия (petrovich), или инициалы. Имя ящика может быть

любым, но оно должно быть написано английскими буквами и не содержать

пробелов.

Часть справа от @ называется доменом и описывает местонахождение этого

почтового ящика (машину или организацию).

1.2 Формат почтового сообщения

Почтовые службы на разных машинах представляют сообщения в разных

форматах, некоторые из которых несовместимы. Для решения этой проблемы был

разработан универсальный формат, который понимает большинство систем во

всем мире. Формат был назван RFC822 – по имени документа, в котором он

описан. Этот формат и является тем конвертом, в котором письмо дойдет

практически в любую точку земного шара.

Сообщение состоит из текста, который Вы хотите передать адресату, и

заголовка, который приписывается в начале сообщения, отделяется от текста

пустой строкой, и содержит несколько строчек необходимой информации об этом

сообщении: дату отправления, адрес, обратный адрес, тему сообщения, и другие.

Рассмотрим пример почтового сообщения (см. приложение Б листинг Б.1).

7

Page 7: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Первые 18 строчек составляют заголовок письма. Заметно, что каждая из строк

заголовка имеет вид:

- название: текст.

Названия строк заголовка расшифровываются так:

1) Return-Path: - обратный адрес по которому можно отправить ответ;

2) Received: - отметка о прохождении через машину (почтовый штемпель). В

рассматриваемом примере таких отметок три, значит, по пути письмо

прошло через три машины, и каждая из них обозначила дату, когда оно

проходило;

3) Date: - дата и время отправления письма. Обычно указываются в

стандартном формате, поскольку большинство почтовых систем сортируют

письма по времени их получения;

4) Message-Id: - внутренний идентификатор сообщения, который

присваивается почтовой службой отправителя. Каждому письму

присваивается свой уникальный идентификатор. Он уникален для всей сети,

поэтому не может существовать двух писем с одинаковыми

идентификаторами;

5) X-Priority: - приоритет письма, его важность. Письма с высокой важностью

доставляются также как и обычные, но имеют значок яркого цвета сразу же

привлекающего к себе внимание;

6) To: адрес получателя;

7) From: имя отправителя и отделенный угловыми скобками обратный адрес;

8) Subject: тема сообщения. Если используется язык отличный от английского

то тема кодируется в специальном MIME формате. Который способен

передать символы всех языков. При получении такого письма почтовый

клиент адресата декодирует полученную строку в символы национального

языка и показывает тему точно в таком же виде, в котором она и была

написана.

8

Page 8: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

2 ПРОТОКОЛЫ ПРИЕМА И ПЕРЕДАЧИ ДАННЫХ

Все компьютеры, через которые проходит письмо, принимают, обрабатывают

и передают дальше по сети пакет данных, который и являются письмом. На этих

компьютерах могут быть установлены различные операционные системы,

использоваться различные почтовые сервера и программы, но машины все равно

прекрасно “понимают” друг друга. Происходит это потому, что работают они по

всемирно принятому стандартному набору команд. Такой набор команд

называется – протоколом. Существует несколько разновидностей почтовых

протоколов, но активно используются и приняты за стандарт лишь два из них.

2.1 Протокол POP3

Протокол POP3 предназначен для обработки и выполнения операций с почтой

лежащей в почтовом ящике [1]. Перед работой POP3 сервер прослушивает порт

110. Когда клиент хочет использовать этот протокол, он должен создать TCP

соединение с сервером. Когда соединение установлено, сервер отправляет

приглашение. Затем клиент и POP3 сервер обмениваются информацией до тех

пор, пока соединение не будет закрыто или прервано. Команды POP3 состоят из

ключевых слов, за которыми следует один или более параметров команды.

Некоторые команды могут не иметь аргументов. Все команды заканчиваются

парой CRLF. Ключевые слова и аргументы состоят из печатаемых ASCII

символов. Ключевое слово и аргументы разделены одиночным пробелом.

Ключевое слово состоит от 3-х до 4-х символов, а аргумент может быть длиной до

40-ка символов.

9

Page 9: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Ответы в POP3 состоят из индикатора состояния и ключевого слова, за

которым может следовать дополнительная информация. Ответ также

заканчивается парой CRLF. Существует только два индикатора состояния:

- "+OK" – положительный;

- "-ERR" - отрицательный.

Ответы на некоторые команды могут состоять из нескольких строк. В этих

случаях каждая строка разделена парой CRLF, а конец ответа заканчивается

ASCII символом 46 (".") и парой CRLF.

POP3 сессия состоит из нескольких режимов. Как только соединение с

сервером было установлено, и сервер отправил приглашение, то сессия переходит

в режим AUTHORIZATION (Авторизация). В этом режиме клиент должен

идентифицировать себя на сервере. После успешной идентификации сессия

переходит в режим TRANSACTION (Передача). В этом режиме клиент

запрашивает сервер выполнить определённые команды. Когда клиент отправляет

команду QUIT, сессия переходит в режим UPDATE. В этом режиме POP3 сервер

освобождает все занятые ресурсы и завершает работу. После этого TCP

соединение закрывается.

У POP3 сервера может быть INACTIVITY AUTOLOGOUT таймер. Этот

таймер должен быть, по крайней мере, с интервалом 10 минут. Это значит, что

если клиент и сервер не взаимодействуют друг с другом, сервер автоматически

прерывает соединение и при этом не переходит в режим UPDATE.

Как только будет установлено TCP соединение с POP3 сервером, он отправляет

приглашение, заканчивающееся парой CRLF.

Листинг 2.1.1 Приглашение сервера

S: +OK POP3 server ready

Теперь POP3 сессия находится в режиме AUTHORIZATION. Клиент должен

идентифицировать себя на сервере, используя команды USER и PASS.

10

Page 10: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Сначала необходимо отправить команду USER, после которой в качестве

аргумента следует имя пользователя. Если сервер отвечает положительно, то

теперь необходимо отправить команду PASS, за которой следует пароль. Если

после отправки команды USER или PASS сервер отвечает негативно, то можно

попробовать повторно пройти авторизацию или выйти из сессии.

Для выхода из сессии используется команда QUIT. В случае успешной

авторизации сервер открывает и блокирует maildrop (почтовый ящик). Сессия

переходит в режим TRANSACTION, где пользователь может передавать

ниже следующие команды:

- STAT;

- LIST;

- RETR;

- DELE;

- NOOP;

- TOP;

- RSET.

Команда STAT не имеет аргументов. В ответ на вызов команды сервер выдаёт

положительный ответ "+OK", за которым следует количество сообщений в

почтовом ящике и их общий размер в символах. Если сообщения ранее были

помечены для удаления, то они не учитываются в ответе сервера.

Возможные ответы:

- +OK [число сообщений] [общий размер].

Листинг 2.1.2 Ответ сервера на команду STAT

C: STAT

S: +OK 2 320

Команда LIST имеет необязательный параметр. Если аргумент был передан, то

сервер выдаёт информацию об указанном сообщении.

11

Page 11: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

При передаче команды без параметров, сервер выдаёт информацию обо всех

сообщениях, находящихся в почтовом ящике. Сообщения, помеченные для

удаления, не перечисляются.

Возможные ответы:

- +OK listing follows;

- -ERR no such message.

Листинг 2.1.3 Ответы сервера на команду LIST

C: LIST

S: +OK 2 messages (320 octets)

S: 1 120

S: 2 200

S: .

...

C: LIST 2

S: +OK 2 200

...

C: LIST 3

S: -ERR no such message

Команда RETR имеет один обязательный аргумент. В этом аргументе серверу

передается номер сообщения. После положительного ответа сервер передаёт

содержание сообщения.

Возможные ответы:

- +OK message follows;

- -ERR no such message.

Листинг 2.1.4 Ответ сервера на команду RETR

C: RETR 1

S: +OK 120 octets

12

Page 12: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

S:

S: .

[содержимое письма]

S: .

Команда DELE имеет один аргумент – номер сообщения. При получении этой

команды POP3 сервер помечает указанное сообщение как удалённое, но не

удаляет его, пока сессия не перейдёт в режим UPDATE.

Возможные ответы:

- +OK message deleted;

- -ERR no such message.

Листинг 2.1.5 Ответ сервера на команду DELE

C: DELE 1

S: +OK message 1 deleted

...

C: DELE 2

S: -ERR message 2 already deleted

Команда NOOP не имеет аргументов. Получив эту команду POP3 сервер

ничего не делает, но всегда отвечает положительно. Эту команду часто

используют, чтобы избежать дисконнекта по таймауту.

Возможные ответы:

- +OK.

Листинг 2.1.6 Ответ сервера на команду NOOP

C: NOOP

S: +OK

13

Page 13: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Команда TOP дает большую свободу при работе с сообщениями. Команда

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

части письма. Первый аргумент является номером письма. Второй аргумент

обозначает количество строк из тела сообщения, которые требуется получить.

Если ответ сервера положительный, то после него он передаёт заголовки

сообщения и указанное количество строк из тела сообщения.

Возможные ответы:

- +OK top of message follows;

- -ERR no such message.

Листинг 2.1.7 Ответ сервера на команду TOP

C: TOP 1 10

S: +OK

S: [заголовок первого сообщения и первые 10 строк]

S: .

...

C: TOP 100 3

S: -ERR no such message

Команда RSET не имеет аргументов и предназначена для восстановления

сообщений помеченных для удаления. При получении данной команды почтовый

сервер снимает со всех сообщений метку об удалении, если какие либо из писем

были ей помечены. Следует отметить, что данная команда способна восстановить

сообщения удаленные только в текущей и еще не завершенной почтовой сессии.

После перехода в режим UPDATE восстановить сообщения будет невозможно.

Возможные ответы:

- +OK.

14

Page 14: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Листинг 2.1.8 Ответ сервера на команду RSET

C: RSET

S: +OK maildrop has 2 messages (320 octets)

Команда QUIT завершает сессию. Когда клиент передаёт команду QUIT в

режиме TRANSACTION, то сессия переходит в режим UPDATE. В этом режиме

сервер удаляет все сообщения, помеченные для удаления. После этого TCP

соединение закрывается.

Команды POP3 протокола предоставляют разработчику почтовых программ

простое и одновременно мощное средство управления письмами на сервере.

2.2 Протокол SMTP

Основная задача протокола SMTP (Simple Mail Transfer Protocol) заключается в

том, чтобы обеспечивать передачу электронных сообщений (писем) [2]. Для

работы через протокол SMTP клиент создаёт TCP соединение с сервером через

порт 25.

Затем клиент и SMTP сервер обмениваются информацией до тех пор, пока

соединение не будет закрыто или прервано. Основной процедурой в SMTP

является передача почты (Mail Procedure). Далее идут процедуры

перенаправления почты (Mail Forwarding), проверка имён почтового ящика и

вывод списков почтовых групп. Самой первой процедурой является открытие

канала передачи, а последней - его закрытие. Команды SMTP указывают серверу,

какую операцию хочет произвести клиент. Команды состоят из ключевых слов, за

которыми следует один или более параметров. Ключевое слово состоит из 4-х

символов и разделено от аргумента одним или несколькими пробелами. Каждая

командная строка заканчивается символами CRLF.

15

Page 15: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Синтаксис всех команд протокола SMTP (SP - пробел):

- HELO <SP> <domain> <CRLF>;

- MAIL <SP> FROM:<reverse-path> <CRLF>;

- RCPT <SP> TO:<forward-path> <CRLF>;

- DATA <CRLF>;

- RSET <CRLF>;

- SEND <SP> FROM:<reverse-path> <CRLF>;

- SOML <SP> FROM:<reverse-path> <CRLF>;

- SAML <SP> FROM:<reverse-path> <CRLF>;

- VRFY <SP> <string> <CRLF>;

- EXPN <SP> <string> <CRLF>;

- HELP <SP> <string> <CRLF>;

- NOOP <CRLF>;

- QUIT <CRLF>.

Описание команд:

- HELO. Команда передает серверу IP адрес отправителя письма при старте

почтовой сессии;

- MAIL FROM. Указывает отправителя;

- RCPT TO. Указывает получателя;

- DATA. Указывает серверу, что будет передаваться содержание письма

(заголовок и тело письма);

- RSET. Указывает серверу прервать выполнение текущего процесса. Все

сохранённые данные (отправитель, получатель и др.) удаляются. Сервер

должен отправить положительный ответ;

- SEND. Используется вместо команды MAIL и указывает, что почта должна

быть доставлена на терминал пользователя;

- SOML, SAML. Комбинации команд SEND или MAIL, SEND и MAIL

соответственно;

- VRFY. Просит сервер проверить, является ли переданный аргумент именем

пользователя. В случае успеха сервер возвращает полное имя пользователя;

16

Page 16: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

- EXPN. Просит сервер подтвердить, что переданный аргумент - это список

почтовой группы, и если так, то сервер выводит членов этой группы;

- HELP. Запрашивает у сервера полезную помощь о переданной в качестве

аргумента команде;

- NOOP. Ничего не делает и никак не влияет на указанные до этого данные,

но на вызов этой команды сервер должен ответить положительно;

- QUIT. Завершает работу и закрывает соединение.

Обычный ответ SMTP сервера состоит из номера ответа, за которым через

пробел следует дополнительный текст. Номер ответа служит индикатором

состояния сервера.

Чтобы отправить почту нужно подключиться к SMTP серверу через порт 25 и

передать серверу команду HELLO и свой IP адрес.

Листинг 2.2.1 Подключение к SMTP серверу

C: HELO 195.161.101.33

S: 250 smtp.mail.ru is ready

Указываем отправителя и получателя письма, каждый раз дожидаясь

положительного ответа.

Листинг 2.2.2 Указание отправителя и получателя письма

C: MAIL FROM:&lt;drozd&gt; 'указываем отправителя

S: 250 OK

C: RCPT TO:&lt;[email protected]&gt; 'указываем получателя

S: 250 OK

Указываем серверу, что будем передавать содержание письма (заголовок и

тело письма). Передачу письма необходимо завершить символами CRLF.CRLF

17

Page 17: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Листинг 2.2.3 Начало передачи письма

C: DATA

S: 354 Start mail input; end with <CRLF>.<CRLF>

Между заголовком письма и его текстом не одна пара CRLF, а две.

Листинг 2.2.4 Передача письма

S: 250 OK

C: From: Drozd <[email protected]>

C: To: Vasya <[email protected]>

C: Subject: Hello

C: Hello Vasya!

C: I will meet with you on the next week.

Передачу необходимо закончить символами CRLF.CRLF и после этого

передать серверу команду QUIT для завершения работы.

Листинг 2.2.5 Завершение работы

S: QUIT

C: 221 smtp.mail.ru is closing transmission channel

18

Page 18: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

3 ПРОБЛЕМА СПАМА

3.1 Анализ сложившейся ситуации. Актуальность проблемы

Термин "спам" произошел от словосочетания spice ham (SPiced hAM - SPAM),

которое переводится на русский язык как ветчина со специями. Случилось это в

1937 году. Компания Hornel начала выпускать новый продукт - ветчину со

специями в виде консервов. Но поскольку качество этого товара было самым

отвратительным, то к концу года склады компании оказались заполнены

консервами. Чтобы распродать все это, Hornel впервые провела массовую

рекламную компанию, благодаря которой излишки моментально были

раскуплены. С тех пор термин "СПАМ" стал обозначением для наглой и

беспардонной непрошеной рекламы.

В широких массах это слово стало использоваться не так давно. С тех пор как

Интернет стал доступен большому количеству пользователей и стал

привлекателен для различных видов подобного рода "бизнеса".

Проблема заключается в навязчивости и количестве спама. Сначала приходит

одно письмо, потом другое, через месяц спам уже может составлять чуть ли не

половину всей корреспонденции. А это чревато последствиями. Во-первых,

теряется личное время на сортировку писем, определение рекламы и удаление ее.

Кроме того, лишняя корреспонденция - это лишнее время в нахождения в сети

Интернет и лишний трафик, то есть человек терпит прямые финансовые затраты.

Спам не похож на обычную рекламу. Можно не читать объявления в газете или

переключить телевизор на другой канал, едва увидев надоевшие кадры. Но с

электронной почтой дело обстоит по-другому. В любом случае приходится

скачивать рекламное письмо, чтобы прочитать корреспонденцию, пришедшую за

ним, а это уже принуждение.

19

Page 19: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Рассылка спама - действие противозаконное. Прежде всего это нарушение

закона о рекламе. К тому же спам не приветствуется сетевой общественностью.

Но, несмотря на это армия спамеров растет с каждым днем. И будет расти до тех

пор, пока не будут, приняты суровые законы по борьбе с ним или не иссякнет

спрос. А спрос есть. Если при массовой рассылке писем откликается на

предложение хоть один человек из тысячи, то, учитывая дешевизну этого метода

рекламы, это не так уж и плохо.

Рассылка спама сравнивают с расклейкой написанных от руки объявлений на

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

одна компания заниматься этим делом не будет. Рассылка всякого мусора по

электронной почте, может дискредитировать организацию, лишить ее

возможности переписки с остальными. Имиджу такой компании будет нанесен

непоправимый ущерб.

Спам подходит только для всевозможных мошенников, участников

финансовых пирамид, различных электронных казино, владельцев порносайтов и

прочих ресурсов с сомнительной репутацией. Неудивительно, что многие люди

приходят в состояние бешенства, потратив время и деньги на получение почты и

обнаружив там лишь ненавистную рекламу. Что в свою очередь наносит им не

только финансовый и моральный ущерб, но и вредит здоровью.

3.2 Методы борьбы со спамом

Чтобы эффективнее строить схему защиты необходимо разложить приходящий

спам на несколько категорий, классифицировать его [3].

Виды спама:

1) рекламные объявления с содержанием: "Сдаем в аренду офис", "Продаем

сто тонн сталепроката" и похожими предложениями. Объявления

рассылаются спамерами (по заказу каких-то фирм, причем эти фирмы часто

20

Page 20: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

не имеют понятия, каким образом им делают "рекламу в Интернете").

Присланные письма обычно содержат реально существующие координаты:

телефоны или адреса. Также в эту группу спама входят предложения каких-

то услуг: модифицировать сайт, удлинить части тела, вывести все волосы на

ушах и тому подобное;

2) предложения по участию в финансовых пирамидах. Обычно в самом начале

писем идет или уверение в том, что, дескать, "это не спам" (спамеры очень

любят фразу "это не спам"), и безвестный отправитель предлагает работу, за

которую вы получите сто тысяч долларов в месяц, или немного меньше.

Очень часто в теме таких писем пишут "НЕ УДАЛЯЙТЕ ЭТО ПИСЬМО"

или "Please Read IT Carefully";

3) предложения зайти на какой либо сайт. Такие письма старательно

маскируются спамерами, поэтому распознать их сложнее. Их цель -

заставить пользователя нажать на ссылку, стоящую в письме. Средства для

этого выбираются самые разные, но обычно спекулирующие на

человеческой жадности и глупости. Содержание таких писем зависит

только от фантазии спамера;

4) рассылка писем содержащих в себе компьютерные вирусы;

5) “письма от африканского миллионера”. Такого спама настолько много что

даже появился новый термин “Нигерийский спам”. В таких письмах

адресату предлагают отмыть большую сумму “грязных” денег обещая за это

десятки миллионов.

Каким образом сетевая общественность борется со спамом? Самый простой

способ борьбы - это профилактика. Спамеры получают электронные адреса своих

жертв при помощи специальных программ. Эти утилиты сканируют

определенные веб-страницы (доски объявлений, форумы, гостевые книги) и

извлекают из них адреса электронной почты. Далее спамер использует

полученную информацию в своих корыстных целях или продает полученную базу

данных другим мошенникам. Чтобы не попасться, можно нигде и никогда не

оставлять свой e-mail, вот только зачем он тогда нужен?

21

Page 21: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Некоторые люди пишут свой электронный адрес с пробелами, либо заменяют

символы из него шестнадцатеричными кодами, например, так: davmar%40udm.ru.

При сканировании страницы такие адреса будут пропущены, но при просмотре в

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

появились спамерские утилиты, заменяющие шестнадцатеричные коды на

символы, поэтому этот способ защиты утратил надежность.

Сетевые администраторы компаний предоставляющих доступ пользователям в

Интернет сеть иногда применяют фильтрацию писем по их содержанию, так

называемые “антиспамовые фильтры”. Использование этого метода опасно из-за

риска неполучения пользователем нужного письма.

Альтернатива фильтрам - предварительная регистрация адресов, с которых

разрешен прием почты. Но данный способ очень неудобен, а для тех, кто должен

получать почту с любых адресов, и вовсе неприемлем.

3.3 Предлагаемое решение проблемы

При анализе существующей ситуации напрашивается вывод о недостаточной

эффективности современных методов борьбы со спамом. Каждый из них имеет

свои серьезные недостатки. Какими же свойствами должно обладать новое

программное средство чтобы сохранить в себе достоинства старых методов и при

этом свести отрицательный эффект к минимуму?

Одной из главных проблем является необходимость получения всех писем на

сервере, не зная заранее что, содержится в них. Если бы это были обычные (не

электронные) письма, то при осмотре конверта и адреса отправителя в

большинстве случаев можно сразу понять реклама ли это, которую нужно

выбросить или же важное личное письмо. Значит, новое программное средство

должно предоставлять пользователю возможность просмотреть конверт письма.

22

Page 22: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Если какое либо из писем лежащих на сервере окажется спамом то

пользователь просто удалит это письмо даже не получая его.

Преимущества данного подхода:

- большая часть спама будет распознана и сразу же удалена пользователем;

- экономия сетевого трафика и средств пользователя за счет отсутствия

необходимости получения "мусорных" писем;

- увеличение в несколько раз скорости работы с почтой за счет получения

только заголовков писем.

Достоинства данного подхода очевидны. Но в сетевой практике случаются

ситуации, когда пользователь может получить не несколько рекламных писем, а

большое количество их. В этом случае удаление писем по одиночке занимает

большое количество времени.

Чтобы решить эту проблему программа должна предоставить пользователю

возможность автоматически фильтровать лежащие в ящике письма, и средство

управления фильтрами. В таком случае для очистки ящика от непрошеной

корреспонденции достаточно будет добавить в фильтр слово встречающиеся в

заголовке этого письма. К примеру, адрес спамера – отправителя.

При следующей проверке почтового ящика программа автоматически удалит

все письма, в заголовке которых встречается данное слово или фраза. При этом

очистка почтового ящика займет всего несколько секунд, а нужная и важная

корреспонденция останется на месте. Конечно, все еще существует риск удаления

действительно нужного письма. Поэтому пользователь должен иметь

возможность самостоятельной настройки или же полного отключения данной

функции.

23

Page 23: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

4 РАЗРАБОТКА ПРОГРАММЫ

4.1 Создание проекта. Написание программы

Прежде всего, необходимо выделить требования которым должна

удовлетворять программа.

Программа должна:

- иметь интуитивный и понятный пользователю интерфейс;

- быстро получать заголовки (конверты) писем и предоставлять их в виде

понятном пользователю;

- иметь возможность фильтрования писем по словам и целым фразам

содержащимися в заголовке;

- иметь гибкую систему настроек управления фильтрами или отключения их

по желанию пользователя;

- предоставить возможность вручную управлять письмами на сервере и

обеспечить удобный интерфейс для этого;

- обеспечить поддержку неограниченного количества почтовых ящиков,

которые может создать пользователь;

- обеспечить безопасность вводимых пользователем данных. В частности

пароля на личный почтовый ящик.

Для выполнения поставленной задачи использовались методы объектно-

ориентированного программирования, и среда разработки Borland Delphi 6 [4].

Для хранения информации использованы:

- служебный файл операционной системы Windows, с расширением ini;

- текстовой файл, с расширением txt.

Данный способ хранения информации был выбран, потому что файлы этого

типа легко редактируются текстовым редактором, что предоставляет

пользователю возможность изменять настройки программы простым

редактированием файла настроек [5].

24

Page 24: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Конфиденциальная информация шифруется, что позволяет безопасно хранить

пароли от почтовых ящиков [6]. При открытии файла настроек текстовым

редактором пароль пользователя будет представлен в нечитаемом и непригодном

для копирования виде, что обеспечивает необходимую безопасность хранения

информации [7].

Для визуализации элементов управления программы использовались

следующие компоненты:

1) ListView: TlistView – отображает список писем в виде таблицы элементов;

2) Pop: TIdPOP3 - используется для работы c сервером работающим по

протоколу POP3;

3) IdAntiFreeze1: TIdAntiFreeze – используется для более эффективной работы

компонента Pop;

4) WebBrowser1: TwebBrowser – отображает содержимое писем;

5) Msg: TidMessage – позволяет корректно обрабатывать получаемую

информацию от компонента Pop.

Помимо этих компонентов в программе используется множество других

стандартных компонентов Delphi 6 [8].

После запуска программы перед пользователем появляется главное окно, в

котором содержится главное меню, панель инструментов для управления

программой, список введенных ранее почтовых ящиков (см. приложение A

рис.А.1).

Для проверки почты необходимо выбрать почтовый ящик из выпадающего

списка слева, и выбрать пункт главного меню «Почта», подпункт: «Проверить

почту». Также проверить почту можно с помощью панели инструментов

расположенной в верхней части программы. Для этого нужно выбрать нужный

почтовый ящик и щелкнуть мышкой по левой крайней кнопке с подсказкой

«Проверить почту» (см. приложение A рис.А.2).

После активации проверки почты программа открывает соединение с сервером

и проверяет наличие писем в электронном ящике пользователя. Если ящик пуст,

то пользователю выводится сообщение об этом.

25

Page 25: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Листинг 4.1.1 Соединение с сервером

POP.Connect;

FMsgCount:=POP.CheckMessages;

FMailBoxSize:=POP.RetrieveMailBoxSize div 1024;

ShowFileStatus;

if FMsgCount > 0 then begin

ShowFileStatus; a:=nil;

SetLength(a,FMsgCount);

RetrievePOPHeaders(FMsgCount);

end

else begin

ShowStatus('Нет сообщений на сервере');

end;

Showbusy(false);

Все кнопки панели инструментов имеет всплывающие подсказки, кратко

характеризующие назначение каждой кнопки [9].

При обнаружении писем в почтовом ящике программа посылает запрос

серверу о количестве писем и общем размере занимаемого ими места [10].

Листинг 4.1.2 Проверка количества писем на сервере и их общего размера

FMsgCount := POP.CheckMessages;

FMailBoxSize := POP.RetrieveMailBoxSize div 1024;

ShowFileStatus;

Полученная информация и сведения о действиях выполняемых программой

пользователь может увидеть в строке состояния расположенной в нижней части

окна приложения (см. приложение A рис.А.3).

26

Page 26: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Листинг 4.1.3 Вывод информации в строку состояния

Statusbar1.Panels[2].text:=format('Почта занимает %d Кб на сервере',

[FMailBoxSize]);

StatusBar1.Refresh;

После определения количества писем программа получает заголовки для

каждого письма и декодирует информацию, содержащуюся в них [11].

При выделении мышкой интересующего пользователя письма краткая

информация об отправителе, теме, дате отправления и размере письма выводится

в информационной панели программы.

Все полученные данные сохраняются в оперативной памяти компьютера, что

избавляет от необходимости повторного их получения в случае выделения

мышкой уже просмотренного письма. Данная мера повышает эффективность

работы программы и экономит сетевой трафик [12].

Листинг 4.1.4 Получение заголовка письма

POP.RetrieveHeader(intIndex, Msg);

itm := ListView1.Items.Add;

itm.ImageIndex := 7;

itm.Caption := InlineDecode(Msg.Subject,GetCurCP);

tec_subj:=itm.Caption;

itm.SubItems.Add(InlineDecode(Msg.From.Text,GetCurCP));

tec_from:=itm.SubItems.Strings[0];

itm.SubItems.Add(DatetoStr(Msg.Date));

itm.SubItems.Add(IntToStr(POP.RetrieveMsgSize(intIndex)));

itm.SubItems.Add('- >');

itm.SubItems.Add(TimetoStr(Msg.Date));

Имея информацию о каждом письме, программа сверяет содержимое полей

«From» и «Subject» c фрагментами строк, содержащимися в файле filter.txt [13].

27

Page 27: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Файл filter.txt находится в одной директории с программой и содержит в себе

образцы строк наиболее часто встречающихся в письмах спамеров. Этот файл

может быть легко отредактирован пользователем в любом текстовом редакторе

или в настройках самой программы, что позволяет быстро реагировать на новые

виды спама.

Листинг 4.1.5 Проверка полей «From» и «Subject» конверта письма

if f_from=true then begin

for i:=0 to l.Count-1 do begin

if StrPos(pchar(tec_from),pchar(l.Strings[i]))<>nil then a[intIndex-1]:=1;

end;

end;

if f_subject=true then begin

for i:=0 to l.Count-1 do begin

if StrPos(pchar(tec_subj),pchar(l.Strings[i]))<>nil then a[intIndex-1]:=1;

end;

end;

Если подстрока из файла-фильтра найдена в полях «From» и «Subject» письма

значит данное письмо является спамом и программа выполняет действия

выбранные ранее в настройках пользователем [14]. Предусмотрено три варианта

реагирования программы:

1) удаление без предупреждения. Письмо будет сразу же удалено с сервера, и

пользователь даже не будет знать, что оно приходило;

2) автоматически помечать удаленными. Письмо будет показано в списке всех

писем но с меткой «удалено», отличающимся от других значком и

предоставлением выбора дальнейших действий пользователю;

3) вывод краткой информации и запрос подтверждения на удаление для

каждого предположительно спамерского письма.

28

Page 28: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Пользователь имеет возможность фильтровать как любое по отдельности из

выбранных им полей, так и оба поля одновременно. В случае предпочтения

пользователем ручной работы с сервером, имеется возможность полного

отключения функции фильтрации. [15]

Листинг 4.1.6 Выбор программой действий в случае обнаружении спама

for i:=1 to length(a) do begin

if a[i-1]=1 then begin case filtermode of

1: begin

Showbusy(true);

POP.Delete(i);

Showbusy(false);

angry:=true;

end;

2: begin

Showbusy(true);

POP.Delete(i);

ListView1.Items.Item[i-1].ImageIndex:=3;

Showbusy(false);

end;

3: begin if MessageDlg('Spam detected'+#13+'Письмо

'+inttostr(i)+'-вероятно спам.'+#13+'Удалить

его?',mtConfirmation,[mbYes,mbNo], 0) =mrYes then begin

Showbusy(true);

POP.Delete(i);

ListView1.Items.Item[i-1].ImageIndex:=3;

Showbusy(false);

end;

end; end; end;

29

Page 29: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

4.2 Опции и настройки программы

Для входа в панель настроек необходимо выбрать пункт главного меню

«Сервис» и выполнить щелчок мышкой по одному из трех содержащихся в нем

подпунктов. Каждый подпункт открывает соответствующую ему страницу

настроек программы. Также попасть в панели настроек можно с помощью

соответствующей кнопки панели инструментов, расположенной в верхней части

программы.

Панель настроек программы имеет три вкладки:

1) почтовые ящики;

2) настройки программы;

3) фильтр.

Панель «Почтовые ящики» позволяет пользователю добавлять новые учетные

записи, а также редактировать или удалять уже имеющиеся (см. приложение A

рис.А.4).

Для добавления нового ящика необходимо заполнить находящиеся справа поля

и выполнить щелчок по кнопке «Добавить». При этом учетная запись сохраняется

программой, и новый почтовый ящик будет автоматически добавлен в

выпадающий список, расположенный на главном окне программы. Также

название добавленного ящика будет отображено в списке всех

зарегистрированных ящиков, находящемся в правой части панели.

Для удаления учетной записи достаточно выделить ее мышью и выполнить

щелчок по кнопке «Удалить».

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

нужную запись мышкой, отредактировать отобразившуюся в панели слева

информацию и выполнить щелчок по кнопке «Сохранить изменения».

Панель «Настройки программы» предоставляет пользователю выбор действий

выполняемых программой при обнаружении спама (см. приложение A рис.А.5).

30

Page 30: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Имеется возможность сменить порт, используемый программой, а также

активировать опцию «Посылать NOOP серверу» с выбором интервала

отправления команды, в целях избежания досрочного завершения работы с

сервером.

Панель «Фильтр» используется для настройки фильтра используемого

программой (см. приложение A рис.А.6). Пользователь имеет возможность

добавлять либо удалять слова и целые фразы, которые будут использованы в

процессе фильтрации писем.

Программа позволяет осуществлять выбор полей, проверка которых будет

осуществлена при получении заголовка письма. Также имеется возможность

полного отключения данной функции.

31

Page 31: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

ЗАКЛЮЧЕНИЕ

За период проведения исследования были изучены сетевые почтовые

протоколы POP3, SMTP. Изучен формат почтовых сообщений. Разобран

механизм системы адресации электронной почты. Проведен анализ проблемы

спама в современной глобальной компьютерной сети Internet. Исследованы пути

появления спама и выполнена его классификация. Проведено исследование

механизма работы современных средств защиты от спама и анализ их

эффективности. На базе выполненных исследований разработано программное

средство для решения создавшейся в сети проблемы.

Выполненная работа имеет широкий ареал практического применения и

высокую социальную значимость.

Программа рекомендуется к использованию во всех информационных

отраслях, а также больших и малых предприятий, организаций и частных лиц,

использующих электронную почту как средство обмена информацией.

32

Page 32: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Описание протокола POP3 http://www.codenet.ru/webmast/pop3.php

2. Описание протокола SMTP http://www.codenet.ru/webmast/smtp.php

3. Борьба со Спамом http://www.user.cityline.ru:8081/~uptoroad/index.html

4. Архангельский А.Я. Интегрированная среда разработки Delphi. Изд.

«Бином» – 1999. –256 с.

5. Фленов М.Е. Библия Delphi. Изд. «БХВ-Петербург» – 2004. –880 c.

6. Александровский А., Шубин В. Delphi для профессионалов. Опыт

практического применения. Изд. «Питер» – 2000. –240 c.

7. Тейксейра С., Пачеко К. Borland Delphi 6. Руководство разработчика.

Изд. «Вильямс» – 2002. –1120 c.

8. Лишнер Р. Delphi. Справочник. Изд. «Символ-Плюс» – 2001. –640 c.

9. Фаронов В.В. Delphi 6. Учебный курс. Изд. «Питер» – 2001. –672 с.

10. Подольский С., Скиба С., Кожедуб О. Разработка интернет-приложений

в Delphi. Изд. «BHV» – 2000. –432 c.

11. Тюкачев Н., Свиридов Ю. Delphi 5. Создание мультимедийных

приложений. Изд. СПб «Питер» – 1999. –384 c.

12. Фаронов В.В. Delphi. Программирование на языке высокого уровня:

Учебник для вузов. Изд. «Питер» – 2003. –640 c.

13. Бобровский С. Delphi 6: библиотека программиста. Изд. «Питер» – 2001.

–560 c.

14. Гофман В., Хомоненко А. Delphi: быстрый старт. Изд. «BHV» – 2002. –

288 c.

15. Суворов К. Справочник Delphi. Базовые классы. Изд. «BHV» – 2002. –

576 c.

33

Page 33: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

ПРИЛОЖЕНИЕ А

Рисунок А.1 Главное окно программы

Рисунок А.2 Проверка почты. Список ящиков

Рисунок А.3 Строка состояния программы

34

Page 34: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

Рисунок А.4 Панель «Почтовые ящики»

Рисунок А.5 Панель «Настройки программы»

Рисунок А.6 Панель «Фильтр»

35

Page 35: Курсовая работа на тему 'Электронная почта и создание почтового клиента'.doc

ПРИЛОЖЕНИЕ Б

Листинг Б.1 Пример почтового сообщения

Return-Path: <[email protected]>

Received: from steer.melitopol.net.ua (steer.melitopol.net.ua [62.244.58.3]) by

engine.melitopol.net.ua (8.11.6/8.11.6) with ESMTP id g460X9m37485 for

<[email protected]>; Mon, 6 May 2002 03:33:09 +0300 (EEST) (envelope-from

[email protected])

Received: from worldnews.org ([email protected] [204.152.186.188]) by

steer.melitopol.net.ua (8.11.6/8.11.6) with ESMTP id g460XEs12344 for

<[email protected]>; Mon, 6 May 2002 03:33:15 +0300 (EEST) (envelope-from

[email protected])

Received: (from news@localhost) by worldnews.org (8.11.6/8.11.6) id g460Wk599203;

Sun, 5 May 2002 17:32:46 -0700 (PDT) (envelope-from [email protected])

Date: Sun, 5 May 2002 17:32:46 -0700 (PDT)

Message-ID: <200205060032.g460Wk599203@l worldnews.org >

X-Priority: 3

To: <[email protected]>

From: < [email protected]>

Subject: Confirmation for subscribe worldnews digest

Thank you for registering with worldnews.

If you have any questions about the policy of the list owner, please contact support@

worldnews.org.

36