SMTP Inside Out

Jak funguje internetový e-mail

Přemýšleli jste někdy o tom, co se stane, když stisknete tlačítko Odeslat v e-mailovém programu? Pravděpodobně ne, myslím - dokud to funguje. To je právě důvod, proč byste se měli divit. V případě, že něco nefunguje, je dobré vědět, co nefunguje. Obvykle je to polovina řešení.

Po odeslání e-mailu se hraje SMTP . SMTP je zkratka pro protokol Simple Mail Transfer Protocol definovaný v dokumentu RFC 5321: Simple Mail Transfer Protocol. Váš poštovní klient komunikuje se serverem SMTP pomocí tohoto čistého a jednoduchého postupu, aby získal e-maily z jednoho místa do druhého.

The Flirt

Váš emailový program se stává klientem SMTP , připojí se k portu 25 poštovního serveru (obvykle portu SMTP ) a - říká EHLO . Počítače jsou nakonec jen lidské a to, co je důležité, je, že chce být zdvořilí. Ve skutečnosti se nepokouší být zdvořilí, ale použít pozdější přírůstky k SMTP, které přinesly dvě příchutě pozdějšího příkazu HELO (příkaz SMTP se obvykle skládá ze čtyř znaků).

Dvě příchutě HELO

EHLO, protože je novější, zpřístupňuje server všechny další funkce (například oznámení o stavu doručení nebo schopnost přepravovat zprávy, které obsahují jiné než bezpečné znaky ASCII), které podporuje.

Ne každý server povolí toto pozdrav, ale je nutné přijmout prostý HELO, který přirozeně předpokládá, že nejsou přítomny žádné další funkce. Oba hello příkazy vyžadují, aby klient po zadání ** LO zadal svou doménu. V praxi vypadá něco jako:

220 mail.domain.net ESMTP Server
AHOJ
501 HELO vyžaduje doménovou adresu
HELO localhost
250 mail.domain.net Ahoj localhost [127.0.0.1], rád se s vámi setkávám

(Můj vstup je kurzívou , výstupy na serverech jsou černé, řádky začínající číslem 5 označují chybu .)

Odesílatel

Zbytek protokolu opravdu zaslouží atribut jednoduchý. Chcete-li odeslat e-mail, začněte s klíčovými slovy MAIL FROM:. Následuje e-mailová adresa odesílatele, jak navrhuje od. Nezapomeňte zadat závorky kolem adresy (třeba ). Pokračujeme v našem příkladu:

MAIL FROM:
250 odesílatel@example.com ... Odesílatel ok

Příjemce

Poté, co server přijal adresu odesílatele, může klient zadat adresu příjemce. Příkaz pro tuto akci, RCPT TO: opět je spíše sugestivní. Chci poslat poštu na sebe :

RCPT TO: příjemce@example.com
250 support@lifewireguide.com ... Příjemce ok (bude fronta)

To, že server bude fronty, znamená to, že uloží poštu lokálně a pošle ji spolu se všemi dalšími frontami pořadu v intervalech (například každých 30 minut). Toto chování závisí na konfiguraci a server může také okamžitě odeslat poštu.

Už jsme skoro hotovi. To, co stále chybí, je důležitou součástí: skutečná zpráva.

Zpráva

Nyní, když je "obálka" dokončena, mohou následovat údaje z e-mailové zprávy. Tato "data" se skládá z těla e-mailu a hlaviček .

Příkaz iniciovat stav, který server přijme, je zpráva DATA . Následuje všechna pole záhlaví e-mailové zprávy a pak tělo, které oba tvoří pouze jeden velký blok textu (nebo dat). Chcete-li informovat server o dokončení vstupu, použije se tečka sama o sobě (\ r \ n. \ R \ n). Takže posílám svou zprávu:

DATA
354 Zadejte e-mail, končit "." na řádku sám
ID zprávy:
Datum: Ne, 17 Aug 1997 18:48:15 +0200
Od: Heinz Tschabitscher
Komu: Heinz Tschabitscher
Předmět: Pro soutěž Summarize-Proust

Vydejte se do Swanova světa!
.
250 SAA19153 Zpráva přijata k doručení

Ano, znamená to, že v poli Komu: můžete uvést úplně odlišné jméno od jména, ke kterému se e-mail dostane. Můžete například použít "Potvrzení seznamu příjemců " .

Konec

Nyní můžete odeslat tolik e-mailů, kolik chcete, zopakovat kroky od MAIL FROM: to . . Pokud jste s tím skončili, můžete ukončit server pomocí příkazu QUIT a to je právě to, co děláme:

PŘESTAT
Sbohem

Jak to mohu udělat?

Netriviálním řešením je telnet na váš server pro odchozí poštu (jeho adresu naleznete v nastavení účtu e-mailového klienta ) na portu 25.

Snadnější je použít tento applet Java , který se pokusí napodobit protokol SMTP a provede vás pomocí dialogu.