Vyšlo v Softwarových novinách č. 10/97, v říjnu 1997
Vytištěno z adresy: http://www.earchiv.cz/a710s200/a710s228.php3

SMTP pošta je sedmibitová!

Velmi důležitou vlastností protokolu SMTP je způsob, jakým se dívá na přenášená data. Přesně v souladu s původním zadáním předpokládá, že jsou sedmibitová - příslušný standard (dokument RFC821) konkrétně říká, že zprávy mohou obsahovat kterýkoli ze 128 ASCII znaků, čímž je míněna základní sada ASCII znaků, z nichž každý je zobrazitelný právě v sedmi bitech (neboť pro rozlišení 128, neboli 2 na 7 možností, stačí právě 7 bitů)!

Standard definující protokol SMTP přitom počítá s možností, že přenosové cesty budou ve skutečnosti 8-bitové, neboli že budou přenášet najednou celé osmice bitů (tzv. oktety), a pro tento případ stanoví, že sedmibitové znaky mají být vkládány do osmibitových bytů na nejméně významné bitové pozice (tj. mají být zarovnávány doprava), zatímco nejvýznamnější (nejlevější) bit má být nastaven na nulu.

Co je nesmírně podstatné a důležité, je skutečnost že definice protokolu SMTP neříká nic o 8-bitových znacích ve zprávách, neboli o tom, jak se má zachovat implementace protokolu SMTP v případě, kdy dostane k přenesení zprávu obsahující nějaké 8-bitové znaky. Některé konkrétní implementace protokolu SMTP mohou "honorovat" nejvýznamnější bit a přenášet jej stejně věrně, jako ostatní bity. Platnému znění standardu však vyhovují i takové implementace SMTP, které se vůči nejvýznamnějšímu bitu chovají jinak, například tak že jej zcela ignorují (a na výstupu jej nastaví pevně na 0).

V praxi je pak celkový efekt následující: bude-li se někdo snažit "protlačit" (přenést) přes určitou posloupnost poštovních serverů komunikujících protokolem SMTP zprávu obsahující osmibitové znaky, pak nemá zaručeno že obsah zprávy bude doručen korektně. Může se stát že ano (a je to docela pravděpodobné), ale není to zaručeno - jistota je pouze v případě, kdy zpráva obsahuje pouze znaky znázornitelné v sedmi bitech.

Ponaučení z právě uvedených faktů by mělo být následující: pokud je předem známo, přes které poštovní servery bude zpráva procházet (resp. přes které konkrétní implementace protokolu SMTP), a všechny budou podporovat osmibitový přenos, pak je možné zařazovat do zpráv i osmibitové znaky. V opačném případě (který je v praxi bohužel nejčastější) je nutné se vyvarovat osmibitových znaků uvnitř zpráv, a to jak uvnitř jejich hlaviček, tak i uvnitř jejich těl.