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
- GİRİŞ .................................................. 1
- SMTP MODELİ ............................................ 2
- 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
- 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
- 4.1. SMTP Komutları ................................... 16
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 "
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.
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.
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.
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
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
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
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
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 "
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
Ö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.
Bir oturumdaki ilk komut HELO komutu olmak zorundadır. HELO komutu bir oturumun ilerleyen aşamalarında da kullanılabilir.
NOOP, HELP, EXPN ve VRFY komutları oturum sırasında herhangi bir zamanda kullanılabilir.
MAIL, SEND, SOML veya SAML komutları bir posta işlemini başlatır. Başlatıldıktan sonra bir posta işlemi şu sırayı izler: işlem başlatma komutlarından biri, bir veya daha fazla RCPT komutu ve ardından bir DATA komutu. Bir posta işlemi RSET komutu ile iptal edilebilir. Bir oturumda sıfır veya daha fazla işlem olabilir.
Bir oturumdaki son komut QUIT komutu olmak zorundadır. QUIT komutu oturum sırasında başka hiçbir zamanda kullanılamaz.
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ı,
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
RCPT
DATA
RSET
SEND
SOML
SAML
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.
::=
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:
Not: INTERNET = TCP, ARPANET = NCP ve eğer
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,
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
221
421
[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
221
250 Requested mail action okay, completed
251 User not local; will forward to
354 Start mail input; end with
421
[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
- 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
- RCPT
- DATA
- RSET
- NOOP
- QUIT
4.5.2. ŞEFFAFLIK
Veri şeffaflığı için bir düzenleme olmadan "
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.
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
reply line
Yanıt kodu ve
text line
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
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.