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:
- Foydalanuvchi mail clientda xat yozadi.
- Client xatni autentifikatsiyalangan submission serverga yuboradi.
- Jo‘natuvchi server qabul qiluvchi domenning MX yozuvlarini DNSdan topadi.
- Server mos qabul qiluvchi mail serverga SMTP ulanish ochadi.
- Qabul qiluvchi server manzil va siyosatni tekshiradi.
- Xat mailboxga yoziladi yoki keyingi ichki xizmatga uzatiladi.
- 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.
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;450— mailbox vaqtincha band yoki siyosat xatosi;550— foydalanuvchi mavjud emas yoki xat rad etildi;552— hajm yoki storage cheklovi;554— transaction 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:
- mijoz
EHLOyuboradi; - server
STARTTLSimkoniyatini bildiradi; - mijoz
STARTTLSbuyrug‘ini yuboradi; - TLS handshake bajariladi;
- mijoz yangi himoyalangan sessiyada yana
EHLOyuboradi.
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