← rfc/
╔══════════════════════════════════════════════════════════════════════════╗
RFC 788 · mail

SIMPLE MAIL TRANSFER PROTOKOLÜ

Yazar
Kurum
Tarih
Kasım 1981
Durum
Network Working Group Yorum Talebi
Kanal
mail/

SIMPLE MAIL TRANSFER PROTOKOLÜ

Jonathan B. Postel
Kasım 1981

Information Sciences Institute
University of Southern California
4676 Admiralty Way
Marina del Rey, California 90291
(213) 822-1511


İÇİNDEKİLER

  1. GİRİŞ .................................................. 1
  2. SMTP MODELİ ............................................ 2
  3. SMTP PROSEDÜRÜ ......................................... 4
    • 3.1. Posta ............................................ 4
    • 3.2. Yönlendirme ...................................... 7
    • 3.3. Doğrulama ve Genişletme .......................... 8
    • 3.4. Gönderme ve Postalama ............................ 10
    • 3.5. Açma ve Kapama ................................... 12
    • 3.6. Aktarma .......................................... 13
    • 3.7. Alan Adları ...................................... 15
  4. SMTP TEKNİK ÖZELLİKLERİ ................................ 16
    • 4.1. SMTP Komutları ................................... 16
      • 4.1.1. Komut Anlambilimi ............................ 16
      • 4.1.2. Komut Sözdizimi .............................. 23
    • 4.2. SMTP Yanıtları ................................... 28
      • 4.2.1. İşlev Gruplarına Göre Yanıt Kodları .......... 29
      • 4.2.2. Sayısal Sıraya Göre Yanıt Kodları ............ 30
    • 4.3. Komut ve Yanıtların Sıralanması .................. 31
    • 4.4. Durum Diyagramları ............................... 33
    • 4.5. Ayrıntılar ....................................... 35
      • 4.5.1. En Az Uygulama ............................... 35
      • 4.5.2. Şeffaflık .................................... 35
      • 4.5.3. Boyutlar ..................................... 36

EK A: TCP ................................................. 38
EK B: NCP ................................................. 39
EK C: NITS ................................................ 40
EK D: X.25 ................................................ 41
EK E: Yanıt Kodlarının Kuramı ............................. 42
EK F: Senaryolar .......................................... 45

SÖZLÜK .................................................... 58
KAYNAKLAR ................................................. 61


Network Working Group: J. Postel
Request for Comments: 788
Yerine Geçer: RFC 780, 772
Kurum: ISI
Tarih: Kasım 1981

SIMPLE MAIL TRANSFER PROTOKOLÜ

1. GİRİŞ

Simple Mail Transfer Protocol (SMTP)'ün amacı, postayı güvenilir ve verimli bir şekilde aktarmaktır.

SMTP, belirli bir iletim alt sisteminden bağımsızdır ve yalnızca güvenilir, sıralı bir veri akışı kanalına ihtiyaç duyar. Ek A, B, C ve D, SMTP'nin çeşitli taşıma hizmetleriyle kullanımını açıklar. Bir Sözlük, bu belgede kullanılan terimlerin tanımlarını sağlar.

SMTP'nin önemli bir özelliği, posta iletilerini farklı taşıma hizmeti ortamları arasında aktarabilme yeteneğidir. Bir taşıma hizmeti, süreçler arası iletişim ortamı (IPCE) sağlar. Bir IPCE tek bir ağı, birkaç ağı veya bir ağın bir alt kümesini kapsayabilir. Taşıma sistemlerinin (veya IPCE'lerin) ağlarla bire bir eşleşmediğini anlamak önemlidir. Bir süreç, karşılıklı olarak bilinen herhangi bir IPCE üzerinden başka bir süreçle doğrudan iletişim kurabilir. Posta, süreçler arası iletişimin bir uygulaması veya kullanım biçimidir. Posta, farklı IPCE'lerde bulunan süreçler arasında, iki (veya daha fazla) IPCE'ye bağlı bir süreç üzerinden aktarılarak iletilebilir. Daha özel olarak, posta farklı taşıma sistemlerindeki ana makineler arasında, her iki taşıma sistemine de bağlı bir ana makine aracılığıyla aktarılabilir.

2. SMTP MODELİ

SMTP tasarımı aşağıdaki iletişim modeline dayanır: bir kullanıcı posta isteğinin sonucu olarak, gönderen-SMTP alıcı-SMTP'ye tam çift yönlü bir iletim kanalı kurar. Alıcı-SMTP ya nihai hedef ya da bir ara düğüm olabilir. SMTP komutları gönderen-SMTP tarafından oluşturulur ve alıcı-SMTP'ye gönderilir. SMTP yanıtları, komutlara karşılık olarak alıcı-SMTP'den gönderen-SMTP'ye gönderilir.

İletim kanalı kurulduktan sonra SMTP-gönderen, postanın gönderenini belirten bir MAIL komutu gönderir. SMTP-alıcı posta kabul edebiliyorsa OK yanıtı verir. Ardından SMTP-gönderen, postanın alıcısını belirten bir RCPT komutu gönderir. SMTP-alıcı bu alıcı için posta kabul edebiliyorsa OK yanıtı verir; kabul edemiyorsa bu alıcıyı reddeden bir yanıt verir (ancak tüm posta işlemini reddetmez). SMTP-gönderen ve SMTP-alıcı birden fazla alıcı için anlaşabilir. Alıcılar belirlendikten sonra SMTP-gönderen posta verisini gönderir ve bunu özel bir dizi ile sonlandırır. SMTP-alıcı posta verisini başarıyla işlerse OK yanıtı verir. Diyalog bilinçli olarak adım adım ve sırayla ilerleyecek şekilde tasarlanmıştır.

      +----------+                +----------+
+------+          |                |          |
| User |<-------->|      SMTP      |          |
+------+          |Commands/Replies| Receiver-|
+------+          |<-------------->|    SMTP  |    +------+
| File |<-------->|    Sender-     |          |<-->| File |
|System|          |      SMTP      |          |    |System|
+------+          +----------+     +----------+    +------+

         Sender-SMTP                Receiver-SMTP

                SMTP Kullanım Modeli
                    Şekil 1

SMTP, iki ana makine aynı taşıma hizmetine bağlı olduğunda postanın gönderen kullanıcının ana makinesinden alıcı kullanıcının ana makinesine doğrudan iletilmesi için mekanizmalar sağlar. Kaynak ve hedef ana makineler aynı taşıma hizmetine bağlı değilse, iletim bir veya daha fazla SMTP aktarma sunucusu aracılığıyla gerçekleştirilebilir.

Aktarma yeteneğini sağlamak için SMTP sunucusuna, hedef posta kutusu adıyla birlikte nihai hedef ana makinenin adı da verilmelidir.

MAIL komutunun argümanı reverse-path'tir ve postanın kimden geldiğini belirtir. RCPT komutunun argümanı forward-path'tir ve postanın kime gönderildiğini belirtir. Forward-path bir kaynak yönlendirme yoludur, reverse-path ise bir dönüş yoludur (aktarılan bir mesajda hata oluştuğunda mesajın gönderene geri gönderilmesi için kullanılabilir).

Aynı mesaj birden fazla alıcıya gönderildiğinde SMTP, aynı hedef ana makinedeki tüm alıcılar için verinin yalnızca tek bir kopyasının iletilmesini teşvik eder.

Posta komutları ve yanıtları katı bir sözdizimine sahiptir. Yanıtların ayrıca sayısal bir kodu vardır. Aşağıda gerçek komut ve yanıtların kullanıldığı örnekler yer almaktadır. Komutların ve yanıtların tam listeleri, teknik özelliklerin bulunduğu 4. bölümde yer alır.

Komutlar ve yanıtlar büyük/küçük harfe duyarlı değildir. Yani bir komut veya yanıt kelimesi tamamen büyük harf, tamamen küçük harf veya bunların herhangi bir karışımı olabilir. Ancak bu durum posta kutusu kullanıcı adları için geçerli değildir. Bazı ana makinelerde kullanıcı adı büyük/küçük harfe duyarlıdır ve SMTP uygulamaları kullanıcı adlarının posta kutusu argümanlarında göründüğü biçimdeki harf durumunu korumalıdır. Ana makine adları büyük/küçük harfe duyarlı değildir.

Komutlar ve yanıtlar ASCII karakter kümesinden [1] karakterlerden oluşur. Her 7 bitlik karakter, yüksek anlamlı bit sıfıra ayarlanmış şekilde 8 bitlik bir bayt (veya oktet) içinde sağa hizalanmış olarak iletilir.

Bir komutun veya yanıtın genel biçimi belirtilirken bir argüman (veya özel sembol) meta-dilsel bir değişken (veya sabit) ile gösterilir; örneğin "" veya "". Burada köşeli ayraçlar bunların meta-dilsel değişkenler olduğunu gösterir. Ancak bazı argümanlar köşeli ayraçları gerçek anlamda kullanır. Örneğin gerçek bir reverse-path köşeli ayraçlar içine alınır; yani "<Smith@ISIA>" ifadesi 'in bir örneğidir (köşeli ayraçlar gerçekten komut veya yanıtta iletilir).

3. SMTP PROSEDÜRLERİ

Bu bölüm SMTP'de kullanılan prosedürleri birkaç bölüm halinde sunar. İlk olarak bir posta işlemi olarak tanımlanan temel posta prosedürü gelir. Bunu posta yönlendirme, posta kutusu adlarını doğrulama ve posta listelerini genişletme, posta kutuları yerine veya onlarla birlikte terminallere gönderme ve açma ile kapama alışverişlerinin açıklamaları izler. Bu bölümün sonunda aktarma hakkında yorumlar ve posta alanları hakkında bir not yer alır. Bu bölüm boyunca komut ve yanıt dizilerinin kısmi örnekleri verilmiştir; birkaç tam senaryo Ek F'de sunulmaktadır.

3.1. POSTA

Bir SMTP posta işlemi üç adımdan oluşur. İşlem, gönderen kimliğini veren bir MAIL komutu ile başlatılır. Ardından alıcı bilgilerini veren bir veya daha fazla RCPT komutu gelir. Daha sonra bir DATA komutu posta verisini sağlar. Son olarak posta-verisi-sonu göstergesi işlemi doğrular.

Prosedürdeki ilk adım MAIL komutudur. kaynak posta kutusunu içerir.

MAIL <SP> FROM:<reverse-path> <CRLF>

Bu komut SMTP alıcısına yeni bir posta işleminin başladığını bildirir ve alıcıları veya posta verilerini içerenler de dahil olmak üzere tüm durum tablolarını ve arabelleklerini sıfırlamasını söyler. Ayrıca hataların raporlanabilmesi için kullanılabilecek reverse-path'i verir. Kabul edilirse alıcı-SMTP 250 OK yanıtını döndürür.

yalnızca bir posta kutusundan fazlasını içerebilir. , ana makineler ve kaynak posta kutusundan oluşan ters kaynak yönlendirme listesidir. içindeki ilk ana makine bu komutu gönderen ana makine olmalıdır.

Prosedürdeki ikinci adım RCPT komutudur.

RCPT <SP> TO:<forward-path> <CRLF>

Bu komut bir alıcıyı tanımlayan bir forward-path verir. Kabul edilirse alıcı-SMTP 250 OK yanıtını döndürür ve forward-path'i saklar. Alıcı bilinmiyorsa alıcı-SMTP 550 Failure yanıtını döndürür. Prosedürün bu ikinci adımı istenilen sayıda tekrar edilebilir.

yalnızca bir posta kutusundan fazlasını içerebilir. , ana makineler ve hedef posta kutusundan oluşan bir kaynak yönlendirme listesidir. içindeki ilk ana makine bu komutu alan ana makine olmalıdır.

Prosedürdeki üçüncü adım DATA komutudur.

DATA <CRLF>

Kabul edilirse alıcı-SMTP 354 Intermediate yanıtını döndürür ve bundan sonra gelen tüm satırları mesaj metni olarak kabul eder. Metnin sonu alınıp saklandığında SMTP alıcısı 250 OK yanıtını gönderir.

Posta verisi iletim kanalı üzerinden gönderildiği için, komut ve yanıt diyaloğunun yeniden başlatılabilmesi amacıyla posta verisinin sonu belirtilmelidir. SMTP, posta verisinin sonunu yalnızca bir nokta içeren bir satır göndererek belirtir. Bunun kullanıcı metniyle çakışmasını önlemek için bir şeffaflık prosedürü kullanılır (bkz. Bölüm 4.5.2).

Posta verisinin Date, Subject, To, Cc, From gibi not başlığı öğelerini de içerdiğine dikkat edin [2].

Posta-verisi-sonu göstergesi aynı zamanda posta işlemini doğrular ve alıcı-SMTP'ye saklanan alıcıları ve posta verisini işlemesini söyler. Kabul edilirse alıcı-SMTP 250 OK yanıtını döndürür. DATA komutu yalnızca posta işlemi eksikse (örneğin alıcı yoksa) veya kaynaklar mevcut değilse başarısız olmalıdır.

Yukarıdaki prosedür bir SMTP posta işleminin örneğidir. Bu komutlar yalnızca yukarıda açıklanan sırayla kullanılmalıdır. Örnek 1, bu komutların bir posta işleminde kullanımını gösterir.


SMTP Prosedürüne Örnek

Bu SMTP örneği, Alpha ana makinesindeki Smith tarafından Beta ana makinesindeki Jones, Green ve Brown'a gönderilen postayı göstermektedir. Burada Alpha ana makinesinin Beta ana makinesiyle doğrudan bağlantı kurduğunu varsayıyoruz.

S: MAIL FROM:<Smith@Alpha>
R: 250 OK

S: RCPT TO:<Jones@Beta>
R: 250 OK

S: RCPT TO:<Green@Beta>
R: 550 No such user here

S: RCPT TO:<Brown@Beta>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: <CRLF>.<CRLF>
R: 250 OK

Posta artık Jones ve Brown için kabul edilmiştir. Green'in Beta ana makinesinde bir posta kutusu yoktur.

Örnek 1

3.2. YÖNLENDİRME

Bazı durumlarda <forward-path> içindeki hedef bilgisi yanlış olabilir, ancak alıcı-SMTP doğru hedefi biliyor olabilir. Bu tür durumlarda gönderenin doğru hedefle iletişim kurabilmesini sağlamak için aşağıdaki yanıtlardan biri kullanılmalıdır.

251 User not local; will forward to <forward-path>

Bu yanıt, alıcı-SMTP'nin kullanıcının posta kutusunun başka bir ana makinede olduğunu bildiğini ve gelecekte kullanılacak doğru forward-path'i gösterdiğini belirtir. Ana makine, kullanıcı veya her ikisi farklı olabilir. Alıcı mesajın teslim edilmesinin sorumluluğunu üstlenir.

551 User not local; please try <forward-path>

Bu yanıt, alıcı-SMTP'nin kullanıcının posta kutusunun başka bir ana makinede olduğunu bildiğini ve kullanılacak doğru forward-path'i gösterdiğini belirtir. Ana makine, kullanıcı veya her ikisi farklı olabilir. Alıcı bu kullanıcı için posta kabul etmeyi reddeder ve gönderen sağlanan bilgiye göre postayı yeniden yönlendirmeli veya başlangıçtaki kullanıcıya bir hata yanıtı döndürmelidir.

Örnek 2, bu yanıtların kullanımını göstermektedir.


Yönlendirme Örneği

Ya

S: RCPT TO:<Postel@ISI>
R: 251 User not local; will forward to <Postel@ISIF>

Veya

S: RCPT TO:<Paul@ISIB>
R: 551 User not local; please try <Mockapetris@ISIF>

Örnek 2


3.3. DOĞRULAMA VE GENİŞLETME

SMTP ek özellikler sağlar; bir kullanıcı adını doğrulamak veya bir posta listesini genişletmek için komutlar sunar. Bu işlem VRFY ve EXPN komutlarıyla yapılır ve bu komutların argümanları karakter dizileridir.

VRFY komutu için karakter dizisi bir kullanıcı adıdır ve yanıt kullanıcının tam adını içerebilir ve kullanıcının posta kutusunu içermelidir.

EXPN komutu için karakter dizisi bir posta listesini tanımlar ve çok satırlı yanıt kullanıcıların tam adlarını içerebilir ve posta listesindeki posta kutularını vermelidir.

Bir kullanıcı adını doğrulama durumu, Örnek 3'te gösterildiği gibi basittir.


Kullanıcı Adı Doğrulama Örneği

Ya

S: VRFY Postel
R: 250 Jon Postel <Postel@ISIF>

Veya

S: VRFY Jones
R: 550 String does not match anything.

Örnek 3


Bir posta kutusu listesini genişletme durumu, Örnek 4'te gösterildiği gibi çok satırlı bir yanıt gerektirir.


Posta Listesini Genişletme Örneği

Ya

S: EXPN Example-People
R: 250-Jon Postel <Postel@ISIF>
R: 250-Fred Fonebone <Fonebone@ISIQ>
R: 250-Sam Q. Smith <SQSmith@ISIQ>
R: 250-Quincy Smith <@ISIF,Q-Smith@ISI-VAXA>
R: 250-<joe@foo-unix>
R: 250 <xyz@bar-unix>

Veya

S: EXPN Executive-Washroom-List
R: 550 Access Denied to You.

Örnek 4


VRFY ve EXPN komutlarının karakter dizisi argümanları, kullanıcı adı ve posta kutusu listesi kavramlarının uygulanmasındaki çeşitlilik nedeniyle daha fazla kısıtlanamaz. Bazı sistemlerde EXPN komutunun argümanının bir posta listesi içeren bir dosyanın dosya adı olması uygun olabilir, ancak internet üzerindeki dosya adlandırma kuralları da çeşitlilik göstermektedir.

VRFY ve EXPN komutları asgari uygulamaya (Bölüm 4.5.1) dahil değildir ve uygulandıklarında aktarıcılar (relay) arasında çalışmaları zorunlu değildir.

3.4. GÖNDERME VE POSTALAMA

SMTP'nin temel amacı iletileri kullanıcıların posta kutularına ulaştırmaktır. Bazı ana bilgisayarlar tarafından sağlanan çok benzer bir hizmet ise iletileri kullanıcıların terminallerine ulaştırmaktır (kullanıcı ana bilgisayarda aktif olduğu sürece). İletinin kullanıcının posta kutusuna ulaştırılmasına "postalama", kullanıcının terminaline ulaştırılmasına ise "gönderme" denir.

Birçok ana bilgisayarda gönderme uygulaması, postalama uygulamasıyla neredeyse aynı olduğundan bu iki işlev SMTP içinde birleştirilmiştir. Ancak gönderme komutları gerekli asgari uygulamaya (Bölüm 4.5.1) dahil değildir. Kullanıcıların terminallerine iletilerin yazılmasını kontrol edebilme yeteneğine sahip olmaları gerekir. Çoğu ana bilgisayar kullanıcıların bu tür iletileri kabul etmelerine veya reddetmelerine izin verir.

Gönderme seçeneklerini desteklemek için aşağıdaki üç komut tanımlanmıştır. Bunlar posta işlemi sırasında MAIL komutu yerine kullanılır ve alıcı-SMTP'yi bu işlemin özel anlamı hakkında bilgilendirir:

SEND FROM:

SEND komutu, posta verisinin kullanıcının terminaline ulaştırılmasını gerektirir. Eğer kullanıcı ana bilgisayarda aktif değilse (veya terminal iletilerini kabul etmiyorsa), RCPT komutuna 450 yanıtı döndürülebilir. İleti terminale ulaştırılırsa posta işlemi başarılı sayılır.

SOML FROM:

Send Or Mail komutu, kullanıcı ana bilgisayarda aktifse (ve terminal iletilerini kabul ediyorsa) posta verisinin kullanıcının terminaline ulaştırılmasını gerektirir. Eğer kullanıcı aktif değilse (veya terminal iletilerini kabul etmiyorsa), posta verisi kullanıcının posta kutusuna yazılır. İleti terminale veya posta kutusuna ulaştırılırsa posta işlemi başarılı sayılır.

SAML FROM:

Send And Mail komutu, kullanıcı ana bilgisayarda aktifse (ve terminal iletilerini kabul ediyorsa) posta verisinin kullanıcının terminaline ulaştırılmasını gerektirir. Her durumda posta verisi kullanıcının posta kutusuna da yazılır. İleti posta kutusuna ulaştırılırsa posta işlemi başarılı sayılır.

MAIL komutları için kullanılan yanıt kodlarının aynısı bu komutlar için de kullanılır.

3.5. BAĞLANTI AÇMA VE KAPATMA

İletim kanalı açıldığı anda, ana bilgisayarların iletişim kurduklarını düşündükleri ana bilgisayarlarla gerçekten iletişim kurduklarından emin olmak için bir alışveriş gerçekleştirilir.

İletim kanalını açmak ve kapatmak için aşağıdaki iki komut kullanılır:

HELO

QUIT

HELO komutunda komutu gönderen ana bilgisayar kendini tanımlar; komut "Merhaba, ben " anlamında yorumlanabilir.


Bağlantı Açma Örneği

R: 220 BBN-UNIX Simple Mail Transfer Service Ready
S: HELO USC-ISIF
R: 250 BBN-UNIX

Örnek 5


Bağlantı Kapatma Örneği

S: QUIT
R: 221 BBN-UNIX Service closing transmission channel

Örnek 6


3.6. AKTARMA (RELAY)

Forward-path, @ONE,@TWO,JOE@THREE biçiminde bir kaynak yönlendirmesi olabilir; burada ONE, TWO ve THREE ana bilgisayarlardır. Bu biçim, adres ile yol arasındaki farkı vurgulamak için kullanılır. Posta kutusu mutlak bir adrestir ve yol ise oraya nasıl ulaşılacağı hakkında bilgidir. Bu iki kavram karıştırılmamalıdır.

İleti bir server-SMTP'den diğerine aktarılırken forward-path içindeki öğeler reverse-path içine taşınır. Reverse-path ters bir kaynak yönlendirmesidir (yani iletinin mevcut konumundan iletinin göndericisine doğru bir kaynak yönlendirmesi). Bir server-SMTP kendi tanımlayıcısını forward-path'ten silip reverse-path içine eklediğinde, bunu postayı aldığı ortamın değil, gönderdiği ortamda bilindiği adla yapmak zorundadır; çünkü server-SMTP farklı ortamlarda farklı adlarla biliniyor olabilir.

Kaynak yönlendirme kullanıldığında receiver-SMTP başka bir server-SMTP'ye aktarılmak üzere postayı alır. Receiver-SMTP posta aktarımı görevini, yerel bir kullanıcı için postayı kabul eder veya reddederken kullandığı yöntemle kabul edebilir veya reddedebilir. Receiver-SMTP komut argümanlarını, kendi tanımlayıcısını forward-path'ten reverse-path'in başına taşıyarak dönüştürür. Receiver-SMTP daha sonra sender-SMTP olur, forward-path içindeki bir sonraki SMTP'ye bir iletim kanalı kurar ve postayı ona gönderir.

Reverse-path içindeki ilk ana bilgisayar SMTP komutlarını gönderen ana bilgisayar olmalıdır ve forward-path içindeki ilk ana bilgisayar SMTP komutlarını alan ana bilgisayar olmalıdır.

Forward-path ve reverse-path'in SMTP komutlarında ve yanıtlarında göründüğüne, ancak iletinin içinde mutlaka yer almadığına dikkat edilmelidir. Yani bu yolların ve özellikle bu söz diziminin iletinin başlığındaki "To:", "From:", "CC:" vb. alanlarda görünmesi gerekmez.

Bir server-SMTP posta aktarımı görevini kabul etmişse ve daha sonra forward-path'in hatalı olduğunu veya postanın herhangi bir nedenle ulaştırılamayacağını fark ederse, "teslim edilemeyen posta" bildirim iletisi oluşturmalı ve bunu teslim edilemeyen postanın göndericisine göndermelidir (reverse-path tarafından belirtildiği gibi).

Bu bildirim iletisi bu ana bilgisayardaki server-SMTP tarafından gönderilmiş olmalıdır. Elbette server-SMTP'ler bildirim iletileriyle ilgili sorunlar hakkında bildirim iletileri göndermemelidir. Hata raporlamasında döngüleri önlemenin bir yolu, bir bildirim iletisinin MAIL komutunda boş bir reverse-path belirtmektir. Böyle bir ileti aktarıldığında reverse-path'in boş bırakılması kabul edilebilir. Boş reverse-path içeren bir MAIL komutu şu şekilde görünür:

MAIL FROM:<>

Teslim edilemeyen posta bildirim iletisi örnek 7'de gösterilmiştir. Bu bildirim, HOSTW üzerindeki JOE tarafından başlatılan ve HOSTX üzerinden HOSTY'ye gönderilip HOSTZ'ye aktarılması talimatı verilen bir iletiye yanıt olarak gönderilmiştir. Örnekte gördüğümüz şey, bildirim iletisinin geri dönüşünün ilk adımı olan HOSTY ile HOSTX arasındaki işlemdir.


Teslim Edilemeyen Posta Bildirim İletisi Örneği

S: MAIL FROM:<>
R: 250 ok
S: RCPT TO:<@HOSTX,JOE@HOSTW>
R: 250 ok
S: DATA
R: 354 send the mail data, end with .
S: Date: 23 Oct 81
S: Sender: SMTP@HOSTY
S: Subject: Mail System Problem
S:
S: Sorry JOE, your message to SAM@HOSTZ lost.
S: HOSTZ said this:
S: "550 No Such User"
S: .
R: 250 ok

Örnek 7


3.7. ALAN ADLARI (DOMAINS)

Çok uzak olmayan bir gelecekte posta kutusu biçimini bir bölge veya ad alanı tanımlayıcısını içerecek şekilde genişletmek gerekebilir. Bu konu hakkında şu anda oldukça fazla tartışma vardır ve adlandırma alanlarını dikkate alacak şekilde SMTP'nin gelecekte gözden geçirilmesi muhtemeldir.

Bu belgede verilen örneklerde posta alanları gösterilmemiştir.

4. SMTP TEKNİK ÖZELLİKLERİ

4.1. SMTP KOMUTLARI

4.1.1. KOMUT ANLAMLARI

SMTP komutları kullanıcının talep ettiği posta aktarımını veya posta sistemi işlevini tanımlar. SMTP komutları <CRLF> ile sonlandırılan karakter dizileridir. Komut kodlarının kendisi alfabetik karakterlerden oluşur ve ardından parametre geliyorsa <SP>, aksi halde <CRLF> ile sonlandırılır. Posta kutularının söz dizimi alıcı sitenin kurallarına uymalıdır.

SMTP komutları aşağıda açıklanmaktadır. SMTP yanıtları Bölüm 4.2'de açıklanmaktadır.

Bir posta işlemi, farklı komutlara argüman olarak iletilen birkaç veri nesnesi içerir. Reverse-path MAIL komutunun argümanıdır, forward-path RCPT komutunun argümanıdır ve posta verisi DATA komutunun argümanıdır. Bu argümanlar veya veri nesneleri iletilmeli ve posta verisinin sonunu belirten gösterge tarafından iletilen onay alınana kadar bekletilmelidir; bu gösterge işlemi sonlandırır. Bunun modeli, farklı veri nesnesi türlerini tutmak için ayrı tamponlar sağlanmasıdır; yani bir reverse-path tamponu, bir forward-path tamponu ve bir posta verisi tamponu vardır. Belirli komutlar bilgilerin belirli bir tampona eklenmesine neden olur veya bir ya da daha fazla tamponun temizlenmesine neden olur.

HELLO (HELO)

Bu komut sender-SMTP'yi receiver-SMTP'ye tanıtmak için kullanılır. Argüman alanı sender-SMTP'nin ana bilgisayar adını içerir.

Receiver-SMTP bağlantı karşılama yanıtında ve bu komuta verdiği yanıtta kendini sender-SMTP'ye tanımlar.

MAIL (MAIL)

Bu komut posta verisinin bir veya daha fazla posta kutusuna ulaştırıldığı bir posta işlemini başlatmak için kullanılır. Argüman alanı bir reverse-path içerir.

Reverse-path isteğe bağlı bir ana bilgisayar listesi ve gönderici posta kutusundan oluşur. Ana bilgisayar listesi mevcutsa bu bir "ters" kaynak yönlendirmesidir ve postanın listedeki her ana bilgisayar üzerinden aktarıldığını gösterir (listedeki ilk ana bilgisayar en son aktarımdır). Bu liste, teslim edilemeyen bildirimleri göndericiye geri göndermek için bir kaynak yönlendirmesi olarak kullanılır. Her aktarıcı ana bilgisayar kendisini listenin başına eklediğinde, postayı aldığı IPCE yerine postayı aktardığı IPCE ortamında bilinen adını kullanmalıdır (eğer bunlar farklıysa). Bazı hata raporlama iletilerinde (örneğin teslim edilemeyen posta bildirimleri) reverse-path boş olabilir (bkz. Örnek 7).

Bu komut reverse-path tamponunu, forward-path tamponunu ve posta verisi tamponunu temizler; ardından bu komuttaki reverse-path bilgisini reverse-path tamponuna yerleştirir.

RECIPIENT (RCPT)

Bu komut posta verisinin bireysel bir alıcısını tanımlamak için kullanılır; birden fazla alıcı bu komutun birden fazla kullanılmasıyla belirtilir.

Forward-path isteğe bağlı bir ana bilgisayar listesi ve zorunlu bir hedef posta kutusundan oluşur. Ana bilgisayar listesi mevcutsa bu bir kaynak yönlendirmesidir ve postanın listedeki bir sonraki ana bilgisayara aktarılması gerektiğini gösterir. Receiver-SMTP aktarma işlevini uygulamıyorsa bilinmeyen yerel kullanıcı için verdiği yanıtın aynısını kullanabilir (550).

Posta aktarıldığında, aktarıcı ana bilgisayar kendisini forward-path'in başından kaldırmalı ve reverse-path'in başına eklemelidir. Posta nihai hedefe ulaştığında (forward-path yalnızca bir hedef posta kutusu içerdiğinde), receiver-SMTP onu ana bilgisayarının posta kurallarına uygun olarak hedef posta kutusuna yerleştirir.

Örneğin, A adlı aktarıcı ana bilgisayarda aşağıdaki argümanlarla alınan posta

FROM:<X@Y>
TO:<@A,@B,C@D>

B ana bilgisayarına şu argümanlarla aktarılır

FROM:<@A,X@Y>
TO:<@B,C@D>.

Bu komut, forward-path argümanının forward-path tamponuna eklenmesine neden olur.

DATA (DATA)

Alıcı, komutu izleyen satırları göndericiden gelen posta verisi olarak değerlendirir. Bu komut, bu komuttan gelen posta verisinin posta verisi tamponuna eklenmesine neden olur. Posta verisi 128 ASCII karakter kodunun herhangi birini içerebilir.

Posta verisi yalnızca bir nokta içeren bir satırla sonlandırılır; yani karakter dizisi "." (Şeffaflık hakkında Bölüm 4.5.2'ye bakınız). Bu posta verisinin sonu göstergesidir.

Posta verisinin sonu göstergesi, alıcının artık saklanan posta işlemi bilgisini işlemesi gerektiğini belirtir. Bu işlem reverse-path tamponu, forward-path tamponu ve posta verisi tamponundaki bilgileri kullanır ve bu komutun tamamlanmasıyla bu tamponlar temizlenir. İşlem başarılıysa alıcı bir OK yanıtı göndermelidir. İşlem tamamen başarısız olursa alıcı bir hata yanıtı göndermelidir.

Receiver-SMTP bir iletiyi ister aktarım için ister nihai teslim için kabul ettiğinde posta verisinin başına bir zaman damgası satırı ekler. Zaman damgası satırı iletinin gönderildiği ana bilgisayarın kimliğini, iletinin alındığı ana bilgisayarın kimliğini (ve bu zaman damgasını ekleyen ana bilgisayarı) ve iletinin alındığı tarih ve saati gösterir. Aktarılan iletilerde birden fazla zaman damgası satırı bulunur.

Receiver-SMTP bir iletinin "nihai teslimini" gerçekleştirdiğinde posta verisinin başına bir dönüş yolu satırı ekler. Dönüş yolu satırı MAIL komutundaki bilgisini korur. Burada nihai teslim, iletinin SMTP dünyasından çıktığı anlamına gelir. Normalde bu, iletinin hedef kullanıcıya ulaştırıldığı anlamına gelir; ancak bazı durumlarda başka bir posta sistemi tarafından daha fazla işlenip iletilebilir.

Önceki iki paragraf, nihai posta verisinin bir dönüş yolu satırı ile başlayacağını ve bunu bir veya daha fazla zaman damgası satırının izleyeceğini ifade eder. Bu satırların ardından posta verisi başlığı ve gövdesi gelir [2]. Örneğin:

Return-Path: <@GHI,@DEF,@ABC,JOE@ABC>
Mail-From: GHI received by JKL at 27-Oct-81 15:27:39-PST
Mail-From: DEF received by GHI at 27-Oct-81 15:15:13-PST
Mail-From: ABC received by DEF at 27-Oct-81 15:01:59-PST
Date: 27-Oct-81 15:01:01-PST
From: JOE@ABC
Subject: Improved Mailing System Installed
To: SAM@JKL

This is to inform you that ...

Posta verisinin sonu göstergesini izleyen işlem kısmen başarılı olduğunda gereken yanıt ve sonraki eylem hakkında özel bir açıklama yapılmalıdır. Bu durum, birkaç alıcı ve posta verisi kabul edildikten sonra receiver-SMTP'nin posta verisinin bazı alıcılara başarıyla ulaştırılabileceğini ancak diğerlerine ulaştırılamayacağını fark etmesi durumunda ortaya çıkabilir (örneğin posta kutusu alanı tahsisi sorunları nedeniyle). Böyle bir durumda DATA komutuna verilen yanıt bir OK yanıtı olmalıdır. Ancak receiver-SMTP, iletinin göndericisine bir "teslim edilemeyen posta" bildirim iletisi hazırlayıp göndermelidir. Ya iletinin ulaşmadığı tüm alıcıları listeleyen tek bir bildirim ya da başarısız olan her alıcı için ayrı bildirim iletileri gönderilmelidir (bkz. Örnek 7). Tüm teslim edilemeyen posta bildirim iletileri MAIL komutu kullanılarak gönderilir (SEND, SOML veya SAML komutlarının işlenmesi sonucunda ortaya çıksalar bile).

SEND (SEND)

Bu komut posta verisinin bir veya daha fazla terminale ulaştırıldığı bir posta işlemini başlatmak için kullanılır. Argüman alanı bir reverse-path içerir. İleti terminale ulaştırılırsa bu komut başarılı sayılır.

Reverse-path isteğe bağlı bir ana bilgisayar listesi ve gönderici posta kutusundan oluşur. Ana bilgisayar listesi mevcutsa bu bir "ters" kaynak yönlendirmesidir ve postanın listedeki her ana bilgisayar üzerinden aktarıldığını gösterir (listedeki ilk ana bilgisayar en son aktarımdır). Bu liste, teslim edilemeyen bildirimleri göndericiye geri göndermek için bir kaynak yönlendirmesi olarak kullanılır.

Her aktarıcı ana bilgisayar kendisini listenin başına eklediğinde, postayı aldığı IPCE yerine postayı aktardığı IPCE ortamında bilinen adını kullanmalıdır (eğer bunlar farklıysa).

Bu komut reverse-path tamponunu, forward-path tamponunu ve posta verisi tamponunu temizler; ardından bu komuttaki reverse-path bilgisini reverse-path tamponuna yerleştirir.

SEND OR MAIL (SOML)

Bu komut, posta verisinin bir veya daha fazla terminale ya da posta kutusuna teslim edildiği bir posta işlemini başlatmak için kullanılır. Her alıcı için posta verisi, alıcı ana makinede etkinse (ve terminal mesajlarını kabul ediyorsa) alıcının terminaline, aksi takdirde alıcının posta kutusuna teslim edilir. Argüman alanı bir reverse-path içerir. Mesaj terminale veya posta kutusuna teslim edilirse bu komut başarılı kabul edilir.

Reverse-path, isteğe bağlı bir ana makine listesi ve gönderen posta kutusundan oluşur. Ana makine listesi mevcut olduğunda, bu bir "ters" kaynak yönlendirmesidir ve postanın listedeki her ana makine üzerinden aktarıldığını gösterir (listedeki ilk ana makine en son aktarımdır). Bu liste, teslim edilememe bildirimlerini gönderen kişiye geri iletmek için kaynak yönlendirme olarak kullanılır. Her aktarma yapan ana makine kendisini listenin başına eklerken, postayı aldığı IPCE yerine postayı ilettiği IPCE tarafından bilinen adını kullanmak zorundadır (eğer bunlar farklıysa).

Bu komut reverse-path tamponunu, forward-path tamponunu ve posta veri tamponunu temizler; ve bu komuttan gelen reverse-path bilgisini reverse-path tamponuna yerleştirir.

SEND AND MAIL (SAML)

Bu komut, posta verisinin bir veya daha fazla terminale ve posta kutusuna teslim edildiği bir posta işlemini başlatmak için kullanılır. Her alıcı için posta verisi, alıcı ana makinede etkinse (ve terminal mesajlarını kabul ediyorsa) alıcının terminaline teslim edilir ve tüm alıcılar için ayrıca alıcının posta kutusuna da teslim edilir. Argüman alanı bir reverse-path içerir. Mesaj posta kutusuna teslim edilirse bu komut başarılı kabul edilir.

Reverse-path, isteğe bağlı bir ana makine listesi ve gönderen posta kutusundan oluşur. Ana makine listesi mevcut olduğunda, bu bir "ters" kaynak yönlendirmesidir ve postanın listedeki her ana makine üzerinden aktarıldığını gösterir (listedeki ilk ana makine en son aktarımdır). Bu liste, teslim edilememe bildirimlerini gönderen kişiye geri iletmek için kaynak yönlendirme olarak kullanılır. Her aktarma yapan ana makine kendisini listenin başına eklerken, postayı aldığı IPCE yerine postayı ilettiği IPCE tarafından bilinen adını kullanmak zorundadır (eğer bunlar farklıysa).

Bu komut reverse-path tamponunu, forward-path tamponunu ve posta veri tamponunu temizler; ve bu komuttan gelen reverse-path bilgisini reverse-path tamponuna yerleştirir.

RESET (RSET)

Bu komut, mevcut posta işleminin iptal edilmesi gerektiğini belirtir. Saklanan tüm gönderici, alıcılar ve posta verisi atılmalı ve tüm tamponlar ile durum tabloları temizlenmelidir. Alıcı bir OK yanıtı göndermek zorundadır.

VERIFY (VRFY)

Bu komut, alıcıdan argümanın bir kullanıcıyı tanımlayıp tanımlamadığını doğrulamasını ister. Eğer bir kullanıcı adıysa, kullanıcının tam adı (biliniyorsa) ve tam olarak belirtilmiş posta kutusu döndürülür.

Bu komut reverse-path tamponu, forward-path tamponu veya posta veri tamponu üzerinde herhangi bir etkiye sahip değildir.

EXPAND (EXPN)

Bu komut, alıcıdan argümanın bir posta listesi olup olmadığını doğrulamasını ve eğer öyleyse bu listenin üyelerini döndürmesini ister. Kullanıcıların tam adları (biliniyorsa) ve tam olarak belirtilmiş posta kutuları çok satırlı bir yanıt içinde döndürülür.

Bu komut reverse-path tamponu, forward-path tamponu veya posta veri tamponu üzerinde herhangi bir etkiye sahip değildir.

HELP (HELP)

Bu komut, alıcının HELP komutunun göndericisine yardımcı bilgiler göndermesine neden olur. Komut bir argüman alabilir (örneğin herhangi bir komut adı) ve yanıt olarak daha özel bilgiler döndürebilir.

Bu komut reverse-path tamponu, forward-path tamponu veya posta veri tamponu üzerinde herhangi bir etkiye sahip değildir.

NOOP (NOOP)

Bu komut herhangi bir parametreyi veya daha önce girilmiş komutları etkilemez. Alıcının bir OK yanıtı göndermesi dışında herhangi bir işlem belirtmez.

Bu komut reverse-path tamponu, forward-path tamponu veya posta veri tamponu üzerinde herhangi bir etkiye sahip değildir.

QUIT (QUIT)

Bu komut, alıcının bir OK yanıtı göndermesi ve ardından iletim kanalını kapatması gerektiğini belirtir.

Alıcı, bir QUIT komutunu alıp yanıtlamadan iletim kanalını kapatmamalıdır (bir hata oluşmuş olsa bile). Gönderici de bir QUIT komutu gönderip yanıtını almadan iletim kanalını kapatmamalıdır (önceki bir komuta hata yanıtı verilmiş olsa bile). Bağlantı erken kapatılırsa, alıcı bir RSET komutu alınmış gibi davranmalıdır (bekleyen herhangi bir işlemi iptal eder, ancak daha önce tamamlanmış işlemleri geri almaz); gönderici ise devam eden komut veya işlemin geçici bir hata (4xx) aldığı varsayımıyla davranmalıdır.

Bu komutların kullanılma sırası konusunda bazı kısıtlamalar vardır.

4.1.2. COMMAND SYNTAX

Komutlar, bir komut kodu ve ardından gelen bir argüman alanından oluşur. Komut kodları dört alfabetik karakterden oluşur. Büyük ve küçük harfler aynı şekilde değerlendirilir. Bu nedenle aşağıdakilerin tümü mail komutunu temsil edebilir:

MAIL Mail mail MaIl mAIl

Bu durum, forward-path için "TO" veya "to" gibi parametre değerlerini temsil eden semboller için de geçerlidir. Komut kodları ve argüman alanları bir veya daha fazla boşlukla ayrılır. Ancak reverse-path ve forward-path argümanları içinde büyük/küçük harf önemlidir. Özellikle bazı ana makinelerde "smith" kullanıcısı "Smith" kullanıcısından farklıdır.

Argüman alanı, karakter dizisi ile biten değişken uzunlukta bir karakter dizisinden oluşur. Alıcı bu diziyi alana kadar herhangi bir işlem yapmamalıdır.

Köşeli parantezler isteğe bağlı bir argüman alanını gösterir. Eğer seçenek kullanılmazsa uygun varsayılan değer kabul edilir.

Aşağıda SMTP komutları verilmiştir:

HELO

MAIL FROM:

RCPT TO:

DATA

RSET

SEND FROM:

SOML FROM:

SAML FROM:

VRFY

EXPN

HELP [ ]

NOOP

QUIT

Yukarıdaki argüman alanlarının söz dizimi (uygun olduğu yerlerde BNF gösterimi kullanılarak) aşağıda verilmiştir. "..." gösterimi bir alanın bir veya daha fazla kez tekrarlanabileceğini ifade eder.

::=

::=

::= "<" ["@" "," ...] ">"

::= | "#" | "[" "]"

::= "@"

::=

::= |

::= | '\' | '\'

::= "." "." "."

::= |

::= 0 ile 255 aralığında onluk tamsayıyı temsil eden üç basamak

::= A'dan Z'ye büyük harfler ve a'dan z'ye küçük harfler olmak üzere 52 alfabetik karakterden herhangi biri

::= dışındaki 128 ASCII karakterinden herhangi biri

::= 0'dan 9'a kadar on rakamdan herhangi biri

::= içindeki karakterlerden herhangi biri

::= '<', '>', '(', ')', '\', ',', ';', ':', '@', '"' ve kontrol karakterleri (ASCII kodları sekizlik 0'dan 37'ye kadar ve 177 sekizlik)

Ters eğik çizgi '\' bir kaçış karakteridir ve bir sonraki karakterin normal anlamı yerine doğrudan kullanılacağını belirtir. Örneğin "Joe\,Smith" ifadesi, alanın dördüncü karakterinin virgül olduğu dokuz karakterlik tek bir kullanıcı alanını göstermek için kullanılabilir.

Ana makineler genellikle her ana makinede adreslere çevrilen adlarla bilinir. Bazen bir ana makine çeviri işlevi tarafından bilinmez ve iletişim engellenir. Bu engeli aşmak için ana makine "adları" için iki sayısal biçime de izin verilir. Bunlardan biri başında "#" bulunan onluk bir tamsayıdır ve bu sayının ana makinenin adresi olduğunu belirtir. Diğer biçim ise noktalarla ayrılmış dört küçük onluk tamsayının köşeli parantez içinde yazılmasıdır; örneğin "[123.255.37.2]". Bu gösterim dört adet 8 bitlik alan içeren 32 bitlik bir ARPA Internet Address anlamına gelir.

Zaman damgası satırı ve dönüş yolu satırı resmi olarak aşağıdaki şekilde tanımlanır:

::= "Return-Path:"

::= "Mail-From:"

::= []

::= "host"

::=

::= "received by"

::= "TCP" | "NCP" | "NITS" | "X25" | "INTERNET" | "ARPANET"

Not: INTERNET = TCP, ARPANET = NCP ve eğer mevcut değilse INTERNET varsayılır.

::= "at"

::=

"-" "-"

::= 1 ile 31 aralığında ayın bir veya iki basamaklı onluk gün değeri.

::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" | "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"

::= 01 ile 99 aralığında yüzyılın iki basamaklı onluk yıl değeri.

::= 00 ile 24 aralığında günün iki basamaklı onluk saat değeri.

::= 00 ile 59 aralığında saatin iki basamaklı onluk dakika değeri.

::= 00 ile 59 aralığında dakikanın iki basamaklı onluk saniye değeri.

::= bir zaman dilimi göstergesi (bkz. [2]) veya Evrensel Zaman için "UT" (varsayılan).

Return Path Örneği:

Return-Path: <@CHARLIE,@BAKER,JOE@ABLE>

Mail From Örneği:

Mail-From: ABC received by XYZ at 22-OCT-81 09:23:59-PDT

4.2. SMTP REPLIES

SMTP komutlarına verilen yanıtlar, posta aktarımı sürecinde istekler ile işlemlerin senkronizasyonunu sağlamak ve gönderici-SMTP'nin alıcı-SMTP'nin durumunu her zaman bilmesini garanti etmek amacıyla tasarlanmıştır. Her komut tam olarak bir yanıt üretmek zorundadır.

Komut-yanıt dizisinin ayrıntıları Bölüm 5.3'teki Sıralama ve Bölüm 5.4'teki Durum Diyagramları kısmında açıkça verilmiştir.

Bir SMTP yanıtı üç basamaklı bir sayıdan (üç alfasayısal karakter olarak iletilir) ve ardından gelen bir metinden oluşur. Sayı, otomatik sistemlerin bir sonraki hangi duruma geçeceğini belirlemesi için tasarlanmıştır; metin ise insan kullanıcı içindir. Üç basamağın yeterli kodlanmış bilgiyi içermesi amaçlanmıştır; böylece gönderici-SMTP metni incelemek zorunda kalmaz ve uygun olduğunda ya metni atabilir ya da kullanıcıya iletebilir. Özellikle metin alıcıya bağlı olabilir, bu nedenle her yanıt kodu için farklı metinler bulunabilir. Yanıt kodlarının kuramsal açıklaması Ek E'de verilmiştir. Resmi olarak bir yanıt şu diziden oluşur: üç basamaklı kod, , tek satırlık metin ve ya da çok satırlı bir yanıt (Ek E'de tanımlandığı gibi). Normal koşullarda yalnızca EXPN ve HELP komutlarının çok satırlı yanıt üretmesi beklenir, ancak çok satırlı yanıtlar herhangi bir komut için de kullanılabilir.

4.2.1. İŞLEV GRUPLARINA GÖRE YANIT KODLARI

500 Syntax error, command unrecognized
[Bu durum komut satırının çok uzun olması gibi hataları da içerebilir]

501 Syntax error in parameters or arguments

502 Command not implemented

503 Bad sequence of commands

504 Command parameter not implemented

211 System status, or system help reply

214 Help message
[Alıcının nasıl kullanılacağı veya belirli bir standart dışı komutun anlamı hakkında bilgi; bu yanıt yalnızca insan kullanıcı için yararlıdır]

220 Service ready

221 Service closing transmission channel

421 Service not available, closing transmission channel
[Hizmet kapanmak zorunda olduğunu biliyorsa bu yanıt herhangi bir komuta verilebilir]

250 Requested mail action okay, completed

251 User not local; will forward to

450 Requested mail action not taken: mailbox unavailable
[Örn., posta kutusu meşgul]

550 Requested action not taken: mailbox unavailable
[Örn., posta kutusu bulunamadı, erişim yok]

451 Requested action aborted: error in processing

551 User not local; please try

452 Requested action not taken: insufficient system storage

552 Requested mail action aborted: exceeded storage allocation

553 Requested action not taken: mailbox name not allowed
[Örn., posta kutusu söz dizimi hatalı]

354 Start mail input; end with .

554 Transaction failed

4.2.2. YANIT KODLARININ SAYISAL SIRALI LİSTESİ

211 System status, or system help reply

214 Help message
[Alıcının nasıl kullanılacağı veya belirli bir standart dışı komutun anlamı hakkında bilgi; bu yanıt yalnızca insan kullanıcı için yararlıdır]

220 Service ready

221 Service closing transmission channel

250 Requested mail action okay, completed

251 User not local; will forward to

354 Start mail input; end with .

421 Service not available, closing transmission channel
[Hizmet kapanmak zorunda olduğunu biliyorsa bu yanıt herhangi bir komuta verilebilir]

450 Requested mail action not taken: mailbox unavailable
[Örn., posta kutusu meşgul]

451 Requested action aborted: local error in processing

452 Requested action not taken: insufficient system storage

500 Syntax error, command unrecognized
[Bu durum komut satırının çok uzun olması gibi hataları da içerebilir]

501 Syntax error in parameters or arguments

502 Command not implemented

503 Bad sequence of commands

504 Command parameter not implemented

550 Requested action not taken: mailbox unavailable
[Örn., posta kutusu bulunamadı, erişim yok]

551 User not local; please try

552 Requested mail action aborted: exceeded storage allocation

553 Requested action not taken: mailbox name not allowed
[Örn., posta kutusu söz dizimi hatalı]

554 Transaction failed

4.3. KOMUTLARIN VE YANITLARIN SIRALANMASI

Gönderici ile alıcı arasındaki iletişim, gönderici tarafından kontrol edilen dönüşümlü bir diyalog şeklinde tasarlanmıştır. Buna göre gönderici bir komut gönderir ve alıcı bir yanıt verir. Gönderici, yeni komutlar göndermeden önce bu yanıtı beklemek zorundadır.

Önemli yanıt türlerinden biri bağlantı karşılama mesajıdır. Normalde bir alıcı bağlantı kurulduğunda 220 "Awaiting input" yanıtını gönderir. Gönderici herhangi bir komut göndermeden önce bu karşılama mesajını beklemelidir.

Not: tüm karşılama türü yanıtlarında, yanıt kodundan sonra gelen ilk kelime sunucu ana makinesinin resmi adıdır.

Örneğin,

220 <SP> USC-ISIF <SP> Service ready <CRLF>

Aşağıdaki tablo, her komut için alternatif başarı ve başarısızlık yanıtlarını listeler. Bunlara kesinlikle uyulmalıdır; bir alıcı yanıt metnini değiştirebilir, ancak kod numaralarının ve belirli komut-yanıt dizisinin ima ettiği anlam ve eylem değiştirilemez.

KOMUT-YANIT DİZİLERİ

Her komut olası yanıtlarıyla birlikte listelenmiştir. Olası yanıtların önünde kullanılan önekler şunlardır:

  • P ön bilgi (SMTP'de kullanılmaz)
  • I ara yanıt
  • S başarı
  • F başarısızlık
  • E hata

421 yanıtı (hizmet kullanılamıyor, iletim kanalı kapatılıyor), SMTP alıcısı kapanması gerektiğini biliyorsa herhangi bir komuta verilebilir. Bu listeleme, Bölüm 4.4'teki Durum Diyagramları için temel oluşturur.

BAĞLANTI KURULUMU

  • S: 220
  • F: 421

HELO

  • S: 250
  • E: 500, 501, 504, 421

MAIL

  • S: 250
  • F: 552, 451, 452
  • E: 500, 501, 421

RCPT

  • S: 250, 251
  • F: 550, 551, 552, 553, 450, 451, 452
  • E: 500, 501, 421

DATA

  • I: 354 → data → S: 250
    F: 552, 554, 451, 452
  • F: 451, 554
  • E: 500, 501, 421

RSET

  • S: 250
  • E: 500, 501, 504, 421

SEND

  • S: 250
  • F: 552, 451, 452
  • E: 500, 501, 502, 421

SOML

  • S: 250
  • F: 552, 451, 452
  • E: 500, 501, 502, 421

SAML

  • S: 250
  • F: 552, 451, 452
  • E: 500, 501, 502, 421

VRFY

  • S: 250
  • F: 550
  • E: 500, 501, 502, 504, 421

EXPN

  • S: 250
  • F: 550
  • E: 500, 501, 502, 504, 421

HELP

  • S: 211, 214
  • E: 500, 501, 502, 504, 421

NOOP

  • S: 250
  • E: 500, 421

QUIT

  • S: 221
  • E: 500

4.4. DURUM DİYAGRAMLARI

Aşağıda basit bir SMTP uygulaması için durum diyagramları verilmiştir. Yalnızca yanıt kodlarının ilk basamağı kullanılır. Her SMTP komut grubu için bir durum diyagramı vardır. Komut grupları, her komut için bir model oluşturularak ve ardından yapısal olarak özdeş modellere sahip komutlar bir araya getirilerek belirlenmiştir.

Her komut için üç olası sonuç vardır: "başarı" (S), "başarısızlık" (F) ve "hata" (E). Aşağıdaki durum diyagramlarında B sembolü "başlangıç" anlamına gelir ve W sembolü "yanıtı bekle" anlamına gelir.

Önce, SMTP komutlarının çoğunu temsil eden diyagram:

                          1,3    +---+
                     ----------->| E |
                    |            +---+
                    |
 +---+    cmd    +---+    2      +---+
 | B |---------->| W |---------->| S |
 +---+           +---+           +---+
                    |
                    |     4,5    +---+
                     ----------->| F |
                                 +---+

Bu diyagram şu komutları modeller:

HELO, MAIL, RCPT, RSET, SEND, SOML, SAML, VRFY, EXPN, HELP, NOOP, QUIT.

DATA Komutu Durum Diyagramı

 +---+   DATA    +---+ 1,2                 +---+
 | B |---------->| W |-------------------->| E |
 +---+           +---+        ------------>+---+
                 3| |4,5     |
                  | |        |
    --------------   -----   |
   |                      |  |             +---+
   |               ----------     -------->| S |
   |              |       |      |         +---+
   |              |  ------------
   |              | |     |
   V           1,3| |2    |
 +---+   data    +---+     --------------->+---+
 |   |---------->| W |                     | F |
 +---+           +---+-------------------->+---+
                      4,5

Buradaki "data" ifadesinin, gönderen tarafından alıcıya gönderilen ve son satır gönderilene kadar herhangi bir yanıt beklenmeyen bir dizi satır olduğunu unutmayın.

4.5. AYRINTILAR

4.5.1. ASGARİ UYGULAMA

SMTP'nin çalışabilir olması için tüm alıcıların aşağıdaki asgari uygulamayı desteklemesi gerekir:

KOMUTLAR

  • HELO
  • MAIL
  • RCPT
  • DATA
  • RSET
  • NOOP
  • QUIT

4.5.2. ŞEFFAFLIK

Veri şeffaflığı için bir düzenleme olmadan "." karakter dizisi posta metnini sonlandırır ve kullanıcı tarafından gönderilemez. Genel olarak kullanıcılar bu tür "yasaklı" dizilerin farkında değildir. Kullanıcı tarafından oluşturulan tüm metnin şeffaf biçimde iletilebilmesi için aşağıdaki prosedürler kullanılır.

  1. Bir posta metni satırı gönderilmeden önce gönderen-SMTP satırın ilk karakterini kontrol eder. Eğer bu bir nokta ise satırın başına bir nokta daha eklenir.

  2. Bir posta metni satırı alıcı-SMTP tarafından alındığında satır kontrol edilir. Eğer satır tek bir noktadan oluşuyorsa bu posta sonudur. Eğer ilk karakter nokta ise ve satırda başka karakterler de varsa ilk karakter silinir.

Posta verisi 128 ASCII karakterinden herhangi birini içerebilir. Tüm karakterler biçimlendirme etkileyicileri ve diğer kontrol karakterleri dahil olmak üzere alıcının posta kutusuna teslim edilmelidir. 7-bit ASCII kodları, yüksek dereceli bitleri sıfıra ayarlanmış 8-bit baytlar (octet) içinde sağa hizalanmış olarak iletilir.

Bazı sistemlerde veri alınırken ve saklanırken dönüştürülmesi gerekebilir. Bu, yerel karakter kümesi olarak ASCII'den farklı bir karakter kümesi kullanan veya veriyi dizgiler yerine kayıtlar halinde saklayan ana bilgisayarlar için gerekli olabilir. Böyle dönüşümler gerekli ise geri döndürülebilir olmalıdır—özellikle bu dönüşümler aktarılan postalara uygulanıyorsa.

4.5.3. BOYUTLAR

Gerekli asgari azami boyutlara sahip birkaç nesne vardır. Yani her uygulama en azından bu boyutlardaki nesneleri alabilmelidir, ancak bu boyutlardan daha büyük nesneler göndermemelidir.

****************************************************
*                                                  *
*  MÜMKÜN OLAN EN YÜKSEK ÖLÇÜDE, BU NESNELERİN     *
*  UZUNLUĞUNA SINIR KOYMAYAN UYGULAMA TEKNİKLERİ   *
*  KULLANILMALIDIR.                                *
*                                                  *
****************************************************

user

Bir kullanıcı adının toplam azami uzunluğu 64 karakterdir.

host

Bir ana bilgisayar adının veya numarasının toplam azami uzunluğu 40 karakterdir.

path

Bir reverse-path veya forward-path için toplam azami uzunluk 256 karakterdir (noktalama işaretleri ve öğe ayırıcıları dahil).

command line

Komut sözcüğü ve dahil olmak üzere bir komut satırının toplam azami uzunluğu 512 karakterdir.

reply line

Yanıt kodu ve dahil olmak üzere bir yanıt satırının toplam azami uzunluğu 512 karakterdir.

text line

dahil olmak üzere bir metin satırının toplam azami uzunluğu 1000 karakterdir (ancak şeffaflık için çoğaltılan baştaki nokta sayılmaz).

recipients buffer

Tamponlanması gereken alıcıların azami toplam sayısı 100 alıcıdır.

****************************************************
*                                                  *
*  MÜMKÜN OLAN EN YÜKSEK ÖLÇÜDE, BU NESNELERİN     *
*  UZUNLUĞUNA SINIR KOYMAYAN UYGULAMA TEKNİKLERİ   *
*  KULLANILMALIDIR.                                *
*                                                  *
****************************************************

Bu sınırların aşılması nedeniyle oluşan hatalar, aşağıdaki örneklerde olduğu gibi yanıt kodları kullanılarak bildirilebilir:

500 Satır çok uzun.
501 Yol çok uzun
552 Çok fazla alıcı.
552 Çok fazla posta verisi.

EK A

TCP Taşıma Hizmeti

Transmission Control Protocol [3], ARPA Internet'te ve US DoD ağlar arası protokol standartlarını izleyen herhangi bir ağda kullanılır.

Bağlantı Kurulumu

SMTP iletim kanalı, gönderen süreç portu U ile alıcı süreç portu L arasında kurulan bir TCP bağlantısıdır. Bu tek tam çift yönlü bağlantı iletim kanalı olarak kullanılır. Bu protokole 25 (31 sekizlik) hizmet portu atanmıştır, yani L = 25.

Veri Aktarımı

TCP bağlantısı 8-bit baytların iletimini destekler. SMTP verisi 7-bit ASCII karakterlerinden oluşur. Her karakter, yüksek dereceli biti sıfıra ayarlanmış bir 8-bit bayt olarak iletilir.

EK B

NCP Taşıma Hizmeti

ARPANET Host-to-Host Protocol [4] (Network Control Program tarafından uygulanır) ARPANET içinde kullanılabilir.

Bağlantı Kurulumu

SMTP iletim kanalı, gönderen süreç soketi U ile alıcı süreç soketi L arasında NCP aracılığıyla kurulur. Initial Connection Protocol [5] izlenir ve bunun sonucunda bir çift simplex bağlantı oluşur. Bu bağlantı çifti iletim kanalı olarak kullanılır. Bu protokole 25 (31 sekizlik) iletişim soketi atanmıştır, yani L = 25.

Veri Aktarımı

NCP veri bağlantıları 8-bit bayt modu içinde kurulur. SMTP verisi 7-bit ASCII karakterleridir. Her karakter, yüksek dereceli biti sıfıra ayarlanmış bir 8-bit bayt olarak iletilir.

EK C

NITS

Network Independent Transport Service [6] kullanılabilir.

Bağlantı Kurulumu

SMTP iletim kanalı, gönderen süreç ile alıcı süreç arasında NITS aracılığıyla kurulur. Gönderen süreç CONNECT ilkelini çalıştırır ve bekleyen alıcı süreç ACCEPT ilkelini çalıştırır.

Veri Aktarımı

NITS bağlantısı 8-bit baytların iletimini destekler. SMTP verisi 7-bit ASCII karakterlerinden oluşur. Her karakter, yüksek dereceli biti sıfıra ayarlanmış bir 8-bit bayt olarak iletilir.

EK D

X.25 Taşıma Hizmeti

Public Data Networks tarafından sağlanan X.25 hizmetinin [7] doğrudan kullanılması mümkün olabilir, ancak güvenilir bir kanal olarak kabul edilemeyecek kadar hataya açık olduğuna dair göstergeler vardır. X.25 bağlantılarının üzerinde TCP gibi güvenilir bir uçtan uca protokol kullanılmasının tercih edilmesi önerilir.

EK E

Yanıt Kodları Kuramı

Yanıtın üç basamağının her birinin özel bir anlamı vardır.

İlk basamak yanıtın iyi, kötü veya tamamlanmamış olup olmadığını belirtir. Basit bir gönderen-SMTP, yalnızca bu ilk basamağı inceleyerek bir sonraki eylemini (planlandığı gibi devam etmek, yeniden denemek, geri çekilmek vb.) belirleyebilir. Yaklaşık olarak ne tür bir hata oluştuğunu (örneğin posta sistemi hatası, komut sözdizimi hatası) bilmek isteyen bir gönderen-SMTP ikinci basamağı inceleyebilir ve üçüncü basamağı daha ayrıntılı bilgi için kullanabilir.

Yanıt kodunun ilk basamağı için beş değer vardır:

1yz — Olumlu Ön Yanıt

Komut kabul edilmiştir, ancak istenen eylem bu yanıttaki bilginin doğrulanmasını beklerken askıda tutulmaktadır. Gönderen-SMTP, eylemin sürdürülüp sürdürülmeyeceğini veya iptal edilip edilmeyeceğini belirten başka bir komut göndermelidir.

Not: SMTP bu tür bir yanıtı destekleyen herhangi bir komuta sahip değildir ve bu nedenle devam veya iptal komutları bulunmaz.

2yz — Olumlu Tamamlama Yanıtı

İstenen eylem başarıyla tamamlanmıştır. Yeni bir istek başlatılabilir.

3yz — Olumlu Ara Yanıt

Komut kabul edilmiştir, ancak istenen eylem ek bilgi alınana kadar askıda tutulmaktadır. Gönderen-SMTP bu bilgiyi belirten başka bir komut göndermelidir. Bu yanıt komut dizisi gruplarında kullanılır.

4yz — Geçici Olumsuz Tamamlama Yanıtı

Komut kabul edilmemiştir ve istenen eylem gerçekleşmemiştir. Ancak hata durumu geçicidir ve eylem yeniden istenebilir. Gönderen, komut dizisinin başına geri dönmelidir (varsa).

İki farklı site (alıcı ve gönderen SMTP'leri) yorum üzerinde anlaşmak zorunda olduğundan "geçici" kavramına anlam atamak zordur. Bu kategorideki her yanıt farklı bir zaman değerine sahip olabilir, ancak gönderen-SMTP'nin tekrar denemesi teşvik edilir. Bir yanıtın 4yz mi yoksa 5yz kategorisine mi (aşağıya bakınız) girdiğini belirlemek için pratik bir kural şudur: Komut biçiminde veya gönderen ya da alıcının özelliklerinde herhangi bir değişiklik olmadan yinelenebiliyorsa yanıt 4yz'dir (örneğin komut aynı şekilde tekrar gönderilir ve alıcı yeni bir uygulama devreye almaz).

5yz — Kalıcı Olumsuz Tamamlama Yanıtı

Komut kabul edilmemiştir ve istenen eylem gerçekleşmemiştir. Gönderen-SMTP'nin aynı isteği (aynı sırada) tekrar etmesi önerilmez. Bazı "kalıcı" hata durumları bile düzeltilebilir, bu nedenle insan kullanıcı gelecekte bir noktada (örneğin yazım değiştirildikten sonra veya kullanıcı hesap durumunu değiştirdikten sonra) doğrudan bir işlemle gönderen-SMTP'ye komut dizisini yeniden başlatmasını isteyebilir.

İkinci basamak yanıtları belirli kategorilere göre kodlar:

  • x0z — Sözdizimi — Bu yanıtlar sözdizimi hatalarına, işlevsel bir kategoriye uymayan sözdizimsel olarak doğru komutlara ve uygulanmamış veya gereksiz komutlara işaret eder.
  • x1z — Bilgi — Bunlar durum veya yardım gibi bilgi isteklerine verilen yanıtlardır.
  • x2z — Bağlantılar — Bunlar iletim kanalına ilişkin yanıtlardır.
  • x3z — Henüz belirlenmemiş.
  • x4z — Henüz belirlenmemiş.
  • x5z — Posta sistemi — Bu yanıtlar alıcı posta sisteminin istenen aktarım veya diğer posta sistemi eylemlerine göre durumunu belirtir.

Üçüncü basamak, ikinci basamak tarafından belirtilen her kategori içinde daha ince bir anlam ayrımı sağlar. Yanıtların listesi bunu göstermektedir. Her yanıt metni öneri niteliğindedir, zorunlu değildir ve hatta ilişkili olduğu komuta göre değişebilir. Öte yandan yanıt kodları bu bölümdeki özelliklere kesinlikle uymalıdır. Alıcı uygulamaları burada açıklanan durumlara çok az farklılık gösteren yeni kodlar geliştirmemeli, bunun yerine önceden tanımlanmış kodları uyarlamalıdır.

Örneğin NOOP gibi başarılı yürütülmesi gönderen-SMTP'ye yeni bir bilgi sunmayan bir komut 250 yanıtı döndürür. Komut uygulanmamış siteye özgü olmayan bir eylem talep ettiğinde yanıt 502 olur. Bunun daha ayrıntılı bir biçimi, uygulanmış ancak uygulanmamış bir parametre talep eden komutlar için kullanılan 504 yanıtıdır.

Yanıt metni tek bir satırdan daha uzun olabilir; bu durumlarda gönderen-SMTP'nin yanıtı ne zaman okumayı bırakabileceğini bilmesi için tüm metin işaretlenmelidir. Bu, çok satırlı yanıtı belirtmek için özel bir biçim gerektirir.

Çok satırlı yanıtlar için biçim, son satır hariç her satırın yanıt kodu ile başlamasını, hemen ardından bir kısa çizgi ("-") gelmesini ve ardından metnin gelmesini gerektirir. Son satır ise yanıt kodu ile başlar, hemen ardından <SP> gelir, isteğe bağlı olarak metin bulunur ve <CRLF> ile biter.

Örnek:

123-First line
123-Second line
123-234 text beginning with numbers
123 The last line

Gönderen-SMTP daha sonra yalnızca satır başında yanıt kodu ve ardından <SP> bulunan satırı arar ve önceki tüm satırları yok sayar.

EK F

Senaryolar

Bu bölüm, çeşitli SMTP oturum türlerinin eksiksiz senaryolarını sunar.

Tipik Bir SMTP İşlem Senaryosu

Bu SMTP örneği, USC-ISIF ana makinesindeki Smith tarafından BBN-UNIX ana makinesindeki Jones, Green ve Brown'a gönderilen postayı gösterir. Burada USC-ISIF ana makinesinin BBN-UNIX ana makinesiyle doğrudan bağlantı kurduğu varsayılmaktadır. Posta Jones ve Brown için kabul edilir. Green'in BBN-UNIX ana makinesinde bir posta kutusu yoktur.

R: 220 BBN-UNIX Simple Mail Transfer Service Ready
S: HELO USC-ISIF
R: 250 BBN-UNIX

S: MAIL FROM:<Smith@USC-ISIF>
R: 250 OK

S: RCPT TO:<Jones@BBN-UNIX>
R: 250 OK

S: RCPT TO:<Green@BBN-UNIX>
R: 550 No such user here

S: RCPT TO:<Brown@BBN-UNIX>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 BBN-UNIX Service closing transmission channel

Senaryo 1


İptal Edilmiş SMTP İşlem Senaryosu

R: 220 MIT-Multics Simple Mail Transfer Service Ready
S: HELO ISI-VAXA
R: 250 MIT-Multics

S: MAIL FROM:<Smith@ISI-VAXA>
R: 250 OK

S: RCPT TO:<Jones@MIT-Multics>
R: 250 OK

S: RCPT TO:<Green@MIT-Multics>
R: 550 No such user here

S: RSET
R: 250 OK

S: QUIT
R: 221 MIT-Multics Service closing transmission channel

Senaryo 2


Aktarılan Posta Senaryosu

Adım 1 — Kaynak Ana Makineden Aktarıcı Ana Makineye

R: 220 USC-ISIE Simple Mail Transfer Service Ready
S: HELO MIT-AI
R: 250 USC-ISIE

S: MAIL FROM:<JQP@MIT-AI>
R: 250 OK

S: RCPT TO:<@ISIE,Jones@BBN-VAX>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Date: 2-Nov-81 22:33:44
S: From: John Q. Public <JQP at MIT-AI>
S: Subject:  The Next Meeting of the Board
S: To: Jones at BBN-Vax
S:
S: Bill:
S: The next meeting of the board of directors will be
S: on Tuesday.
S:                                              John.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIE Service closing transmission channel

Adım 2 — Aktarıcı Ana Makineden Hedef Ana Makineye

R: 220 BBN-VAX Simple Mail Transfer Service Ready
S: HELO USC-ISIE
R: 250 BBN-VAX

S: MAIL FROM:<@ISIE,JQP@MIT-AI>
R: 250 OK

S: RCPT TO:<Jones@BBN-VAX>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Mail-From: NCP host MIT-AI received by USC-ISIE at
   2-Nov-81 22:40:10
S: Date: 2-Nov-81 22:33:44
S: From: John Q. Public <JQP at MIT-AI>
S: Subject:  The Next Meeting of the Board
S: To: Jones at BBN-Vax
S:
S: Bill:
S: The next meeting of the board of directors will be
S: on Tuesday.
S:                                              John.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIE Service closing transmission channel

Senaryo 3


Doğrulama ve Gönderme Senaryosu

R: 220 SU-SCORE Simple Mail Transfer Service Ready
S: HELO MIT-MC
R: 250 SU-SCORE

S: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE>

S: SEND FROM:<EAK@MIT-MC>
R: 250 OK

S: RCPT TO:<Admin.MRC@SU-SCORE>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 SU-SCORE Service closing transmission channel

Senaryo 4


Gönderme ve Postalama Senaryoları

Önce kullanıcının adı doğrulanır, ardından kullanıcının terminaline gönderme girişiminde bulunulur. Bu başarısız olduğunda, ileti kullanıcının posta kutusuna gönderilir.

R: 220 SU-SCORE Simple Mail Transfer Service Ready
S: HELO MIT-MC
R: 250 SU-SCORE

S: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE>

S: SEND FROM:<EAK@MIT-MC>
R: 250 OK

S: RCPT TO:<Admin.MRC@SU-SCORE>
R: 450 User not active now

S: RSET
R: 250 OK

S: MAIL FROM:<EAK@MIT-MC>
R: 250 OK

S: RCPT TO:<Admin.MRC@SU-SCORE>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 SU-SCORE Service closing transmission channel

Senaryo 5


Önceki senaryonun daha verimli bir şekilde gerçekleştirilmesi.

R: 220 SU-SCORE Simple Mail Transfer Service Ready
S: HELO MIT-MC
R: 250 SU-SCORE

S: VRFY Crispin
R: 250 Mark Crispin <Admin.MRC@SU-SCORE>

S: SOML FROM:<EAK@MIT-MC>
R: 250 OK

S: RCPT TO:<Admin.MRC@SU-SCORE>
R: 250 User not active now, so will do mail.

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 SU-SCORE Service closing transmission channel

Senaryo 6

Posta Listesi Senaryosu

Önce iki posta listesi farklı ana makinelerle ayrı oturumlarda genişletilir. Ardından ileti, bir aktarıcı ana makine üzerinden her iki listede görünen herkese (ancak yinelenenler olmadan) gönderilir.


Adım 1 — İlk Listenin Genişletilmesi

R: 220 MIT-AI Simple Mail Transfer Service Ready
S: HELO SU-SCORE
R: 250 MIT-AI

S: EXPN Example-People
R: 250-<ABC@MIT-MC>
R: 250-Fred Fonebone <Fonebone@ISIQ>
R: 250-Xenon Y. Zither <XYZ@MIT-AI>
R: 250-Quincy Smith <@ISIF,Q-Smith@ISI-VAXA>
R: 250-<joe@foo-unix>
R: 250 <xyz@bar-unix>

S: QUIT
R: 221 MIT-AI Service closing transmission channel

Adım 2 — İkinci Listenin Genişletilmesi

R: 220 MIT-MC Simple Mail Transfer Service Ready
S: HELO SU-SCORE
R: 250 MIT-MC

S: EXPN Interested-Parties
R: 250-Al Calico <ABC@MIT-MC>
R: 250-<XYZ@MIT-AI>
R: 250-Quincy Smith <@ISIF,Q-Smith@ISI-VAXA>
R: 250-<fred@BBN-UNIX>
R: 250 <xyz@bar-unix>

S: QUIT
R: 221 MIT-MC Service closing transmission channel

Adım 3 — Aktarıcı Ana Makine Üzerinden Herkese Posta Gönderimi

R: 220 USC-ISIE Simple Mail Transfer Service Ready
S: HELO SU-SCORE
R: 250 USC-ISIE

S: MAIL FROM:<Account.Person@SU-SCORE>
R: 250 OK
S: RCPT TO:<@ISIE,ABC@MIT-MC>
R: 250 OK
S: RCPT TO:<@ISIE,Fonebone@ISIQ>
R: 250 OK
S: RCPT TO:<@ISIE,XYZ@MIT-AI>
R: 250 OK
S: RCPT TO:<@ISIE,@ISIF,Q-Smith@ISI-VAXA>
R: 250 OK
S: RCPT TO:<@ISIE,joe@FOO-UNIX>
R: 250 OK
S: RCPT TO:<@ISIE,xyz@BAR-UNIX>
R: 250 OK
S: RCPT TO:<@ISIE,fred@BBN-UNIX>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIE Service closing transmission channel

Senaryo 7


Yönlendirme Senaryoları

R: 220 USC-ISIF Simple Mail Transfer Service Ready
S: HELO LBL-UNIX
R: 250 USC-ISIF

S: MAIL FROM:<mo@LBL-UNIX>
R: 250 OK

S: RCPT TO:<fred@USC-ISIF>
R: 251 User not local; will forward to <Jones@USC-ISIA>

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIF Service closing transmission channel

Senaryo 8


Adım 1 — İlk Ana Makinede Posta Kutusunu Deneme

R: 220 USC-ISIF Simple Mail Transfer Service Ready
S: HELO LBL-UNIX
R: 250 USC-ISIF

S: MAIL FROM:<mo@LBL-UNIX>
R: 250 OK

S: RCPT TO:<fred@USC-ISIF>
R: 251 User not local; will forward to <Jones@USC-ISIA>

S: RSET
R: 250 OK

S: QUIT
R: 221 USC-ISIF Service closing transmission channel

Adım 2 — İkinci Ana Makinede Postanın Teslim Edilmesi

R: 220 USC-ISIA Simple Mail Transfer Service Ready
S: HELO LBL-UNIX
R: 250 USC-ISIA

S: MAIL FROM:<mo@LBL-UNIX>
R: 250 OK

S: RCPT TO:<Jones@USC-ISIA>
R: OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 USC-ISIA Service closing transmission channel

Senaryo 9


Çok Fazla Alıcı Senaryosu

R: 220 BERKELEY Simple Mail Transfer Service Ready
S: HELO USC-ISIF
R: 250 BERKELEY

S: MAIL FROM:<Postel@USC-ISIF>
R: 250 OK

S: RCPT TO:<fabry@BERKELEY>
R: 250 OK

S: RCPT TO:<eric@BERKELEY>
R: 552 Recipient storage full, try again in another transaction

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: MAIL FROM:<Postel@USC-ISIF>
R: 250 OK

S: RCPT TO:<eric@BERKELEY>
R: 250 OK

S: DATA
R: 354 Start mail input; end with <CRLF>.<CRLF>
S: Blah blah blah...
S: ...etc. etc. etc.
S: .
R: 250 OK

S: QUIT
R: 221 BERKELEY Service closing transmission channel

Senaryo 10


SÖZLÜK

ASCII

American Standard Code for Information Interchange [1].

komut

Gönderen-SMTP tarafından alıcı-SMTP'ye gönderilen ve posta hizmetiyle ilgili bir eylem talep eden istektir.

posta verisinin sonu göstergesi

Posta verisinin sonunu belirten özel bir karakter dizisidir. Özellikle sırasıyla carriage return, line feed, nokta, carriage return, line feed olmak üzere beş karakterden oluşur.

ana makine (host)

İnternet ağı ortamında posta kutularının veya SMTP süreçlerinin bulunduğu bir bilgisayar.

satır

Sonu bir ile biten metin satırı.

posta verisi

Rastgele uzunlukta ASCII karakterlerinden oluşan ve Standard for the Format of ARPA Network Text Messages (RFC 733 [2]) standardına uyan bir dizidir.

posta kutusu (mailbox)

Postanın gönderileceği kullanıcıyı tanımlayan bir karakter dizisi (adres). Posta kutusu genellikle ana makine ve kullanıcı tanımlarından oluşur. Standart posta kutusu adlandırma kuralı "user@host" şeklindedir. Ayrıca postanın saklandığı "kap" anlamına da gelir.

receiver-SMTP süreci

Bir sender-SMTP süreci ile iş birliği içinde posta aktarımı yapan süreçtir. Taşıma hizmeti aracılığıyla bağlantı kurulmasını bekler. Sender-SMTP'den SMTP komutlarını alır, yanıtlar gönderir ve belirtilen işlemleri gerçekleştirir.

yanıt (reply)

SMTP komutuna karşılık olarak alıcıdan göndericiye iletim kanalı üzerinden gönderilen bir onaydır (olumlu veya olumsuz). Bir yanıtın genel biçimi bir tamamlanma kodu (hata kodları dahil) ve ardından gelen bir metin dizisidir. Kodlar programlar tarafından kullanılmak içindir ve metin genellikle insan kullanıcılar için tasarlanmıştır.

sender-SMTP süreci

Bir receiver-SMTP süreci ile iş birliği içinde posta aktarımı yapan süreçtir. Kullanıcı arayüzündeki komut/yanıt diyaloğunda yerel bir dil kullanılabilir. Sender-SMTP taşıma hizmeti bağlantısını başlatır. SMTP komutlarını başlatır, yanıtları alır ve posta aktarımını yönetir.

oturum (session)

İletim kanalı açıkken gerçekleşen değişimlerin tümü.

işlem (transaction)

Bir iletinin bir veya daha fazla alıcıya iletilmesi için gerekli olan değişimlerin tümü.

iletim kanalı (transmission channel)

Komutların, yanıtların ve posta metninin değişimi için sender-SMTP ile receiver-SMTP arasında bulunan tam çift yönlü iletişim yolu.

taşıma hizmeti (transport service)

Herhangi bir güvenilir akış yönelimli veri iletişim hizmeti. Örneğin NCP, TCP, NITS.

kullanıcı (user)

Posta aktarım hizmeti almak isteyen bir insan (veya bir insan adına çalışan bir süreç). Ayrıca bilgisayar postasının alıcısı.

kelime (word)

Yazdırılabilir karakterlerden oluşan bir dizi.

Carriage return ve line feed karakterleri (bu sırayla).

Boşluk karakteri.


KAYNAKLAR

[1] ASCII

ASCII, "USA Code for Information Interchange", United States of America Standards Institute, X3.4, 1968. Ayrıca: Feinler, E. ve J. Postel, ed., ARPANET Protocol Handbook, NIC 7104, Defense Communications Agency için SRI International tarafından hazırlanmıştır, Menlo Park, California, Revize Ocak 1978.

[2] RFC 733

Crocker, D., J. Vittal, K. Pogran ve D. Henderson, "Standard for the Format of ARPA Network Text Messages," RFC 733, NIC 41952, Kasım 1977. Ayrıca: Feinler, E. ve J. Postel, ed., ARPANET Protocol Handbook, NIC 7104, Defense Communications Agency için SRI International tarafından hazırlanmıştır, Menlo Park, California, Revize Ocak 1978.

[3] TCP

Postel, J., ed., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", RFC 793, USC/Information Sciences Institute, Eylül 1981.

[4] NCP

McKenzie, A., "Host/Host Protocol for the ARPA Network", NIC 8246, Ocak 1972. Ayrıca: Feinler, E. ve J. Postel, ed., ARPANET Protocol Handbook, NIC 7104, Defense Communications Agency için SRI International tarafından hazırlanmıştır, Menlo Park, California, Revize Ocak 1978.

[5] Initial Connection Protocol

Postel, J., "Official Initial Connection Protocol", NIC 7101, 11 Haziran 1971. Ayrıca: Feinler, E. ve J. Postel, ed., ARPANET Protocol Handbook, NIC 7104, Defense Communications Agency için SRI International tarafından hazırlanmıştır, Menlo Park, California, Revize Ocak 1978.

[6] NITS

PSS/SG3, "A Network Independent Transport Service", Study Group 3, The Post Office PSS Users Group, Şubat 1980. DCPU, National Physical Laboratory, Teddington, UK üzerinden temin edilebilir.

[7] X.25

CCITT, "Recommendation X.25 - Interface Between Data Terminal Equipment (DTE) and Data Circuit-terminating Equipment (DCE) for Terminals Operating in the Packet Mode on Public Data Networks," CCITT Orange Book, Cilt VIII.2, International Telephone and Telegraph Consultative Committee, Geneva, 1976.