SMTP daxilində

İnternet e-poçt necə işləyir

E-poçt proqramınızdakı Göndər düyməsinə basarkən nə baş verdiyini merak etdiniz mi? Yəqin ki, yox, məncə - işlədiyi müddətdə. Buna baxmayaraq, təəccübləndirməyin səbəbi budur. Bir şey işləmədiyi halda işə yaramadığını bilmək yaxşıdır. Adətən, bu həllin yarısıdır.

E-poçt göndərdikdə SMTP oyuna girir. SMTP , RFC 5321'de təsvir edilən Simple Mail Transfer Protokolu üçün qısadır: Simple Mail Transfer Protocol. Poçt müştəriniz bir yerdən digərinə e-poçt almaq üçün bu təmiz və sadə prosedurdan istifadə edərək SMTP serverə danışıqlar aparır .

Flirt

E-poçt proqramınız bir SMTP müştəri halına gəlir, poçt serverinizin 25 nöqtəsinə (adətən SMTP portu ) bağlanır və - EHLO deyir. Kompüterlər, sonda, yalnız insandır və nəzərə alsaq ki, nəzakətli olmaq istəyir. Əslində, nəzakət olmağa çalışmır, ancaq sonrakı HELO əmrinin iki zövqünü (SMTP əmri ümumiyyətlə dörd simvoldan ibarətdir) gətirib çıxaran SMTP-ə sonrakı əlavələri istifadə etməyə çalışır.

HELO'nun iki dadı

EHLO, daha yeni olanı olan server, dəstəkləyən bütün əlavə xüsusiyyətləri (məsələn, çatdırılma vəziyyəti bildirişi və ya təhlükəsiz ASCII simvolları olan mesajı nəql etmək bacarığı kimi) təqdim edir.

Hər bir server bu salam verməyə icazə verməyəcək, lakin təbii olaraq heç bir əlavə xüsusiyyət olmadığını qəbul edən düz bir HELO qəbul etməsi tələb olunur. Hər ikisi də salam əmrləri müştərinin ** LO-dan sonra domenini müəyyən etməsini tələb edir. Praktikada bu kimi bir şey görünür:

220 mail.domain.net ESMTP Server
HELO
501 HELO ünvanı ünvanı tələb edir
HELO localhost
250 mail.domain.net Salam localhost [127.0.0.1], sizinlə görüşməkdən xoşbəxtdir

( Girisim kursivdə , serverlərin çıxışları qara, 5 ilə başlayan xətalar isə səhvdir .)

Göndərən

Protokolun qalan hissəsi həqiqətən sadədir. Bir e-poçt göndərmək istəyirsinizsə, MAIL FROM: açar sözlərindən başlayın. Bundan sonra göndərənin e-poçt ünvanı , təklif etdiyi kimi gəlir. Bununla yanaşı, ünvanı ("sender@example.com>" kimi) qoymaq üçün brackets qoymağı unutmayın. Bizim nümunə ilə davam edirik:

MAIL FROM:
250 sender@example.com ... Gönderen ok

Alıcı

Server göndərənin ünvanını qəbul etdikdən sonra müştəri alıcının ünvanını verə bilər. Bu hərəkətə əmr, RCPT TO: yenə də çox düşündürücüdür. Özümə məktub göndərmək istəyirəm:

RCPT TO: recipient@example.com
250 support@lifewireguide.com ... Alıcı ok (sıraya qoyacaq)

Serverin növbəsində yalnız bu deməkdir: poçtu yerli olaraq saxlayacaq və ardıcıllıqla (məsələn, hər 30 dəqiqə) bütün digər sıraya qoşulan poçtla birlikdə göndərəcəkdir. Bu davranış konfiqurasiyadan asılıdır və server həmçinin poçtu dərhal çatdıra bilər.

Biz demək olar ki, bitmişik. Hələ əskik olan şey, vacib hissəsidir: faktiki mesaj.

Mesaj

İndi "zərf" başa çatdıqdan sonra, e-poçt mesajının məlumatları da olduğu kimi izləyə bilər. Bu "məlumat" e-poçtun cismibaşlıq sahələrindən ibarətdir .

Serverin mesajı qəbul etməsini təmin edən dövləti başlatmaq əmri DATA'dır . Bundan sonra yalnız bir böyük mətn bloğunu (və ya məlumatları) təşkil edən e-poçt mesajının başlıq sahələri və sonra cəsədlərdir. Serverə girişi başa çatdıqdan sonra bir xəttdə bir nöqtə bitdi (\ r \ n. \ R \ n). Mən mesajımı göndərirəm:

DATA
354 E-poçt daxil edin, "." Ilə bitirin. özü ilə bir xətt üzərində
İleti kimliği:
Tarih: Paz, 17 Avqust 1997 18:48:15 +0200
Heinz Tschabitscher
Heinz Tschabitscher
Mövzu: Xülasə-Proust Yarışması üçün

Swan-ın dünyasına bağladılar!
.
250 SAA19153 Göndərilmə üçün müraciət qəbul edilir

Bəli, bu, e-poçt Kimə: alanına gələrsə, tamamilə fərqli bir ad verə bilərsiniz. Məsələn, " Qəbul edən siyahı bastırılmış" istifadə edə bilərsiniz.

Son

Sizdən MAIL FROM: dən addımları təkrar etmək istədiyiniz kimi bir çox e-poçt göndərə bilərsiniz . . Bununla bitmiş olsanız, serverin QUIT əmri ilə çıxışından çıxa bilərsiniz və bu, yalnız etdiyimiz şeydir:

QUIT
221 Xoşbəxtlik

Bunu necə edə bilərəm?

Qeyri-trivial həlli, giden poçt serverinizə telnet göndərmək (25-dən 25-ə qədər e-poçt müştərinizin hesab ayarlarına ünvanını tapa bilərsiniz).

Daha asan bir yol SMTP protokolunu təqlid etməyə çalışır və bu dialoq vasitəsilə sizi yönləndirən bu Java proqramını istifadə etməkdir.