Электронная почта Четыре основных компонента почтовые клиенты пользователей почтовые серверы протокол отправки почты: SMTP протоколы доступа к почтовому ящику: POP3 или IMAP 2 Клиенты Функции клиента: отправка и получение почты создание, редактирование писем просмотр писем Популярные клиенты: Браузер (у серверов с веб-интерфейсом) Microsoft Outlook (входит в MS Office) Mozilla Thunderbird (бесплатная) The Bat (платная) 3 Почтовые серверы Функции сервера хранение писем пользователей (почтовые ящики) отправка писем почтовому серверу получателя или клиенту пользователя (MTA, MDA, MUA) организация очереди сообщений Используют протокол TCP Стандартные порты: 25 - SMTP, 110 - POP3, 143 - IMAP 4 Популярные серверы Sendmail (бесплатный, Linux / Windows) qmail (бесплатный, Linux) Microsoft Exchange Server (поддерживает Active Directory) Postfix MDA: dovecot, procmail и maildrop 5 Как происходит доставка писем? alisa@mail.ru bob@b.org 6 Протокол SMTP используется для транспортировки электронной почты на почтовый сервер работает поверх TCP, стандартный порт сервера 25 посылка почты осуществляется в 3 этапа приветствие (рукопожатие) пересылка писем закрытие сессии команды – обычный ASCII текст 7 Пример SMTP-сессии Server:220 Mail.Ru ESMTP Client: HELO me.ru Server: 250 mx24.mail.ru ready to serve Client: MAIL FROM: <I@me.ru> Server: 250 OK Client: RCPT TO: <gena@mail.ru> Server: 250 OK Client: DATA Server: 354 Go ahead Client: Privet, Gena!!! Pozdravlyau tebya s dnem rojdeniya … . Server: 250 Message accepted for delivery Client: QUIT Server: 221 mx24.mail.ru closing connection 8 На самом деле было так: Server:220 Mail.Ru ESMTP Client: HELO me.ru Server: 250 mx24.mail.ru ready to serve Client: MAIL FROM: <I@me.ru> Server: 250 OK Client: RCPT TO: <gena@mail.ru> Server: 250 OK Client: DATA Server: 354 Go ahead Client: Privet, Gena!!! Pozdravlyau tebya s dnem rojdeniya … . Server: 550 spam message discarded. If you think that the system is mistaken, please report details to abuse@corp.mail.ru Client: QUIT Server: 221 mx24.mail.ru closing connection 9 Формат сообщения электронной почты From: <адрес отправителя> To: <адрес получателя> Subject: <тема> CC: <список получателей, которым отправится копия> BCC: <список адресов> (это «слепая копия», то есть получатели не знают, что это письмо отправлено еще кому–то) <Пустая строка> <Текст письма в семибитной кодировке ASCII> 10 Пример From: drug@yandex.ru To: gena@mail.ru Subject: Pozdravlyau! Privet, Gena!!! Pozdravlyau tebya s dnem rojdeniya … . 11 Кодирование сообщений MIME (Multipurpose Internet Mail Extension – многоцелевое расширение почты Интернета) — стандарт, описывающий передачу различных типов данных по электронной почте В заголовок сообщения добавляются строки: MIME–Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=“Windows-1251” Другие значения поля Content-Type: text/html, image/gif, image/jpeg, multipart/mixed Другие значения поля Content-Transfer-Encoding: 7bit, 8bit, binary, base64, quoted-printable 12 Base64 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/ Пример: Компьютерные сети! 0JrQvtC80L/RjNGO0YLQtdGA0L3Ri9C1INGB0LXRgtC4IQ== 13 Дополнения (attachments) From: drug@yandex.ru To: gena@mail.ru Subject: Pozdravlyau! MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=“----------F9876678DDB9” ----------F9876678DDB9 Content-Type: text/plain; charset=Windows-1251 Content-Transfer-Encoding: 8bit Privet, Gena!!!... ----------F9876678DDB9 Content-Type: image/jpg; name=“otkritka.jpg” Content-transfer-encoding: base64 Content-Disposition: attachment; filename=“otkritka.jpg” base64 encoded data ..... ----------F9876678DDB9 14 Доступ к письмам в почтовом ящике POP3 - Post Office Protocol; порт сервера 110 IMAP: Internet Mail Access Protocol [RFC 1730]; порт сервера 143 авторизация и скачивание сообщений с сервера «толстый почтовый клиент» больше возможностей, более сложный позволяет управлять сообщениями на сервере «тонкий почтовый клиент» HTTP: mail.ru, yandex.ru, gmail.com «сверхтонкий почтовый клиент» 15 Протокол POP3 S: +OK C: USER kto_to S: +OK Password required for user kto_to C: PASS 123456 S: +OK C: STAT S: +OK 118 6286336 C: LIST S: +OK 118 messages (6286336 octets) 1 1203 2 534 3 1200432 и т.д. . 16 Протокол POP3 C: UIDL S: +OK 118 messages (6286336 octets) 1 4323549873 2 5243509832 3 9653582120 и т.д. . C: RETR 115 S: +OK 2259 octets сообщение . C: DELE 115 C: QUIT S: +OK POP3 server at mail.ru signing off 17 Протокол IMAP Письма хранятся на сервере, а не на клиенте. Клиент запрашивает только заголовки писем! Возможен доступ (даже одновременный) к одному и тому же почтовому ящику с разных клиентов Возможно создание общих папок, к которым могут иметь доступ несколько пользователей Поддержка поиска на сервере Поддержка онлайн-работы 18 Доступ к электронной почте через веб-интерфейс Клиент пользователя – веб-браузер Письмо передается веб-серверу по протоколу HTTP, который вызывает CGIприложение, отправляющее письмо адресату Другой вариант: браузер обращается к веб-сокет-серверу, который отправляет почту 19 Спам Виды: Реклама Антиреклама Нигерийские письма Фишинг Автоматический поиск email-адресов Средства борьбы: фильтрация 20 Служба передачи файлов FTP FTP – File Transfer Protocol Протокол передачи файлов просмотр содержимого каталогов передача файлов на сервер и обратно клиент - тот, кто инициирует передачу веб-браузер, plugin’ы в файловых менеджерах, проводник, WinSCP, FileZilla … сервер - программа на удаленном компьютере ftpd, FileZilla, Serv-U, Titan FTP Server, freeFTPd, … стандартный порт сервера: 21 Запрос в клиенте: ftp://user:password@ftp.server.ru 22 Клиент FTP в Total Commander 23 Схема работы FTP клиент постоянное управл. соед. временное соед. данных 21 FTP сервер FTP-клиент устанавливает TCP-соединение с 21 портом сервера (это т.н. управляющее соединение) Клиент авторизуется Клиент просматривает содержимое каталогов на удаленном сервере, посылая соответствующие команды Когда сервер получает команду «передать файл», он открывает новое TCP-соединение с клиентом (соединение данных), по которому затем происходит передача После окончания передачи сервер закрывает соединение 24 данных и опять готов служить клиенту Активный и пассивный FTP Активный FTP клиент Случ. порт постоянное управл. соед. 21 Случ. порт временное соед. данных 20 FTP сервер Пассивный FTP клиент Случ. порт постоянное управл. соед. Случ. порт 21 временное соед. данных Случ. порт FTP сервер 25 Команды клиента и ответы сервера S: C: S: C: S: 220 r321-01.mmcs.rsu.ru FTP server (NetBSD-ftpd) ready. USER kto-nibud 331 Password required for kto-nibud. PASS 1234567 230FreeBSD 7.0-RELEASE (GENERIC) #0: Feb 24 10:35:36 Welcome to FreeBSD! S: 230 User kto-nibud logged in. C: SYST S: 215 UNIX Type: L8 Version: NetBSD-ftpd 20051124 C: PWD S: 257 "/home/guda" is the current directory. C: PASV S: 227 Entering Passive Mode (212,193,209,241,240,214) 26 Команды клиента и ответы сервера C: LIST S: 150 Opening ASCII mode data connection for '/bin/ls'. По соединению данных сервер отправил: total 5 -rw------- 1 kto-nibud 100 5790 Jul 15 23:37 .bash_history -rw-r--r-- 1 kto-nibud 100 925 Apr 29 18:48 .profile -rw------- 1 kto-nibud 100 721 Jul 15 12:00 .viminfo -rw-r--r-- 1 kto-nibud 100 107 Jul 5 10:25 dig drwxr-xr-x 2 kto-nibud 100 512 Apr 29 18:49 public_html S: 226 Transfer complete. C: RETR dig S: 150 Opening BINARY mode data connection for ‘dig' (107 bytes). По соединению данных сервер отправил файл dig S: 226 Transfer complete. 27 Домашнее задание (простое) Найдите в настройках вашего почтового клиента (если у вас такого нет, установите какой-нибудь) какой smtp-сервер он использует для отправки почты с какого сервера он забирает почту Попробуйте перехватить передаваемое клиентом письмо при помощи сниффера. Пользуется ли ваш клиент командой HELO при рукопожатии или он отправляет EHLO? Что отвечает ему сервер? Найдите поля, отвечающие за авторизацию на вашем почтовом сервере. Как кодируются ваши сообщения? Сможете ли вы защитить свою корреспонденцию от перехвата? 28 Домашнее задание (простое) Проведите эксперимент и выясните какие команды передаются при активном режиме FTP передачи файлов. 29 Домашнее задание (10б) Создайте простую форму и напишите CGIприложение (на С++) для оправки почты администратору по протоколу SMTP 30