Формат електронного листа
Електронний лист складається з наступних частин:
Заголовків SMTP-протоколу, отриманих сервером. Ці заголовки можуть включатися, а можуть і не включатися в тіло листа в подальшому, так що не виключено, коли сервер має більшу інформацією про лист, ніж міститься в самому листі. Так, наприклад, поле RCPT TO вказує одержувача листа, при цьому в самому листі одержувач може бути не вказано. Ця інформація передається за межі сервера тільки в рамках протоколу SMTP, і зміна протоколу при доставці пошти (наприклад, на вузлі-одержувачі під час здійснення внутрішніх маршрутизації) може призводити до втрати цієї інформації. У більшості випадків ця інформація не доступна кінцевого одержувача, який використовує не SMTP протоколи (POP3, IMAP) для доступу до поштової скриньки. Для можливості контролювати працездатність системи ця інформація зазвичай зберігається в журналах поштових серверів деякий час.
Самого листа (в термінології протоколу SMTP - 'DATA'), яке, в свою чергу, складається з наступних частин, розділених символом нового рядка:
Тема SMTP містить в собі наступну інформацію:
Заголовки зазвичай додаються знизу вгору (тобто кожен раз, коли до повідомлення потрібно додати заголовок, він дописується першим рядком, перед усіма попередніми).
Крім службової інформації, заголовки листа також зберігають і будуть показані користувачеві інформацію, це зазвичай відправник листа, одержувач, тема і дата відправки.
Часто використовувані поля
Received - рядок журналирования проходження листи. Кожен поштовий сервер (MTA) позначає процес обробки цим повідомленням. Якщо повідомлення проходить через кілька поштових серверів (звичайна ситуація), то нові повідомлення дописують над попередніми (і журнал переміщення Новомосковскется в зворотному порядку, від найближчого вузла до найдальшого).
MIME-Version - версія MIME, з яким це повідомлення створено. Оскільки повідомлення створюється раніше всіх інших подій з листом, то цей заголовок зазвичай найперший (тобто останній в списку).
Sender: - Відправник листа. Додано для можливості вказати, що лист від чийогось імені (from) відправлено інший персоною (наприклад, секретаркою від імені начальника). Деякі поштові клієнти показують повідомлення при наявності sender і from як «повідомлення від 'sender' від імені 'from'». Sender є інформаційним заголовком (і також може відрізнятися від заголовка SMTP MAIL FROM).
In-Reply-To: - вказує на Message-ID, для якого цей лист є відповіддю (за допомогою цього поштові клієнти можуть легко вибудовувати ланцюжок листування - кожен новий відповідь містить Message-ID для попереднього повідомлення).
Subject: - тема листа.
Date: - дата написання листа.
Content-Type: - тип вмісту листа. За допомогою цього поля вказується тип (HTML, RTF, Plain text) вмісту листа і кодування, в якій створено лист (див нижче про кодування).
Крім стандартних, поштові клієнти, сервери і роботи обробки пошти можуть додавати свої власні заголовки, що починаються з «X-» (наприклад, X-Mailer, X-MyServer-Note-OK або X-Spamassasin-Level).
MultipurposeInternetMailExtensions (MIME) - стандарт, що описує передачу різних типів даних по електронній пошті, а також, ширше, специфікація для кодування інформації і форматування повідомлень таким чином, щоб їх можна було пересилати через Інтернет.
MIME розширюємо для нових типів - його визначення включає метод для реєстрації нових типів контенту та інших атрибутів.
Тіло листа відділяється від заголовка порожнім рядком, а закінчується (відповідно до стандартів SMTP) рядком, що складається з єдиною точки (і символу перекладу рядка). Частина поштових клієнтів (наприклад, Thunderbird) показують цю точку, частина ні. В не-smtp стандартах формат листа залежить від стандарту системи (наприклад, MAPI), але перед «виходом» листи за межі MAPI-сумісної системи (наприклад, перед пересиланням через Інтернет) зазвичай наводиться до SMTP-сумісного увазі (інакше маршрутизація листа була б неможливою, тому що стандартом передачі пошти в Інтернеті є SMTP).
Одним з істотних обмежень стандартів на поштову пересилку є застосування 7-бітної кодування (ASCII). Для англійського тексту це не становить особливої проблеми, однак, більшість неангломовних мов використовують 8 (і більше) бітні кодування, передача яких без спотворень не гарантовано. Для цілей сумісності, все не 7-бітові кодування наводяться в 7-бітний вигляд (використовуючи різні методи кодування тексту).