Bosh sahifa Wiki SMTP

SMTP

SMTP — elektron xatni jo‘natuvchi dasturdan pochta serveriga va pochta serverlari orasida uzatadigan protokol. Uning to‘liq nomi Simple Mail Transfer Protocol hisoblanadi.

SMTP xatni jo‘natish va yetkazish zanjiriga xizmat qiladi. Foydalanuvchining pochta qutisidagi xatlarni ko‘rish uchun odatda IMAP yoki POP3 ishlatiladi.

Elektron pochta birgina serverdan iborat emas. Xat yozuvchi dastur, jo‘natuvchi server, DNS, qabul qiluvchi server, spam filtri va mailbox xizmati birgalikda ishlaydi.

Elektron xat yetkazish zanjiri

Oddiy xat quyidagi bosqichlardan o‘tadi:

  1. Foydalanuvchi mail clientda xat yozadi.
  2. Client xatni autentifikatsiyalangan submission serverga yuboradi.
  3. Jo‘natuvchi server qabul qiluvchi domenning MX yozuvlarini DNSdan topadi.
  4. Server mos qabul qiluvchi mail serverga SMTP ulanish ochadi.
  5. Qabul qiluvchi server manzil va siyosatni tekshiradi.
  6. Xat mailboxga yoziladi yoki keyingi ichki xizmatga uzatiladi.
  7. Qabul qiluvchi foydalanuvchi IMAP, POP3 yoki webmail orqali xatni o‘qiydi.

Har bosqich alohida log va statusga ega bo‘lishi mumkin.

SMTP rollari

SMTP tizimida bir nechta atama uchraydi.

Rol Vazifasi
MUA Mail User Agent; foydalanuvchining pochta dasturi
MSA Mail Submission Agent; foydalanuvchidan xat qabul qiladi
MTA Mail Transfer Agent; serverlar orasida xat uzatadi
MDA Mail Delivery Agent; xatni mailboxga joylaydi
MX server Domen uchun xat qabul qiluvchi server
Relay Xatni boshqa server tomon uzatadi

Bir dastur bir nechta rolni bajarishi mumkin. Masalan, Postfix MSA va MTA sifatida ishlashi mumkin.

SMTP sessiyasi

SMTP matnli buyruq–javob protokoli hisoblanadi. Server ulanishdan keyin 220 greeting yuboradi. Mijoz EHLO yoki eski HELO buyrug‘i bilan o‘zini tanishtiradi.

Oddiy sessiya:

S: 220 mail.example.uz ESMTP
C: EHLO client.example.uz
S: 250-mail.example.uz
S: 250-STARTTLS
S: 250 AUTH PLAIN LOGIN
C: MAIL FROM:<[email protected]>
S: 250 2.1.0 Ok
C: RCPT TO:<[email protected]>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CRLF>.<CRLF>
C: From: Sender <[email protected]>
C: To: User <[email protected]>
C: Subject: Test
C:
C: Xat matni
C: .
S: 250 2.0.0 Queued
C: QUIT

Server har buyruqqa uch xonali status kodi bilan javob beradi.

Envelope va header

SMTPda envelope manzillari bilan xat ichidagi header manzillari bir xil bo‘lishi shart emas.

Envelope:

  • MAIL FROM;
  • RCPT TO.

Header:

  • From;
  • To;
  • Cc;
  • Reply-To;
  • Subject;
  • Date;
  • Message-ID.

Yetkazish serveri asosan envelope recipientga qaraydi. Foydalanuvchi interfeysi esa headerdagi To va From qiymatlarini ko‘rsatadi.

BCC ishlatilganda qabul qiluvchi envelope ichida mavjud, lekin xat headerida alohida ko‘rinmaydi.

SMTP status kodlari

Birinchi raqam javobning umumiy turini bildiradi.

Kod guruhi Mazmuni
2xx Amal muvaffaqiyatli
3xx Qo‘shimcha ma’lumot kutilmoqda
4xx Vaqtinchalik xato, keyin qayta urinish mumkin
5xx Doimiy xato, shu holatda qayta urinish foydasiz

Misollar:

  • 250 — buyruq qabul qilindi;
  • 354 — xat ma’lumotini yuborish mumkin;
  • 421 — xizmat vaqtincha mavjud emas;
  • 450mailbox vaqtincha band yoki siyosat xatosi;
  • 550 — foydalanuvchi mavjud emas yoki xat rad etildi;
  • 552 — hajm yoki storage cheklovi;
  • 554transaction rad etildi.

Kengaytirilgan status kodlari 5.1.1 kabi aniqroq sabab beradi.

Portlar

SMTP turli vazifa uchun turli portlarda uchraydi.

Port Odatdagi vazifa
25 Mail serverlar orasidagi uzatish
587 Foydalanuvchi yoki ilova uchun message submission
465 TLS boshidan yoqilgan submission

25-portdagi server-to-server SMTP ko‘pincha foydalanuvchi paroli bilan ishlamaydi. 587 va 465-portlarda esa client autentifikatsiyasi talab qilinadi.

Ko‘plab internet provayderlar spamni kamaytirish uchun oddiy foydalanuvchi tarmog‘idan tashqi 25-portni cheklaydi. Ilovalar submission serverdan foydalanadi.

ESMTP

Extended SMTP EHLO buyrug‘i orqali server imkoniyatlarini e’lon qiladi.

Kengaytmalar:

  • SIZE — maksimal xat hajmi;
  • STARTTLS — TLSga o‘tish;
  • AUTH — autentifikatsiya usullari;
  • 8BITMIME — 8 bitli body;
  • PIPELINING — bir nechta buyruqni kutmasdan yuborish;
  • CHUNKING — xatni bloklar bilan uzatish;
  • SMTPUTF8 — xalqaro manzil va headerlar.

Mijoz server e’lon qilmagan kengaytmaga tayanmasligi kerak.

STARTTLS va TLS

STARTTLS oddiy SMTP ulanishini TLS bilan himoyalangan kanalga o‘tkazadi.

Jarayon:

  1. mijoz EHLO yuboradi;
  2. server STARTTLS imkoniyatini bildiradi;
  3. mijoz STARTTLS buyrug‘ini yuboradi;
  4. TLS handshake bajariladi;
  5. mijoz yangi himoyalangan sessiyada yana EHLO yuboradi.

Submission xizmatida TLS odatda majburiy qilinadi. Serverlar orasidagi SMTPda esa tarixan opportunistic TLS keng tarqalgan: imkon bo‘lsa shifrlanadi, bo‘lmasa oddiy kanalga qaytishi mumkin.

MTA-STS, DANE va TLS reporting serverlararo TLS siyosatini kuchaytirishga yordam beradi.

SMTP AUTH

Submission server foydalanuvchi yoki ilovani SMTP AUTH orqali tasdiqlaydi.

Autentifikatsiya usullari:

Parol TLSsiz uzatilmasligi kerak. PLAIN nomli usul parolni shifrlamaydi; u faqat allaqachon TLS bilan himoyalangan kanal ichida xavfsiz ishlatilishi mumkin.

DNS MX yozuvi

Qabul qiluvchi domen uchun mail serverlar DNSdagi MX record orqali topiladi.

Misol:

example.uz.  MX 10 mail1.example.uz.
example.uz.  MX 20 mail2.example.uz.

Kichik preference qiymati yuqoriroq ustuvorlikka ega. mail1 mavjud bo‘lmasa, jo‘natuvchi mail2ga urinadi.

MX target hostname bo‘lishi kerak. Keyin uning A yoki AAAA yozuvi olinadi.

MX yozuvi bo‘lmasa, SMTP standartlari ayrim holatda domenning A yoki AAAA yozuviga murojaat qilishga ruxsat berishi mumkin. Amaliy domenlarda aniq MX yozuvi ishlatiladi.

Queue va qayta urinish

Qabul qiluvchi server vaqtincha ishlamasa, jo‘natuvchi MTA xatni queueda saqlaydi.

4xx xatoda:

  • xat darhol yo‘qolmaydi;
  • server keyinroq qayta urinadi;
  • interval bosqichma-bosqich oshishi mumkin;
  • maksimal queue muddati tugasa bounce yaratiladi.

5xx xatoda xat odatda doimiy rad etilgan hisoblanadi.

Queue yozuvida:

  • envelope sender;
  • recipientlar;
  • xat mazmuni;
  • urinishlar soni;
  • oxirgi xato;
  • keyingi urinish vaqti

saqlanadi.

Bounce

Yetkazib bo‘lmagan xat haqida jo‘natuvchiga Delivery Status Notification yoki bounce yuborilishi mumkin.

Bounce odatda bo‘sh envelope sender <> bilan jo‘natiladi. Bu bounce xabarining o‘ziga yana bounce qaytib, cheksiz zanjir hosil bo‘lishini oldini oladi.

Soxta senderli spam rad etilgandan keyin begona manzilga bounce yuborish backscatter muammosini keltirib chiqarishi mumkin. Shu sababli server imkon qadar xatni SMTP transaction vaqtida rad etadi.

MIME

SMTP dastlab 7 bitli matn uchun yaratilgan. MIME xat ichida quyidagilarni tashishga imkon beradi:

  • HTML;
  • turli character encoding;
  • rasm;
  • PDF va boshqa biriktirma;
  • multipart body;
  • inline kontent;
  • raqamli imzo.

Biriktirma odatda base64 kabi kodlash bilan matnli formatga aylantiriladi. Bu xat hajmini oshiradi.

SPF

SPF domen nomidan qaysi serverlar xat yuborishi mumkinligini DNS yozuvi orqali bildiradi.

Qabul qiluvchi server envelope sender domenini va jo‘natuvchi IP manzilini tekshiradi. SPF xat mazmunini imzolamaydi va headerdagi ko‘rinadigan From manzilini bevosita kafolatlamaydi.

DKIM

DKIM xatning ayrim header va body qismlarini raqamli imzo bilan tasdiqlaydi.

Jo‘natuvchi server private key bilan imzo qo‘yadi. Public key DNSdagi selector yozuvida e’lon qilinadi. Qabul qiluvchi imzoni tekshiradi.

DKIM xat yo‘lda o‘zgarmaganini va ma’lum domen kaliti bilan imzolanganini ko‘rsatadi.

DMARC

DMARC headerdagi From domeni bilan SPF yoki DKIM natijasining mosligini tekshiradi.

Domen egasi DNS orqali siyosat e’lon qiladi:

  • none — faqat kuzatish;
  • quarantine — shubhali xatni spamga ajratish;
  • reject — xatni rad etish.

DMARC reportlari domen nomidan kim xat yuborayotganini tahlil qilishga yordam beradi.

Open relay

SMTP server begona jo‘natuvchidan begona qabul qiluvchiga autentifikatsiyasiz xat uzatsa, open relay hisoblanadi.

Open relay spam yuborishda suiiste’mol qilinadi va server IP manzili blocklistga tushishi mumkin.

Relay faqat:

  • lokal tarmoq;
  • autentifikatsiyalangan foydalanuvchi;
  • tasdiqlangan ilova;
  • aniq domen yoki connector

uchun ruxsat etiladi.

Diagnostika

SMTP yetkazish muammosida quyidagilar tekshiriladi:

  • DNS MX va A/AAAA yozuvlari;
  • port 25, 587 yoki 465;
  • TLS sertifikat va cipher;
  • SMTP status kodi;
  • queue loglari;
  • envelope sender va recipient;
  • SPF, DKIM va DMARC;
  • reverse DNS;
  • IP reputation;
  • xat hajmi;
  • attachment siyosati;
  • spam filtri;
  • relay ruxsati.

SMTP transaction logi xat qaysi bosqichda rad etilganini aniq ko‘rsatadi.

Bog‘liq tushunchalar

Email, MTA, MSA, MUA, MX record, SMTP AUTH, STARTTLS, MIME, SPF, DKIM, DMARC, Mail queue, Bounce, IMAP, POP3