Сървърът Att SMTP - Протоколът SMTP

Електронната поща е съществувала под една или друга форма още през 60-те години на миналия век. Хората са си оставяли съобщения един на друг, използвайки различни методи на мейнфрейм компютри, но едва през август 1982 г. Институтът за информационни науки публикува Протокола за обикновен трансфер на поща (SMTP; RFC 821), с който се предлага стандартизиран метод за изпращане и получаване на електронна поща.

SMTP бързо стана популярен в ARPANET, като замени по-старите по-сложни методи, използвани за пренасяне на поща от един мейнфрейм до друг, и за първи път беше поддържан в края на 1982 г. от ранния агент за пренос на поща Sendmail в BSD 4.1c.
Оттогава насам протоколът е преработван и разширяван сравнително редовно, но основният метод за изпращане на поща до голяма степен е останал непроменен.

Протоколът е текстово базиран и първоначално не поддържа предаване на двоични данни. Въпреки това текстовият протокол е лесен за изпълнение и поддръжка. MIME (Multipurpose Internet Mail Extensions) става популярен в края на 80-те години за кодиране и изпращане на двоични данни чрез SMTP. Днес SMTP е доминиращият протокол за изпращане и получаване на електронна поща в интернет и познаването на този протокол е от съществено значение за всеки мрежов администратор.

Тъй като SMTP е базиран на текст, усвояването на протокола е значително по-лесно от много други и за директна комуникация със SMTP сървър е необходима само програма, която може да изпраща ASCII данни през TCP/IP порт 25, например Telnet.

Пощата се изпраща чрез SMTP в транзакция, т.е. ако изпращането на съобщението не завърши изцяло и без генериране на грешка, съобщението се прекратява. RFC 821 описва транзакцията като състояща се от три етапа: посочване на изпращач, предоставяне на един или повече получатели и след това изпращане на самото съобщение. Въпреки това е по-лесно да се мисли за SMTP транзакция като за 5 етапа:

  • Ръкостискане
  • Изпрати адрес за отговор
  • Изпращане на получатели
  • Изпращане на данни за съобщение
  • Край на транзакцията

Ръкостискане

При свързване с SMTP сървър на порт 25 изпращачът на съобщение трябва да изчака получателят да приеме връзката и да се идентифицира в следния формат:

220 [домейн] [Информация за услугата]
Пример: 220 example.com Услугата е готова

След това изпращачът трябва да се идентифицира пред получателя, като използва командата HELO.

HELO [домейн]
Пример: HELO example.com

Пощенските сървъри ще очакват всеки от тях да се идентифицира чрез име на домейн, което може да се използва за проверка на идентичността на сървъра чрез извършване на проверка на MX запис, но получаващият сървър не трябва да отхвърля връзката на този етап, дори ако идентичността на изпращача не може да бъде проверена, и затова трябва да отговори с:

250 [Съобщение]
Пример: 250 example.com Hello bob at example.com

Код на отговора 250 е общият отговор "OK" от SMTP сървъра, който съобщава, че последното действие е завършило успешно.

Изпрати отговор Адрес:

След като двата сървъра са извършили своето ръкостискане, транзакцията SMTP е започнала и можем да започнем да изпращаме команди към сървъра. Ако искате да видите командите, поддържани от сървъра, изпратете командата HELP и SMTP сървърът трябва да отговори със съобщение, в което подробно се описва кои команди се поддържат.

За да можем да изпратим съобщение до потребител на този сървър, първо трябва да зададем адрес за отговор. Адресът за отговор трябва да бъде предоставен първо, за да може в случай на грешки по време на SMTP транзакцията те да бъдат съобщени на този адрес. За тази цел използваме командата "MAIL FROM:":

ПОЩА ОТ:
Пример: МАЙЛ ОТ:

Обърнете внимание на символите По-малко от и По-голямо от. Те се изискват от RFC 821, за да съдържат самия имейл адрес. Ако адресът е приет, SMTP ще върне отговор 250 OK.

Изпращане на получатели

След задаване на адрес за отговор SMTP ще ни позволи да идентифицираме получателите на съобщението. За тази цел използваме командата "RCPT TO:":

RCPT КЪМ:
Пример: RCPT TO:

За да зададете няколко получатели, просто повторете тази команда за всеки получател.Ако получателят приеме поща за този потребител и може да приеме съобщението в този момент, той трябва да отговори с отговор 250 OK. Ако обаче пощата не бъде приета за този потребител, ще бъде изпратен отговор 550 failure или съответният код за грешка. Ако получим отговор 250 OK, можем да продължим с изпращането на данните на съобщението.

Изпращане на данни за съобщение

Изпращането на данни чрез SMTP е доста просто, но форматите на съобщенията могат да бъдат доста сложни, особено когато се изпращат двоични прикачени файлове. За да започнем да изпращаме данни, трябва да издадем командата "DATA", на която сървърът трябва да отговори с 354 Междинен отговор, т.е.:

354 Въведете съобщение, завършващо с "." на отделен ред

Най-простото съобщение, което можем да изпратим, е обикновено текстово съобщение, за което не е необходимо да използваме многокомпонентния формат на съобщението MIME. Всички съобщения, независимо дали са обикновени или не, се завършват с изпращане на ред, съдържащ само знак точка. Също така преди изпращането на съобщението може да изпратите някаква информация в заглавието, като например Дата, Тема, До, Сс и От.

Пример:

ДАННИ
354 Въведете съобщение, завършващо с "." на отделен ред
Тема: Това е темата на текстовото съобщение на плана
А това е тялото на съобщението в обикновен текст.

Ако бъде приет, SMTP сървърът ще върне отговор 250 OK или код за грешка, ако транзакцията се е провалила или е била непълна. Обърнете внимание на знака за точка в края на реда на тялото на съобщението - само когато знакът за точка се намира самостоятелно на реда, сървърът ще спре да слуша за данни. Ако сървърът изпращач изпраща съобщение, което би довело до преждевременно затваряне на сесията за данни, тъй като съобщението съдържа един символ точка на ред, той трябва да добави допълнителен символ точка на реда.

Приключване на транзакцията

До този момент всичко, което е изпратено до получаващия SMTP сървър, се счита за еднократна употреба. Ако командата "QUIT" не бъде изпратена преди затварянето на връзката, получаващият сървър просто ще изтрие всички данни за съобщенията, които са били съхранени. Първоначално използвана като начин за безпроблемно затваряне на връзка, днес тя обикновено се използва за представяне на завършена транзакция, като много пощенски сървъри изчакват командата QUIT, преди да подредят пощата на опашката за маршрутизиране от агента за прехвърляне на съобщения. След като изпратите командата QUIT, сървърът на местоназначението трябва да изпрати 221 отговор, за да потвърди, че транзакцията е приключила и връзката се затваря.

Ако изучавате протокола SMTP, препоръчваме ви да прочетете RFC 821, 2476 и 2554. Трябва да помните, особено когато четете RFC 821, че от 1982 г. насам сървърите за електронна поща са се променили значително, отчасти в отговор на злоупотребите от страна на спамърите.

Този запис беше публикуван в SMTP Servers. Добавете отметки към permalink.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Всеки знае, че надеждният SMTP сървър е ключът към правилното доставяне на електронната поща. Също така е добре известно, че вече НИКОЙ не предлага SMTP без удостоверяване или за отворено предаване. НО ВСЕ ОЩЕ МОЖЕТЕ ДА ПОЛУЧИТЕ ВИСОКОКАЧЕСТВЕН SMTP СЪРВЪР БЕЗПЛАТНО ЗА ПОЛЗВАНЕ!

Кликнете тук за вашия безплатен SMTP сървър