SlideShare a Scribd company logo
Email
Смаль Дмитрий
smal@corp.mail.ru
E-mail vs Email
История Email
1965 – программа mail для CTSS, пересылка в
пределах мейнфрейма
1971 – первый email в сети ARPANET
1978 – программа uucp для обмена Email в UNIX
1982 – предложен протокол SMTP (RFC 821) и
формат интернет сообщений (RFC 822)
1984 – FidoNET
190x – Развитие локальной почты, Microsoft
Mail, IBM Lotus Notes
1998 – Mail.Ru
2004 – Gmail
Формат электронного письма
From: Dmitry Smal <smal@corp.mail.ru>
To: Pupkin <v.pupkin@gmail.com>
Subject: party for everybody discuss
Date: Fri, 18 May 2012 08:17:59 -0700
Hi there!
Can't stop dancing! And you?
Bye bye!
Заголовки Email
From, To – от кого и кому письмо
Subject – тема письма
Date – дата отправки
Message-ID – уникальный идентификатор письма
References – id письма на которое отвечаем
Сс – “копия”, аналогичен To, но означает, что
получатель – не главный
Bcc – “скрытая копия”, аналогиче Сс, но
получатели не увидят email указанный в Bcc
Reply-To – email адрес, на который нужно
отвечать
Content-Type – MIME тип содержимого
Содержимое письма
Первоначальная кодировка – 7bit ASCII
Как передать что-то большее ?
1) Quoted printable =EA =0C
2) Base64 YW55IGNhcm5hbCBwbGVhcw==
Современные почтовые агенты поддерживают 8bit
Content-Type: text/plain; charset=utf-8
MIME
Multipurpose Internet Message Extensions
Задачи
1) Передача не-ASCII текста через ASCII канал
2) Передача не-текстовых приложений
3) Передача сообщений из нескольких частей
(multipart body messages)
4) Передача не-ASCII заголовков
Заголовки
Content-ID – уникальный ID части, для ссылок
Content-Type – MIME тип сообщения или части
Content-Disposition – расположение части
Content-Transfer-Encoding – кодирование части
To: =?UTF-8?B?0JTQuNC80LA=?= <mialinx@gmail.com>
Content-Type: multipart/mixed;
boundary="----4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794"
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64
Ym9keQ==
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794
Content-Type: application/octet-stream;
name="=?UTF-8?B?ZmF2aWNvbi5pY28=?="
Content-Disposition: attachment
Content-Transfer-Encoding: base64
AAABAAEAEBAAAAEAIABoBA..........AAAAAAAA==
------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794--
Цепочки писем
У письма есть идентификатор (почти уникальный):
Message-ID: <19951223543.3034.qmail@gmail.com>
При ответе на сообщение агент добавляет
MessageID исходного письма в References
References: <A> <B> <C>
Таким образом: A → B → C → текущее письмо
Обычно в Subject письма добавляется Re:
> А содержимое исходного письма
> отбивается символами “больше”
Процесс передачи Email
MUA – Mail User Agent – программа,
предоставляющая пользовательский интерфейс,
например MS Outlook, sendmail
MTA – Mail Transfer Agent (relay) – программа
(почтовый сервер), отвечающая за пересылку
почты к по сети. SMTP протокол.
MDA – Mail Delivery Agent – программа,
отвечающая за доставку почты конечному
пользователю. POP3 и IMAP
SMTP – отправка почты
Simple Mail Transfer Protocol
1) Работает поверх TCP, порт 25
2) Текстовый протокол
Команды: MAIL FROM, RCPT TO, DATA, QUIT
Статусы ответа: 2xx – команды выполнена
3xx – ожидаются доп. данные
4xx – временная ошибка
5xx – неисправимая ошибка
3) ESMTP – набор расширений для SMTP:
TLS, Авторизация, Pipelining
C:HELO
S:250 domain name should be qualified
C:MAIL FROM: <someusername@somecompany.ru>
S:250 someusername@somecompany.ru sender accepted
C:RCPT TO:<user1@company.tld>
S:250 user1@company.tld ok
C:DATA
S:354 Enter mail, end with "." on a line by itself
C:from: someusername@somecompany.ru
C:to: user1@company.tld
C:subject: tema
C:
C:Hi!
C:.
S:250 769947 message accepted for delivery
C:QUIT
Отправка писем из python
import smtplib
from email.MIMEText import MIMEText
text = 'Тестовое письмо!nОтправка письма из python'
msg = MIMEText(text, "", "utf-8")
msg['Subject'] = 'Тестовое письмо'
msg['From'] = 'support.tonics@gmail.com'
msg['To'] = 'destination@mail.ru'
s = smtplib.SMTP('smtp.gmail.com', 25)
s.ehlo()
s.starttls()
s.ehlo()
s.login("support.tonics@gmail.com", "password")
s.sendmail('support.tonics@gmail.com', 'destination@mail.ru',
msg.as_string())
s.quit()
Хранение и получение почты
1) Изначально планировалось хранить почту на
компьютере пользователя. Relay – только
временное хранилище.
POP3 – протокол получения почты из
почтового ящика.
2) Однако у хранения почты на отдельном
сервере есть преимущества – надежность,
доступность.
IMAP – протокол доступа к содержимому
почтового ящика.
POP3 – получение почты
Post Office Protocol
1) Работает поверх TCP, порт 110
2) Текстовый протокол
APOP – авторизация (в зашифрованом виде)
USER, PASS – авторизация в открытом виде
LIST – получение списка сообщений
RETR – получение одного сообщения
DELE – удаление сообщения с ящика
QUIT – выход
3) “Транзакции” - письма удаляются только при
отключении клиента
4) Опциональная поддержка шифрования TLS
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: QUIT
Почему текстовые протоколы?
1) Не нужно специальных программ – достаточно
простого текстового редактора
2) Не нужно средств отладки – протокол можно
отлаживать просто просматривая его
3) Не нужно специальных клиентов – вы можете
использовать HTTP, SMTP, POP3 с помощью
telnet
4) Переносимость
Обзор серверов
Courier
Mail Server
Рассылки email
1) По набору email адресов (зачастую спам)
2) Груповые адреса (RFC 2142)
info@domain.com – маркетинг
support@domain.com – тех. поддержка
postmaster@domain.com – поддержка почты
hostmaster@domain.com – поддержка DNS
webmaster@domain.com – поддержка веб-сайта
3) Cписки рассылки (mailing list)
Специальный адрес python-list@python.org
Сервер рассылки
Цифровые подписи
PGP – Pretty Good Privacy
OpenPGP – стандарт, выросший из PGP
PGP, GnuPG, FileCrypt – реализации стандарта,
программное обеспечение, позволяющее шифровать
и подписывать email и даже диски!
Основа PGP – сеть доверия, схема похажая на
иерархию центров сертификации, но у
пользователя есть возможность самому выбрать
какому сертификату он доверяет.
Уровень 0 – сертификат, которому вы доверяете
Уровень 1 – вы доверяете тем, кому доверяет
обладатель данного сертификата
Уровень 2 – фактически равносилен встроенному
Как это выглядит в Email ?
From: Dmitry Smal <mialinx@gmail.com>
To: mialinx@gmail.com
Subject: GPG test
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
-----BEGIN PGP MESSAGE-----
Charset: ISO-8859-1
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
hQEMA8ijKqZcm8oeAQf/dcpkWwglHLN4A
. . .
mRunewtvjjTj3pLfjPkuZaEzIQU=3D
=3DHHsM
-----END PGP MESSAGE-----
Как бороться со спамом?
- Фильтрация (байесовский фильтр) – 95%
эффективность, требует обучения
- Ручная фильтрация
- Крупные компании содержат отделы аналитиков
- Blacklist – списки IP адресов с которых
идет спам
Причина спама – SMTP не проверяет отправителя
- Проверка обратной зоны DNS
- Отказ от открытых релеев, авторизация SMTP
- SPF записи в DNS
SPF – Sender Policy Framework
Допустим есть домен company.com
В DNS делается запись вида:
company.com. IN TXT "v=spf1 +a +mx -all"
Либо, например
company.com. IN TXT "v=spf1 ip4:192.168.0.1/16
-all"
Это ограничивает адреса SMTP серверов company.com
Теперь принимающий SMTP сервер, получив запрос на
отправку письма от имени user@company.com с ip
адреса x.y.z.w, может сделать запрос к DNS и
определить имеет ли данный хост права на отправку
почты из указанного домена
DKIM
Как не стать спамером ?
1) Создается пара - публичный/закрытый ключ
2) Публичный ключ для домена помещается в DNS:
_domainkey.example.com. TXT "t=s; o=~;"
mail._domainkey.example.com. TXT
"k=rsa; t=s; p={PUBLIC_KEY_CONTENT}"
3) SMTP сервер вашего домена подписывает
каждое отправленное письмо с помощью
закрытого ключа, добавляя к письмам
заголовок DKIM-Signature
4) Принимающий SMTP сервер получает открытый
ключ из DNS и проверяет подпись
Домашняя работа
Отправьте / прочитайте email
с помощью telnet

More Related Content

What's hot

DNS-SD Extentions - Russian
DNS-SD Extentions - RussianDNS-SD Extentions - Russian
DNS-SD Extentions - Russian
Nina Buchina
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2Technopark
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложения
Vladyslav Leikykh
 
семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколов
liliya12345
 
электронная почта
электронная почтаэлектронная почта
электронная почта
melek88
 
Сети и протоколы
Сети и протоколыСети и протоколы
Сети и протоколыyaevents
 
12 -tcp
12  -tcp12  -tcp
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействияАлексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействияYandex
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Ontico
 
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Elena Grahovac
 
Твое место во всемирной паутинеи
Твое место во всемирной паутинеиТвое место во всемирной паутинеи
Твое место во всемирной паутинеи
Borisovna
 
Adresa inet
Adresa inetAdresa inet
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2Technopark
 
Снижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINXСнижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINXAndrii Podanenko
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
Roman Brovko
 
Как работает интернет?
Как работает интернет?Как работает интернет?
Как работает интернет?
FokGroup
 

What's hot (18)

DNS-SD Extentions - Russian
DNS-SD Extentions - RussianDNS-SD Extentions - Russian
DNS-SD Extentions - Russian
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2
 
архитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложенияархитектура и принципы работы типового Web приложения
архитектура и принципы работы типового Web приложения
 
Http session
Http sessionHttp session
Http session
 
семейство протоколов
семейство протоколовсемейство протоколов
семейство протоколов
 
электронная почта
электронная почтаэлектронная почта
электронная почта
 
Сети и протоколы
Сети и протоколыСети и протоколы
Сети и протоколы
 
Ftp
FtpFtp
Ftp
 
12 -tcp
12  -tcp12  -tcp
12 -tcp
 
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействияАлексей Лапаев - Протоколы межкомпонентного взаимодействия
Алексей Лапаев - Протоколы межкомпонентного взаимодействия
 
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
Оптимизации поисковой выдачи Яндекса / Иван Хватов, Сергей Ляджин (Яндекс)
 
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
 
Твое место во всемирной паутинеи
Твое место во всемирной паутинеиТвое место во всемирной паутинеи
Твое место во всемирной паутинеи
 
Adresa inet
Adresa inetAdresa inet
Adresa inet
 
Web весна 2012 лекция 2
Web весна 2012 лекция 2Web весна 2012 лекция 2
Web весна 2012 лекция 2
 
Снижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINXСнижение нагрузки на сервер с помощью NGINX
Снижение нагрузки на сервер с помощью NGINX
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Как работает интернет?
Как работает интернет?Как работает интернет?
Как работает интернет?
 

Similar to Web весна 2012 лекция 12

Хайлоад в рассылке почты: как спать спокойно
Хайлоад в рассылке почты: как спать спокойноХайлоад в рассылке почты: как спать спокойно
Хайлоад в рассылке почты: как спать спокойно
SQALab
 
Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)Ontico
 
Почта в интернет-проекте: инфраструктура, статистика, мониторинг
Почта в интернет-проекте: инфраструктура, статистика, мониторингПочта в интернет-проекте: инфраструктура, статистика, мониторинг
Почта в интернет-проекте: инфраструктура, статистика, мониторинг
Andrey Sas
 
Мир электронной почты
Мир электронной почтыМир электронной почты
Мир электронной почтыAntoninaH
 
Я во Входящих. А вы?
Я во Входящих. А вы?Я во Входящих. А вы?
Я во Входящих. А вы?
EMAILMATRIX
 
презентация 1
презентация 1презентация 1
презентация 1
Borissss
 
электронная почта
электронная почтаэлектронная почта
электронная почтаNickEliot
 
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровняСети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
Andrey Sozykin
 
67
6767
67JIuc
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
Igor Shkulipa
 
Метод управления сетью роботов
Метод управления сетью роботовМетод управления сетью роботов
Метод управления сетью роботов
Dmitriy Kulakov
 
презентация 4
презентация 4презентация 4
презентация 4
Borissss
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная системаЕлена Ключева
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная системаЕлена Ключева
 
Sms traffic api
Sms traffic apiSms traffic api
Sms traffic apione-line
 
Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.
Alexey Furmanov
 
[Youdz.ru] электронная почта
[Youdz.ru] электронная почта[Youdz.ru] электронная почта
[Youdz.ru] электронная почта
You DZ
 

Similar to Web весна 2012 лекция 12 (20)

Mail linux prim
Mail linux primMail linux prim
Mail linux prim
 
Хайлоад в рассылке почты: как спать спокойно
Хайлоад в рассылке почты: как спать спокойноХайлоад в рассылке почты: как спать спокойно
Хайлоад в рассылке почты: как спать спокойно
 
Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)Алексей Лебедев (Wamba)
Алексей Лебедев (Wamba)
 
Почта в интернет-проекте: инфраструктура, статистика, мониторинг
Почта в интернет-проекте: инфраструктура, статистика, мониторингПочта в интернет-проекте: инфраструктура, статистика, мониторинг
Почта в интернет-проекте: инфраструктура, статистика, мониторинг
 
Мир электронной почты
Мир электронной почтыМир электронной почты
Мир электронной почты
 
Я во Входящих. А вы?
Я во Входящих. А вы?Я во Входящих. А вы?
Я во Входящих. А вы?
 
презентация 1
презентация 1презентация 1
презентация 1
 
электронная почта
электронная почтаэлектронная почта
электронная почта
 
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровняСети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
Сети и системы телекоммуникаций. Управляющие протоколы сетевого уровня
 
67
6767
67
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Метод управления сетью роботов
Метод управления сетью роботовМетод управления сетью роботов
Метод управления сетью роботов
 
презентация 4
презентация 4презентация 4
презентация 4
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная система
 
интернет как глобальная информационная система
интернет как глобальная информационная системаинтернет как глобальная информационная система
интернет как глобальная информационная система
 
Как устроен интернет
Как устроен интернетКак устроен интернет
Как устроен интернет
 
Sms traffic api
Sms traffic apiSms traffic api
Sms traffic api
 
Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.Лекция 4. Почтовая система. Outlook.
Лекция 4. Почтовая система. Outlook.
 
E mail
E mailE mail
E mail
 
[Youdz.ru] электронная почта
[Youdz.ru] электронная почта[Youdz.ru] электронная почта
[Youdz.ru] электронная почта
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
Technopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Web весна 2012 лекция 12

  • 3. История Email 1965 – программа mail для CTSS, пересылка в пределах мейнфрейма 1971 – первый email в сети ARPANET 1978 – программа uucp для обмена Email в UNIX 1982 – предложен протокол SMTP (RFC 821) и формат интернет сообщений (RFC 822) 1984 – FidoNET 190x – Развитие локальной почты, Microsoft Mail, IBM Lotus Notes 1998 – Mail.Ru 2004 – Gmail
  • 4. Формат электронного письма From: Dmitry Smal <smal@corp.mail.ru> To: Pupkin <v.pupkin@gmail.com> Subject: party for everybody discuss Date: Fri, 18 May 2012 08:17:59 -0700 Hi there! Can't stop dancing! And you? Bye bye!
  • 5. Заголовки Email From, To – от кого и кому письмо Subject – тема письма Date – дата отправки Message-ID – уникальный идентификатор письма References – id письма на которое отвечаем Сс – “копия”, аналогичен To, но означает, что получатель – не главный Bcc – “скрытая копия”, аналогиче Сс, но получатели не увидят email указанный в Bcc Reply-To – email адрес, на который нужно отвечать Content-Type – MIME тип содержимого
  • 6. Содержимое письма Первоначальная кодировка – 7bit ASCII Как передать что-то большее ? 1) Quoted printable =EA =0C 2) Base64 YW55IGNhcm5hbCBwbGVhcw== Современные почтовые агенты поддерживают 8bit Content-Type: text/plain; charset=utf-8
  • 7. MIME Multipurpose Internet Message Extensions Задачи 1) Передача не-ASCII текста через ASCII канал 2) Передача не-текстовых приложений 3) Передача сообщений из нескольких частей (multipart body messages) 4) Передача не-ASCII заголовков Заголовки Content-ID – уникальный ID части, для ссылок Content-Type – MIME тип сообщения или части Content-Disposition – расположение части Content-Transfer-Encoding – кодирование части
  • 8. To: =?UTF-8?B?0JTQuNC80LA=?= <mialinx@gmail.com> Content-Type: multipart/mixed; boundary="----4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794" ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 Ym9keQ== ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794 Content-Type: application/octet-stream; name="=?UTF-8?B?ZmF2aWNvbi5pY28=?=" Content-Disposition: attachment Content-Transfer-Encoding: base64 AAABAAEAEBAAAAEAIABoBA..........AAAAAAAA== ------4MNjdUkz-ZBcPvpoGwPsUtn9u:1338241794--
  • 9. Цепочки писем У письма есть идентификатор (почти уникальный): Message-ID: <19951223543.3034.qmail@gmail.com> При ответе на сообщение агент добавляет MessageID исходного письма в References References: <A> <B> <C> Таким образом: A → B → C → текущее письмо Обычно в Subject письма добавляется Re: > А содержимое исходного письма > отбивается символами “больше”
  • 10. Процесс передачи Email MUA – Mail User Agent – программа, предоставляющая пользовательский интерфейс, например MS Outlook, sendmail MTA – Mail Transfer Agent (relay) – программа (почтовый сервер), отвечающая за пересылку почты к по сети. SMTP протокол. MDA – Mail Delivery Agent – программа, отвечающая за доставку почты конечному пользователю. POP3 и IMAP
  • 11.
  • 12. SMTP – отправка почты Simple Mail Transfer Protocol 1) Работает поверх TCP, порт 25 2) Текстовый протокол Команды: MAIL FROM, RCPT TO, DATA, QUIT Статусы ответа: 2xx – команды выполнена 3xx – ожидаются доп. данные 4xx – временная ошибка 5xx – неисправимая ошибка 3) ESMTP – набор расширений для SMTP: TLS, Авторизация, Pipelining
  • 13. C:HELO S:250 domain name should be qualified C:MAIL FROM: <someusername@somecompany.ru> S:250 someusername@somecompany.ru sender accepted C:RCPT TO:<user1@company.tld> S:250 user1@company.tld ok C:DATA S:354 Enter mail, end with "." on a line by itself C:from: someusername@somecompany.ru C:to: user1@company.tld C:subject: tema C: C:Hi! C:. S:250 769947 message accepted for delivery C:QUIT
  • 14. Отправка писем из python import smtplib from email.MIMEText import MIMEText text = 'Тестовое письмо!nОтправка письма из python' msg = MIMEText(text, "", "utf-8") msg['Subject'] = 'Тестовое письмо' msg['From'] = 'support.tonics@gmail.com' msg['To'] = 'destination@mail.ru' s = smtplib.SMTP('smtp.gmail.com', 25) s.ehlo() s.starttls() s.ehlo() s.login("support.tonics@gmail.com", "password") s.sendmail('support.tonics@gmail.com', 'destination@mail.ru', msg.as_string()) s.quit()
  • 15. Хранение и получение почты 1) Изначально планировалось хранить почту на компьютере пользователя. Relay – только временное хранилище. POP3 – протокол получения почты из почтового ящика. 2) Однако у хранения почты на отдельном сервере есть преимущества – надежность, доступность. IMAP – протокол доступа к содержимому почтового ящика.
  • 16. POP3 – получение почты Post Office Protocol 1) Работает поверх TCP, порт 110 2) Текстовый протокол APOP – авторизация (в зашифрованом виде) USER, PASS – авторизация в открытом виде LIST – получение списка сообщений RETR – получение одного сообщения DELE – удаление сообщения с ящика QUIT – выход 3) “Транзакции” - письма удаляются только при отключении клиента 4) Опциональная поддержка шифрования TLS
  • 17. C: APOP mrose c4c9334bac560ecc979e58001b3e22fb S: +OK mrose's maildrop has 2 messages (320 octets) C: STAT S: +OK 2 320 C: LIST S: +OK 2 messages (320 octets) S: 1 120 S: 2 200 S: . C: RETR 1 S: +OK 120 octets S: <the POP3 server sends message 1> S: . C: DELE 1 S: +OK message 1 deleted C: QUIT
  • 18. Почему текстовые протоколы? 1) Не нужно специальных программ – достаточно простого текстового редактора 2) Не нужно средств отладки – протокол можно отлаживать просто просматривая его 3) Не нужно специальных клиентов – вы можете использовать HTTP, SMTP, POP3 с помощью telnet 4) Переносимость
  • 20. Рассылки email 1) По набору email адресов (зачастую спам) 2) Груповые адреса (RFC 2142) info@domain.com – маркетинг support@domain.com – тех. поддержка postmaster@domain.com – поддержка почты hostmaster@domain.com – поддержка DNS webmaster@domain.com – поддержка веб-сайта 3) Cписки рассылки (mailing list) Специальный адрес python-list@python.org Сервер рассылки
  • 22. PGP – Pretty Good Privacy OpenPGP – стандарт, выросший из PGP PGP, GnuPG, FileCrypt – реализации стандарта, программное обеспечение, позволяющее шифровать и подписывать email и даже диски! Основа PGP – сеть доверия, схема похажая на иерархию центров сертификации, но у пользователя есть возможность самому выбрать какому сертификату он доверяет. Уровень 0 – сертификат, которому вы доверяете Уровень 1 – вы доверяете тем, кому доверяет обладатель данного сертификата Уровень 2 – фактически равносилен встроенному
  • 23. Как это выглядит в Email ? From: Dmitry Smal <mialinx@gmail.com> To: mialinx@gmail.com Subject: GPG test Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable -----BEGIN PGP MESSAGE----- Charset: ISO-8859-1 Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ hQEMA8ijKqZcm8oeAQf/dcpkWwglHLN4A . . . mRunewtvjjTj3pLfjPkuZaEzIQU=3D =3DHHsM -----END PGP MESSAGE-----
  • 24.
  • 25. Как бороться со спамом? - Фильтрация (байесовский фильтр) – 95% эффективность, требует обучения - Ручная фильтрация - Крупные компании содержат отделы аналитиков - Blacklist – списки IP адресов с которых идет спам Причина спама – SMTP не проверяет отправителя - Проверка обратной зоны DNS - Отказ от открытых релеев, авторизация SMTP - SPF записи в DNS
  • 26. SPF – Sender Policy Framework Допустим есть домен company.com В DNS делается запись вида: company.com. IN TXT "v=spf1 +a +mx -all" Либо, например company.com. IN TXT "v=spf1 ip4:192.168.0.1/16 -all" Это ограничивает адреса SMTP серверов company.com Теперь принимающий SMTP сервер, получив запрос на отправку письма от имени user@company.com с ip адреса x.y.z.w, может сделать запрос к DNS и определить имеет ли данный хост права на отправку почты из указанного домена
  • 27. DKIM Как не стать спамером ? 1) Создается пара - публичный/закрытый ключ 2) Публичный ключ для домена помещается в DNS: _domainkey.example.com. TXT "t=s; o=~;" mail._domainkey.example.com. TXT "k=rsa; t=s; p={PUBLIC_KEY_CONTENT}" 3) SMTP сервер вашего домена подписывает каждое отправленное письмо с помощью закрытого ключа, добавляя к письмам заголовок DKIM-Signature 4) Принимающий SMTP сервер получает открытый ключ из DNS и проверяет подпись
  • 28. Домашняя работа Отправьте / прочитайте email с помощью telnet