Как се извлича пощата чрез протокола на пощенския офис

А зад заснеманията Погледнете към извличането на пощата чрез Протокола на пощенския офис

Пощенският протокол (POP), използван за извличане на поща от отдалечен сървър, е много прост протокол. Тя дефинира основната функционалност по ясен начин и е лесна за изпълнение. Разбира се, това също е лесно разбираемо.

Нека разберем какво се случва зад кулисите, когато програмата ви за електронна поща извлича поща в POP профил. Първо, трябва да се свържете със сървъра.

Здравей, това ми е

Обикновено POP сървърът слуша порт 110 за входящи връзки. При свързване от POP клиент (програмата ви за електронна поща), той се надява да отговори с готовност + OK pop.philo.org или нещо подобно. + ОК показва, че всичко е наред. Неговият негативен еквивалент е -ERR , което означава, че нещо се е объркало. Може би вашият имейл клиент вече ви е показал един от тези отрицателни отговори на сървъра.

Влизане в профила

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

+ ОК pop.philo.org готов
ПОТРЕБИТЕЛСКИ взвод

Тъй като потребителят с това име съществува, POP сървърът отговаря с + OK и може би някои gibberish ние наистина не се интересува. Ако няма такъв потребител на сървъра, това, разбира се, ще ни накара да се паникьоснем с -ERR потребител, който е неизвестен .

За да завършим проверката на автентичността, трябва да дадем нашата парола. Това се прави с командата "pass":

+ ОК изпратете паролата си
минавай noplato

Ако въведем паролата правилно, сървърът отговаря с + ОК голяма парола или каквото и да е програмистът на POP сървъра. Важната част отново е + OK . За съжаление, паролите също могат да бъдат грешни. Сървърът отбелязва това със сухо -ERR потребителско име и парола, които не съвпадат (сякаш бихте използвали потребителското си име като парола).

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

Имате поща!

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

Командата, използвана за извличането на тези основни пощенски кутии, е STAT .

Възможен отговор на сървъра ще бъде + OK 18 67042 . В този случай, няма значение какво следва знакът + OK . Веднага след това е броят на съобщенията в пощенската кутия, след което, разделени с интервал, идва с размера на пощенската кутия в октети (един октет е 8 бита).

СТАТИСТИКА
+ ОК 18 67042

Ако няма поща, сървърът отговаря с + OK 0 0 . Тъй като има 18 нови съобщения на сървъра, обаче, можем да ги изброим с помощта на командата LIST . В отговор сървърът посочва съобщенията в следния формат:

СПИСЪК
+ OK 18 съобщения (67042 октета)
1 2552
2 3297
...
18 3270
,

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

Командата LIST може да приеме номера на съобщение като незадължителен аргумент, например LIST 2 . Отговорът на сървъра на това искане ще бъде + OK 2 3297 , номера на съобщението, последван от размера на съобщението. Ако се опитате да посочите съобщение, което не съществува, като LIST 23 , сървърът не показва въображение и казва: -ERR няма такова съобщение .

Големият извличане (и изтриване)

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

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

Сървърът отговаря с + OK и съобщението е в няколко реда. Съобщението се прекратява само с един период от един ред. Например:

RETR 1
+ ОК 2552 октета
Blah!
,

Ако се опитаме да получим съобщение, което не съществува, получаваме -ERR такова съобщение .

Сега можем да изтрием съобщението с помощта на командата DELE . (Разбира се, можем да изтрием съобщението, без да го извличаме, ако е един от тези дни).

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

Отговорът на сървъра на командата DELE е + OK изтрито съобщение :

DELE 1
Съобщението + ОК е изтрито

Ако наистина е един от тези дни и сме маркирали съобщение за заличаване, което не искаме да бъде изтрито, възможно е да изтриете всички съобщения, като нулирате маркерите за изтриване. Командата RSET връща пощенската кутия в състоянието, в което се намира, преди да влезем.

Сървърът отговаря с + OK и евентуално с броя на съобщенията:

RSET
+ ОК 18 съобщения

След като извлечем и изтрием всички съобщения, е време да кажем сбогом с помощта на командата QUIT . Това ще изчисти съобщенията, маркирани за изтриване, и ще затвори връзката. Сървърът отговаря с + OK и съобщение за сбогом:

QUIT
+ ОК, чао

Възможно е сървърът да не може да изтрие съобщение. След това ще реагира с грешка като съобщение "ERR 2", което не е изтрито .