Att SMTP szerver - Az SMTP protokoll

Az elektronikus levelezés valamilyen formában már az 1960-as években is létezett. Az emberek különböző módszerekkel hagytak üzeneteket egymásnak a nagyszámítógépeken, de csak 1982 augusztusában, amikor az Information Sciences Institute közzétette a Simple Mail Transfer Protocol (SMTP; RFC 821) című szabványosított módszert az e-mail küldésére és fogadására.

Az SMTP gyorsan népszerűvé vált az ARPANET-en, felváltva a régebbi, bonyolultabb módszereket, amelyeket a levelek egyik nagyszámítógépről a másikra történő továbbítására használtak, és először 1982 végén támogatta a BSD 4.1c-ben található korai Mail Transfer Agent Sendmail.
A protokollt azóta rendszeresen átdolgozták és bővítették, de a levelek küldésének alapvető módszere nagyrészt változatlan maradt.

A protokoll szövegalapú, eredetileg nem támogatta a bináris adatok továbbítását. A szövegalapúság azonban megkönnyítette a protokoll megvalósítását és karbantartását. A MIME (Multipurpose Internet Mail Extensions) a 80-as évek végén vált népszerűvé bináris adatok kódolására és SMTP-n keresztüli küldésére. Ma az SMTP a domináns protokoll az interneten történő e-mail küldésre és fogadásra, és ennek a protokollnak az ismerete elengedhetetlen minden hálózati rendszergazda számára.

Mivel az SMTP szövegalapú, a protokoll elsajátítása lényegesen egyszerűbb, mint sok másé, és az SMTP-kiszolgálóval való közvetlen kommunikációhoz mindössze egy olyan programra van szükség, amely képes ASCII-adatokat küldeni a TCP/IP 25-ös portján, például a Telnetre.

A levelek küldése SMTP-n keresztül tranzakcióban történik, azaz ha az üzenet küldése nem fejeződik be teljes egészében és hiba generálása nélkül, az üzenet elvetésre kerül. Az RFC 821 a tranzakciót úgy írja le, hogy az három szakaszból áll: a feladó megadása, egy vagy több címzett(ek) megadása, majd maga az üzenet elküldése. Egyszerűbb azonban egy SMTP-tranzakciót 5 szakaszból állónak elképzelni:

  • Kézfogás
  • Válaszcím küldése
  • Címzettek küldése
  • Üzenet adatok küldése
  • Tranzakció vége

Kézfogás

A 25-ös porton lévő SMTP-kiszolgálóhoz való csatlakozáskor az üzenet feladójának meg kell várnia, hogy a címzett elfogadja a kapcsolatot, és a következő formátumban azonosítja magát:

220 [domain] [szolgáltatási információk]
Példa: 220 example.com A szolgáltatás készen áll

A küldőnek ezután a HELO parancs segítségével azonosítania kell magát a vevő felé.

HELO [domain]
Példa: HELO example.com

A levelezőszerverek mindegyike elvárja, hogy egy tartománynévvel azonosítsa magát, amely alapján a szerver személyazonosságát MX rekord kereséssel lehet ellenőrizni, azonban a fogadó szerver ebben a szakaszban nem utasíthatja el a kapcsolatot, még akkor sem, ha a feladó személyazonossága nem ellenőrizhető, ezért a következő választ kell adnia:

250 [Üzenet]
Példa: 250 example.com Hello bob at example.com

A 250-es válaszkód az SMTP-kiszolgáló általános ‘OK’ válasza, amely azt jelenti, hogy az utolsó művelet sikeresen befejeződött.

Válaszcím elküldése:

Miután a két szerver végrehajtotta a kézfogást, az SMTP tranzakció elindult, és elkezdhetjük a parancsok küldését a szervernek. Ha látni szeretnénk a szerver által támogatott parancsokat, küldjük el a HELP parancsot, és az SMTP-kiszolgálónak egy üzenettel kell válaszolnia, amely részletezi, hogy mely parancsok támogatottak.

Ahhoz azonban, hogy üzenetet küldhessünk egy felhasználónak ezen a szerveren, először be kell állítanunk egy válaszcímet. A válaszcímet kell először megadni, hogy ha az SMTP tranzakció során bármilyen hiba lépne fel, azt ezen a címen lehessen jelezni. Ehhez a ‘MAIL FROM:’ parancsot használjuk:

POSTA:
Példa: MAIL FROM:

Figyelje meg a kisebb, mint és nagyobb, mint karaktereket. Az RFC 821 szerint ezeknek tartalmazniuk kell magát az e-mail címet. Ha a címet elfogadják, az SMTP 250 OK választ küld vissza.

Címzettek küldése

A válaszcím beállítása után az SMTP lehetővé teszi számunkra az üzenet címzettjeinek azonosítását. Ehhez az ‘RCPT TO:’ parancsot használjuk:

RCPT TO:
Példa: RCPT TO:

Több címzett beállításához egyszerűen ismételje meg ezt a parancsot minden egyes címzettnél.Ha a címzett elfogadja az adott felhasználó levelét, és ebben az időben el tudja fogadni az üzenetet, akkor 250 OK választ kell küldenie. Ha azonban a felhasználó levelét nem fogadja el, akkor 550 hiba válasz érkezik, vagy a megfelelő hibakód. Ha 250 OK választ kapunk, akkor folytathatjuk az üzenet adatainak elküldését.

Üzenet adatok küldése

Az SMTP-n keresztül történő adatküldés meglehetősen egyszerű, azonban az üzenetformátumok meglehetősen bonyolultak lehetnek, különösen bináris mellékletek küldésekor. Az adatok küldésének megkezdéséhez a ‘DATA’ parancsot kell kiadnunk, amelyre a szervernek a 354 Intermediate reply-t kell válaszolnia, azaz:

354 Üzenet megadása, amely “.”-val végződik egy sorban önmagában

A legegyszerűbb üzenet, amelyet küldhetünk, egy egyszerű szöveges üzenet, amely nem igényli a többrészes MIME üzenetformátum használatát. Minden üzenet, legyen az egyszerű szöveges vagy más, egy olyan sor elküldésével fejeződik be, amely csak egy pontot tartalmaz. Szintén az üzenet elküldése előtt küldhetünk néhány fejlécinformációt, mint például a Dátum, a Tárgy, a Címzett, a Cc és a Küldő.

Példa:

DATA
354 Üzenet megadása, amely “.”-val végződik egy sorban önmagában
Téma: A téma a következő: Ez a terv szöveges üzenetének tárgya.
Ez pedig a sima szöveges üzenet üzenettörzse.

Elfogadás esetén az SMTP-kiszolgáló 250 OK választ küld vissza, vagy egy hibakódot, ha a tranzakció sikertelen vagy hiányos volt. Figyelje meg az üzenettörzs sorának végén lévő pont karaktert, csak akkor, ha egy sorban önmagában pont karaktert talál, a szerver leállítja az adatvárást. Ha a küldő szerver olyan üzenetet küld, amely az adatmunkamenet idő előtti lezárását okozná, akkor mivel az üzenet egyetlen pont karaktert tartalmaz egy sorban, egy további pont karaktert kell hozzátennie a sorhoz.

A tranzakció befejezése

Eddig a pontig minden, amit a fogadó SMTP-kiszolgálónak küldtek, eldobhatónak minősül. Ha a kapcsolat lezárása előtt nem küldjük el a ‘QUIT’ parancsot, a célkiszolgáló egyszerűen törli a tárolt üzenetadatokat. Eredetileg a kapcsolat lezárásának kíméletes módjaként használták, ma már általában a befejezett tranzakció jelzésére használják, mivel sok levelezőszerver a QUIT parancsra vár, mielőtt a levelet a Message Transfer Agent számára sorba állítaná a továbbításra. A QUIT parancs elküldését követően a célkiszolgálónak egy 221 Reply-t kell küldenie, hogy megerősítse a tranzakció befejezését és a kapcsolat lezárását.

Ha az SMTP protokollt tanulja, érdemes elolvasnia az RFC 821, 2476 és 2554 szabványokat. Különösen az RFC 821 elolvasásakor ne feledje, hogy 1982 óta az e-mail szerverek jelentősen megváltoztak, részben a spammerek által elkövetett visszaélésekre reagálva.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Mindenki tudja, hogy a megbízható SMTP-kiszolgáló a kulcsa annak, hogy az e-mailjeidet megfelelően kézbesítsék. Az is köztudott, hogy SENKI sem kínál már SMTP-t hitelesítés nélkül vagy nyílt relayhez. DE MÉG MINDIG KAPHATSZ EGY JÓ MINŐSÉGŰ SMTP SZERVERT INGYENESEN A HASZNÁLATODRA!

Kattintson ide az INGYENES SMTP SZERVER-ért