28
Email Смаль Дмитрий [email protected]

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

Embed Size (px)

Citation preview

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

Email

Смаль Дмитрий[email protected]

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

E-mail vs Email

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

История 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

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

Формат электронного письма

From: Dmitry Smal <[email protected]>

To: Pupkin <[email protected]>

Subject: party for everybody discuss

Date: Fri, 18 May 2012 08:17:59 -0700

Hi there!

Can't stop dancing! And you?

Bye bye!

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

Заголовки EmailFrom, To – от кого и кому письмо

Subject – тема письма

Date – дата отправки

Message-ID – уникальный идентификатор письма

References – id письма на которое отвечаем

Сс – “копия”, аналогичен To, но означает, что получатель – не главный

Bcc – “скрытая копия”, аналогиче Сс, но получатели не увидят email указанный в Bcc

Reply-To – email адрес, на который нужно отвечать

Content-Type – MIME тип содержимого

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

Содержимое письмаПервоначальная кодировка – 7bit ASCII

Как передать что-то большее ?

1) Quoted printable =EA =0C

2) Base64 YW55IGNhcm5hbCBwbGVhcw==

Современные почтовые агенты поддерживают 8bit

Content-Type: text/plain; charset=utf-8

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

MIMEMultipurpose Internet Message Extensions

Задачи

1) Передача не-ASCII текста через ASCII канал

2) Передача не-текстовых приложений

3) Передача сообщений из нескольких частей (multipart body messages)

4) Передача не-ASCII заголовков

Заголовки

Content-ID – уникальный ID части, для ссылок

Content-Type – MIME тип сообщения или части

Content-Disposition – расположение части

Content-Transfer-Encoding – кодирование части

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

To: =?UTF-8?B?0JTQuNC80LA=?= <[email protected]>

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--

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

Цепочки писемУ письма есть идентификатор (почти уникальный):

Message-ID: <[email protected]>

При ответе на сообщение агент добавляет MessageID исходного письма в References

References: <A> <B> <C>

Таким образом: A → B → C → текущее письмо

Обычно в Subject письма добавляется Re:

> А содержимое исходного письма

> отбивается символами “больше”

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

Процесс передачи Email

MUA – Mail User Agent – программа, предоставляющая пользовательский интерфейс, например MS Outlook, sendmail

MTA – Mail Transfer Agent (relay) – программа (почтовый сервер), отвечающая за пересылку почты к по сети. SMTP протокол.

MDA – Mail Delivery Agent – программа, отвечающая за доставку почты конечному пользователю. POP3 и IMAP

Page 11: Web весна 2012 лекция 12
Page 12: Web весна 2012 лекция 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

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

C:HELO

S:250 domain name should be qualified

C:MAIL FROM: <[email protected]>

S:250 [email protected] sender accepted

C:RCPT TO:<[email protected]>

S:250 [email protected] ok

C:DATA

S:354 Enter mail, end with "." on a line by itself

C:from: [email protected]

C:to: [email protected]

C:subject: tema

C:

C:Hi!

C:.

S:250 769947 message accepted for delivery

C:QUIT

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

Отправка писем из pythonimport smtplib

from email.MIMEText import MIMEText

text = 'Тестовое письмо!\nОтправка письма из python'

msg = MIMEText(text, "", "utf-8")

msg['Subject'] = 'Тестовое письмо'

msg['From'] = '[email protected]'

msg['To'] = '[email protected]'

s = smtplib.SMTP('smtp.gmail.com', 25)

s.ehlo()

s.starttls()

s.ehlo()

s.login("[email protected]", "password")

s.sendmail('[email protected]', '[email protected]', msg.as_string())

s.quit()

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

Хранение и получение почты1) Изначально планировалось хранить почту на компьютере пользователя. Relay – только временное хранилище.

POP3 – протокол получения почты из почтового ящика.

2) Однако у хранения почты на отдельном сервере есть преимущества – надежность, доступность.

IMAP – протокол доступа к содержимому почтового ящика.

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

POP3 – получение почтыPost Office Protocol

1) Работает поверх TCP, порт 110

2) Текстовый протокол

APOP – авторизация (в зашифрованом виде)

USER, PASS – авторизация в открытом виде

LIST – получение списка сообщений

RETR – получение одного сообщения

DELE – удаление сообщения с ящика

QUIT – выход

3) “Транзакции” - письма удаляются только при отключении клиента

4) Опциональная поддержка шифрования TLS

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

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

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

Почему текстовые протоколы?1) Не нужно специальных программ – достаточно простого текстового редактора

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

3) Не нужно специальных клиентов – вы можете использовать HTTP, SMTP, POP3 с помощью telnet

4) Переносимость

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

Обзор серверов

Courier Mail Server

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

Рассылки email1) По набору email адресов (зачастую спам)

2) Груповые адреса (RFC 2142)

[email protected] – маркетинг

[email protected] – тех. поддержка

[email protected] – поддержка почты

[email protected] – поддержка DNS

[email protected] – поддержка веб-сайта

3) Cписки рассылки (mailing list)

Специальный адрес [email protected]

Сервер рассылки

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

Цифровые подписи

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

PGP – Pretty Good PrivacyOpenPGP – стандарт, выросший из PGP

PGP, GnuPG, FileCrypt – реализации стандарта, программное обеспечение, позволяющее шифровать и подписывать email и даже диски!

Основа PGP – сеть доверия, схема похажая на иерархию центров сертификации, но у пользователя есть возможность самому выбрать какому сертификату он доверяет.

Уровень 0 – сертификат, которому вы доверяете

Уровень 1 – вы доверяете тем, кому доверяет обладатель данного сертификата

Уровень 2 – фактически равносилен встроенному

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

Как это выглядит в Email ?From: Dmitry Smal <[email protected]>

To: [email protected]

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-----

Page 24: Web весна 2012 лекция 12
Page 25: Web весна 2012 лекция 12

Как бороться со спамом?- Фильтрация (байесовский фильтр) – 95% эффективность, требует обучения

- Ручная фильтрация

- Крупные компании содержат отделы аналитиков

- Blacklist – списки IP адресов с которых идет спам

Причина спама – SMTP не проверяет отправителя

- Проверка обратной зоны DNS

- Отказ от открытых релеев, авторизация SMTP

- SPF записи в DNS

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

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 сервер, получив запрос на отправку письма от имени [email protected] с ip адреса x.y.z.w, может сделать запрос к DNS и определить имеет ли данный хост права на отправку почты из указанного домена

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

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 и проверяет подпись

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

Домашняя работа

Отправьте / прочитайте email

с помощью telnet