SMTP Inside Out

Как работи електронната поща

Чудили ли сте се някога какво се случва, когато натиснете бутона Изпращане в програмата си за електронна поща? Вероятно не, предполагам - докато работи. Именно затова трябва да се чудите. В случай, че нещо не работи, добре е да знаете какво не работи. Обикновено това е половината решение.

Когато изпращате имейл SMTP влиза в игра. SMTP е кратък за протокола Simple Mail Transfer както е дефинирано в RFC 5321: Протокол за променлив протокол за електронна поща. Вашият пощенски клиент разговаря с SMTP сървъра, като използва тази чиста и проста процедура, за да получава имейл от едно място на друго.

Флиртът

Програмата Ви за имейли става SMTP клиент , се свързва с порт 25 на пощенския ви сървър (обикновено SMTP порт ) и - казва EHLO . Компютрите в крайна сметка са само човешки и това, което се брои, е, че иска да бъде учтив. Всъщност той не се опитва да бъде учтив, а да използва по-късно допълнения към SMTP, които доведоха до два аромата на по-късната команда HELO (командата SMTP обикновено се състои от четири знака).

Две аромати на HELO

EHLO, колкото по-скорошната, прави сървъра рекламира всички допълнителни функции (като уведомление за състоянието на доставка или възможност за транспортиране на съобщения, които съдържат различни от безопасни ASCII символи), които поддържа.

Не всеки сървър ще позволи това поздравление, но трябва да приеме обикновен HELO, който естествено предполага, че няма допълнителни функции. И двата команди за здравеопазване изискват от клиента да определи домейна си след ** LO, обаче. На практика това изглежда нещо като:

220 mail.domain.net ESMTP сървър
HELO
501 HELO изисква адрес на домейна
HELO localhost
250 mail.domain.net Здравейте localhost [127.0.0.1], с удоволствие ще се срещнем с вас

(Моят вход е в курсив , изходът на сървърите е черен, линиите, започващи с 5, показват грешка .)

Изпращачът

Останалата част от протокола наистина заслужава атрибута прост. Ако искате да изпратите имейл, започнете с ключовите думи MAIL FROM:. Следват имейл адреса на подателя, както се предлага от. Не забравяйте да поставите скоби около адреса, въпреки че (като ). Като продължаваме нашия пример, ние имаме:

ПОЩА ОТ:
250 sender@example.com ... Sender ok

Получателят

След като сървърът приеме адреса на подателя, клиентът може да посочи адреса на получателя. Командата за това действие, RCPT TO: отново е доста предположетелна. Искам да изпратя поща до себе си :

RCPT TO: recipient@example.com
250 support@lifewireguide.com ... Получател ok (ще се появи на опашка)

Това, че сървърът ще бъде на опашка, означава само това: той ще запази местоположението на място и ще го изпрати заедно с всички останали по пощата в интервали (например на всеки 30 минути). Това поведение зависи от конфигурацията и сървърът може да достави незабавно и поща.

Ние почти свършихме. Това, което все още липсва, е важната част: истинското послание.

Съобщението

Сега, когато "пликът" е завършен, данните от имейл съобщението, точно както е, могат да следват. Тези "данни" се състоят от тялото на имейла, както и от полетата на заглавката .

Командата за иницииране на състоянието, при която сървърът приема съобщението, е DATA . След това се намират всички заглавни полета на имейл съобщението и след това тялото, като и двете съставляват само един голям блок от текст (или данни). За да кажете на сървъра, че входът е завършен, се използва точка от само себе си (\ r \ n. \ R \ n). Затова изпращам моето послание:

ДАННИ
354 Въведете поща, завършете с "." на линията сама по себе си
Идентификационен номер на съобщението:
Дата: Sun, 17 Aug 1997 18:48:15 +0200
От: Heinz Tschabitscher
До: Heinz Tschabitscher
Предмет: За конкурса Summarize-Proust

Извън света на Суон!
,
250 SAA19153 Съобщението е прието за доставка

Да, това означава, че можете да посочите име, което е съвсем различно от името, към което идва електронната поща в полето До :. Например, можете да използвате " Списък на получателите потиснат" .

Край

Вече можете да изпратите толкова имейли, колкото желаете, като повторите стъпките от MAIL FROM: до . , Ако сте готови с това, можете да напуснете сървъра с командата QUIT и това е точно това, което правим:

QUIT
221 Сбогом

Как мога да направя това?

Нетривиалното решение е да изпратите telnet до сървъра си за изходяща поща (можете да намерите адреса му в настройките на акаунта на вашия имейл клиент ) на порт 25.

По-лесният начин е да използвате този аплет Java , който се опитва да имитира протокола SMTP и ви води през диалоговия прозорец.