UNIX
online
pulse
logo
| dzenspace.ru | статьи |

Проверка валидности email

Масштаб происходящей в сети трагедии можно оценить выполнив простой запрос - количество велосипедов и их форм-факторов поражает воображение. С учетом того, что почтовый адрес пользователя является одним из самых интимных и оберегаемых элементов его сетевой жизни, он требует более внимательного подхода к его обработке и хранению. Итак...

Почтовый адрес

RFC-2822 гласит:

  • Почтовый адрес состоит из имени и домена, разделенных символом "@" (раздел 3.4.1);
  • Имя может состоять из букв, цифр и символов: "!", "#", "$", "%", "&", "'", "*", "+", "-", "/", "=", "?", "^", "_", "`", "{", "|", "}", "~" (раздел 2.3.4), а так же символа "." (точка) за исключением того, что имя не может начинаться с точки, заканчиваться на точу или содержать две точки подряд;
  • Имя может быть заключено в двойные кавычки (") и содержать уже любые символы (раздел 3.2.5);
  • Максимальная длина имени составляет 64 символа;
  • Имя регистро-зависимо за исключением служебного имени postmaster (RFC-5321, раздел 4.1.1.3);
  • Для совместимости с устаревшим RFC-822, адрес может быть заключен в треугольные скобки и содержать символ "@" (раздел 4.4).

Имя домена

RFC-1035 гласит:

  • Общая длина имени домена ограничена 255 символами, длина имени узла ограничена 63 символами (раздел 2.3.4);
  • Имя узла может состоять из букв, цифр и символа "-" за исключением начала и окончания;
  • Узлы разделяются символом "." (точка);
  • Имя домена регистро-независимо;
  • Имя домена может заканчиваться на символ "." (точка), подразумевая корневой узел, хотя обычно последняя точка не пишется (подробнее см. FQDN).

У кого длиннее?

  • В качестве примера использования потенциала длины имени можно привести домен www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com - проект, где предлагается бесплатно получить самый длинный email адрес и почувствовать на себе все прелести обработки такого адреса веб-формами, почтовым программным обеспечением, системами антиспама и т.д.;
  • Максимальная длина почтового адреса, согласно RFC-5321 (раздел 4.5.3.1.3) составляет 256 символов (при этом остается ограничение на длину имени в 64 символа и длину домена в 255 символов).

Примеры

RFC-3696 дает нам несколько занимательных примеров валидных почтовых адресов:

  • <@hosta.int,@jkl.org:userc@d.bar.org>
  • jsmith@[192.168.2.1]
  • Abc\@def@example.com
  • Abc\\@example.com
  • Abc\\\@def@example.com
  • Fred\ Bloggs@example.com
  • Joe.\\Blow@example.com
  • "Abc@def"@example.com
  • "Fred Bloggs"@example.com
  • user+mailbox@example.com
  • customer/department=shipping@example.com
  • $A12345@example.com
  • !def!xyz%abc@example.com
  • _somename@example.com

Что делать?