2010-10-14 3 views
1

Я работаю на сервере, который обрабатывает электронную почту, и, как часть этого, мы выполняем синтаксический анализ/кодирование MIME. У меня недавно возникла проблема с сообщением, которое в действительности является действительным, но содержит символ Latin-1 в заголовке MIME. Кто-то ввел адрес электронной почты нескольким получателям, содержащим символ Latin-1, поэтому в конверте SMTP содержатся только допустимые адресаты, но строка To по-прежнему содержит недопустимый адрес и неправильную кодировку.Являются ли двоичные символы законными в заголовках MIME?

Мне показалось, что это незаконно, и что заголовки MIME должны быть 7-битными. 8-битные значения в заголовках MIME должны быть закодированы в виде

=?charset?encoding?encoded text?= 

Заголовок в вопросе что-то вроде этого:

To: <changé[email protected]>, <[email protected]> 

Мой вопрос: Является ли это действительным MIME, и я просто не знаете об этом?

ответ

3

От RFC2822, Интернета Формат сообщений, раздел 2.2, Поля заголовка:

поле заголовка строка, состоящая из имени поля, за которым следует двоеточие (":"), за которым следует тело поля и завершено CRLF. Поле имя ДОЛЖНО быть составлено из печатных символов US-ASCII (то есть, символов, которые имеют значения от 33 до 126 включительно), за исключением двоеточия. Тело поля может состоять из любых символов US-ASCII, , за исключением CR и LF. Однако полевое поле может содержать CRLF, когда , используемый в заголовке «складывание» и «разворачивание», как описано в разделе 2.2.3. Все полевые тела ДОЛЖНЫ соответствовать синтаксису, описанному в разделах 3 и 4 настоящего стандарта.

Следовательно, любые символы, отличные от ASCII, являются незаконными.

1

RFC 822 says:

address  = mailbox      ; one addressee 
mailbox  = addr-spec     ; simple address 
addr-spec = local-part "@" domain  ; global address 
local-part = word *("." word)    ; uninterpreted 
word  = atom/quoted-string  
atom  = 1*<any CHAR except specials, SPACE and CTLs> 
CHAR  = <any ASCII character>  ; ( 0-177, 0.-127.) 

получил? Ваш вариант «в кавычках строки» - =?charset?encoding?encoded text?=

+0

Да, я определенно знаю, что адрес является недействительным, но я не пытаюсь разобрать строку To: сам для интерпретации. Я просто задаюсь вопросом, действительно ли даже иметь не-ASCII-символы в заголовке MIME. –

+0

@Shawn D. RFC ясно: нет – Andrey

0

Адреса электронной почты

changé[email protected] 

являются совершенно законными если символы закодированы в UTF-8 и если сервер поддерживает SMTPUTF8, расширение для SMTP. Сервер оповещает о поддержке, отвечая на EHLO с SMTPUTF8 ключевым словом:

250-SMTPUTF8 

клиент использует расширение, добавив параметр SMTPUTF8 по команде MAIL:

MAIL FROM:<changé[email protected]> SMTPUTF8 

К сожалению, очень мало поддержки это расширение в это время.

См RFC 6531 для получения дополнительной информации: http://tools.ietf.org/html/rfc6531

Смежные вопросы