Як Fetching пошты праз паштовае аддзяленне пратакол працуе

Закуліссі Паглядзіце на Fetching пошты па пратаколе паштамта

Post Office Protocol (POP) выкарыстоўваецца для атрымання пошты з выдаленым серверам з'яўляецца вельмі простым пратаколам. Яна вызначае асноўныя функцыянальныя магчымасці простым спосабам і лёгка рэалізаваць. Вядома, гэта таксама лёгка зразумець.

Давайце высветлім, што адбываецца за кулісамі, калі ваша праграма электроннай пошты атрымлівае пошту ў ўліковага запісу POP. Па-першае, неабходна падлучыцца да сервера.

Прывітанне, Гэта & # 39; S Me

Як правіла, сервер POP слухае порт 110 для ўваходных злучэнняў. Пасля падлучэння кліента POP (ваша паштовая праграма), то мы спадзяемся адказаць + ОК pop.philo.org гатовыя або што - то падобнае. + OK паказвае на тое, што ўсе â € »OK. Яго адмоўны эквівалент -ERR, што азначае што - то пайшло не так. Можа быць, ваш паштовы кліент ужо паказаў вам адзін з гэтых адмоўных адказаў сервера.

Уваход у сістэму

Цяпер, калі сервер сустрэў нас, мы павінны ўвайсці ў сістэму з дапамогай нашага карыстальніка (давайце выкажам здагадку , што імя карыстальніка з'яўляецца «Узвод», што сервер кажа друкуецца курсівам):

+ OK pop.philo.org гатовы
USER ўзвод

Так як карыстальнік з такім імем існуе, сервер POP адказвае + OK і , магчыма , некаторыя тарабаршчыну мы на самай справе не хвалюе. Калі б не было такога карыстальніка на сэрвэры, ён бы, вядома, зрабіць нас паніку з ERR адказ карыстачу невядома.

Для таго, каб зрабіць поўную аўтэнтыфікацыю, мы таксама павінны даць наш пароль. Гэта робіцца з дапамогай каманды «PASS»:

+ OK адправіць пароль
прайсці noplato

Калі ўвесці правільны пароль, сервер адказвае з + OK вялікім паролем або любы праграміст сервера POP меў на ўвазе. Важная частка зноў з'яўляецца + OK. На жаль, паролі таксама могуць быць няправільнымі. Сервер адзначае гэта з сухім ERR адказу імем карыстальніка і паролем не супадае (як калі б вы выкарыстоўваць ваша імя карыстальніка ў якасці пароля).

Калі ўсё прайшло добра, хоць, мы падлучаныя да сервера і ён ведае, хто мы, такім чынам, мы гатовыя зазірнуць новапрыбылых пошту.

Вы & # 39; ве ёсць пошта!

Пасля таго, як мы паспяхова ўвайшлі ў наш POP рахунак на сэрвэры, мы можам спачатку хачу ведаць, калі ёсць новая пошта наогул, а затым, магчыма, колькі.

Каманда , якая выкарыстоўваецца для атрымання гэтых базавых статыстычных дадзеных паштовых скрынь з'яўляецца STAT.

Магчымы адказ сервера будзе + OK 18 67042. У гэтым выпадку мае значэнне тое , што варта за знакам + OK. Адразу пасля гэтай колькасці паведамленняў у паштовай скрыні, а затым, падзеленыя прабеламі, прыходзіць памер паштовай скрыні ў актэт (актэт 8 біт).

STAT
+ OK 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
+ OK 2552 актэтаў
Мля!
,

Калі мы спрабуем атрымаць паведамленне , што не існуе, мы не атрымаем -ERR няма такога паведамленні.

Цяпер мы можам выдаліць паведамленне з дапамогай каманды DELE. (Можна, вядома, таксама выдаліць паведамленне, не будучы здабывацца, калі гэта адзін з тых дзён).

Гэта добра, каб ведаць, што сервер не будзе чысціць паведамленне неадкладна. Ён проста пазначаецца для выдалення. Фактычнае выдаленне адбываецца толькі тады, калі мы рэгулярна завяршыць злучэнне з серверам. Так што не пошта ніколі не будзе страчана, калі злучэнне раптам памірае, напрыклад.

Адказ сервера на каманду DELE ёсць + OK паведамленне выдаліць:

DELE 1
+ OK паведамленне 1 удалено

Калі гэта сапраўды адзін з тых дзён, і мы адзначылі паведамленне для выдалення, што мы не хочам, каб быць выдаленыя, можна аднавіць ўсе паведамленні, шляхам скіду дзялок пазнакі. Каманда RSET вяртае паштовую скрыню ў стан, якое было перш , чым мы ўвайшлі ў сістэму .

Сервер адказвае з + OK і , магчыма , колькасць паведамленняў , :

RSET
+ OK 18 паведамленняў

Пасля таго, як мы вынятыя і выдаленыя ўсе паведамленні прыйшоў час развітвацца з дапамогай каманды QUIT. Гэта ачысціць паведамленні, пазначаныя для выдалення і зачыніць злучэнне. Сервер адказвае з + OK і развітальным паведамленнем:

ВЫЙСЦІ
+ OK да пабачэння, да пабачэння

Цалкам магчыма, што сервер не змог выдаліць паведамленне. Тады ён будзе рэагаваць з памылкай як ERR адказ паведамленне 2 ня выдалены.