MAIL TRANSFER PROTOKOLÜ
Suzanne Sluizer
Jonathan B. Postel
RFC 780
Mayıs 1981
Information Sciences Institute
University of Southern California
4676 Admiralty Way
Marina del Rey, California 90291
(213) 822-1511
İÇİNDEKİLER
- GİRİŞ .................................................. 1
- MTP MODELİ ............................................. 2
- TEMEL POSTA ............................................ 4
- 3.1 Yönlendirme ...................................... 5
- 3.2 Kaynak Yönlendirme ............................... 6
- ÇOKLU ALICILI POSTA .................................... 8
- 4.1 Şema Seçimi: MRSQ ................................ 8
- 4.2 Mesaj Metni Tanımlaması: MAIL .................... 9
- 4.3 Alıcı Tanımlaması: MRCP ......................... 10
- 4.4 Şema Mekaniği: Önce Alıcılar .................... 10
- 4.5 Şema Mekaniği: Önce Metin ....................... 12
- 4.6 Tartışma ........................................ 12
- TEKNİK ÖZELLİKLER ..................................... 16
- 5.1 MTP Komutları ................................... 16
- 5.1.1 Komut Anlamları ............................. 16
- 5.1.2 Komut Sözdizimi ............................. 18
- 5.2 MTP Yanıtları ................................... 22
- 5.2.1 İşlev Grubuna Göre Yanıt Kodları ............ 23
- 5.2.2 Sayısal Sıraya Göre Yanıt Kodları ........... 24
- 5.3 Komutların ve Yanıtların Sıralanması ............ 25
- 5.4 Durum Diyagramları .............................. 28
- 5.5 Ayrıntılar ...................................... 30
- 5.5.1 Asgari Gerçekleme ........................... 30
- 5.5.2 Şeffaflık ................................... 30
- 5.5.3 Boyutlar .................................... 30
- 5.1 MTP Komutları ................................... 16
EK A: TCP ................................................. 32
EK B: NCP ................................................. 33
EK C: NITS ................................................ 34
EK D: X.25 ................................................ 35
EK E: Yanıt Kodları Kuramı ................................ 36
SÖZLÜK .................................................... 39
KAYNAKLAR ................................................. 42
Network Working Group
S. Sluizer
Request for Comments: 780
J. Postel
ISI
Yerine Geçer: RFC 772
Mayıs 1981
MAIL TRANSFER PROTOKOLÜ
1. GİRİŞ
Mail Transfer Protocol (MTP) protokolünün amacı, postayı güvenilir ve verimli bir şekilde aktarmaktır.
MTP, belirli bir iletim alt sisteminden bağımsız olacak şekilde tasarlanmıştır ve yalnızca güvenilir, sıralı bir veri akışı kanalı gerektirir. Eklerde MTP'nin çeşitli taşıma hizmetleriyle kullanımı açıklanmaktadır. Bir Sözlük bölümü bu belgede kullanılan terimlerin tanımlarını sunar.
MTP'nin önemli bir özelliği, postayı bir taşıma ortamından diğerine aktarma yeteneğidir. Bir taşıma hizmeti, süreçler arası iletişim ortamı (IPCE) sağlar. Bir IPCE tek bir ağı, birden fazla ağı veya bir ağın bir alt kümesini kapsayabilir. Bir süreç, kendi IPCE'si içindeki herhangi bir yerde bulunan başka bir süreçle doğrudan iletişim kurabilir.
Posta, süreçler arası iletişimin özel bir durumudur. Posta, iki (veya daha fazla) IPCE'ye bağlı bir süreç üzerinden aktarılarak farklı IPCE'lerdeki süreçler arasında iletilebilir. Daha özel olarak, farklı taşıma sistemlerindeki ana bilgisayarlar arasındaki posta, her iki taşıma sistemine de bağlı bir ana bilgisayar aracılığıyla aktarılabilir. Taşıma sistemlerinin (veya IPCE'lerin) ağlarla bire bir örtüşmediğinin farkında olmak önemlidir.
2. MTP MODELİ
MTP tasarımı aşağıdaki iletişim modeline dayanır: kullanıcının başlatmasıyla gönderici-MTP tam çift yönlü bir iletim kanalı kurar. MTP komutları gönderici-MTP tarafından oluşturulur ve alıcı-MTP'ye gönderilir. MTP yanıtları ise komutlara karşılık olarak alıcı-MTP'den gönderici-MTP'ye gönderilir.
En basit durumda, iletim kanalı kurulduktan sonra MTP-gönderici, postanın göndericisini ve alıcısını belirten bir MAIL komutu gönderir. Eğer MTP-alıcı postayı kabul edebiliyorsa, devam edilebileceğini belirten bir yanıt verir. Ardından MTP-gönderici posta verisini gönderir ve bunu özel bir dizge ile sonlandırır. MTP-alıcı postayı başarıyla işlerse bir OK yanıtı verir.
-------------------------------------------------------------
+----------+ +----------+
+------+ | | | |
| User |<->| | MTP | |
+------+ | Sender- |Commands/Replies| Receiver-|
+------+ | MTP |<-------------->| MTP | +------+
| File |<->| | and Mail | |<->| File |
|System| | | | | |System|
+------+ +----------+ +----------+ +------+
Sender-MTP Receiver-MTP
Model for MTP Use
Figure 1
-------------------------------------------------------------
MTP, postanın iletilmesi için mekanizmalar sağlar; bu iletim, iki ana bilgisayar aynı taşıma hizmetine bağlıysa gönderici kullanıcının ana bilgisayarından alıcı kullanıcının ana bilgisayarına doğrudan yapılabilir ya da kaynak ve hedef ana bilgisayarlar aynı taşıma hizmetine bağlı değilse bir veya daha fazla aktarıcı MTP sunucusu üzerinden gerçekleştirilebilir.
Aktarma yeteneğini sağlayabilmek için MTP sunucusuna nihai hedef ana bilgisayarın adı ve hedef posta kutusunun adı verilmelidir.
MAIL komutunun bağımsız değişkenleri bir FROM yolu ve bir TO yoludur. TO yolu bir kaynak yönlendirmedir; FROM yolu ise bir geri dönüş yoludur (aktarılan bir mesajda hata oluştuğunda mesajı göndericiye geri iletmek için kullanılabilir).
Önceki tartışma, bir mesajın tek bir kopyasının bir kaynaktan bir hedef ana bilgisayara iletilmesini ve farklı taşıma hizmetleri arasında mesajların aktarılma olasılığını ana hatlarıyla açıklamıştır. MTP ayrıca bir mesajın tek kopyasının birden fazla alıcıya adreslenmiş olarak iletilmesini de destekler.
Postanın başarıyla iletilebilmesi için hedef kullanıcıların hedef alıcı-MTP tarafından bilinmesi ve posta verisinin doğru şekilde alınarak saklanması gerekir. Yukarıda ele alınan tek alıcı durumunda, MAIL komutuna verilen olumlu yanıt alıcının bilindiğini göstermekteydi ve son OK yanıtı postanın alındığını ve saklandığını belirtmekteydi.
Çok alıcılı postayı desteklemek için MTP iki prosedür sağlar: Önce-Metin ve Önce-Alıcılar. Önce-metin şemasında posta verisi gönderilir ve onaylanır, ardından her alıcı tanımlaması ayrı ayrı gönderilir ve onaylanır (veya reddedilir). Önce-alıcılar şemasında ise önce alıcılar üzerinde anlaşmaya varılır, ardından metin gönderilir ve tek seferde tüm alıcılar için onaylanır. Hangi şemanın kullanılacağına MTP-alıcı karar verir ve bu karar hedef ana bilgisayarda postanın nasıl işlendiğine bağlıdır.
Çok alıcılı posta prosedürleri isteğe bağlıdır ve hangi şemanın kullanılacağı müzakere edilerek belirlenir. Sağladıkları iletim ve işleme verimliliği nedeniyle çok alıcılı şemaların kullanılması güçlü biçimde önerilir.
Posta komutları ve yanıtları katı bir sözdizimine sahiptir. Yanıtlar ayrıca sayısal bir koda da sahiptir. Aşağıda gerçek komut ve yanıtların kullanıldığı örnekler bulunmaktadır. Komutların ve yanıtların tam listeleri teknik özellikler bölümünde (Bölüm 5) yer almaktadır.
Komutlar ve yanıtlar büyük/küçük harfe duyarlı değildir. Yani bir komut veya yanıt sözcüğü tamamen büyük harf, tamamen küçük harf ya da bunların herhangi bir karışımı olabilir. Bunun posta kutusu kullanıcı adları için geçerli olmadığına dikkat edilmelidir. Bazı ana bilgisayarlarda kullanıcı adı büyük/küçük harfe duyarlıdır ve MTP gerçeklemeleri posta kutusu bağımsız değişkenlerinde görünen kullanıcı adlarının harf biçimini korumaya özen göstermelidir.
3. TEMEL POSTA
Posta iletimi için kullanılan temel komut MAIL komutudur. Bu komut, iletilen verinin alıcının posta kutusuna yerleştirilmesine veya hedef ana bilgisayara aktarılmak üzere kabul edilmesine neden olur.
Posta metni de iletim kanalı üzerinden gönderilir. Bu durum, komut ve yanıt diyaloğunun yeniden sürdürülebilmesi için metnin sonunun işaretlenmesini gerektirir. MTP posta metninin sonunu yalnızca bir nokta içeren bir satır göndererek belirtir. Bunun kullanıcının metniyle çakışmasını önlemek için bir şeffaflık prosedürü kullanılır (bkz. Bölüm 5.5.2).
MAIL <SP> FROM:<sender-path> <SP> TO:<receiver-path> <CRLF>
<sender-path> kaynak posta kutusunu; <receiver-path> hedef posta kutusunu içerir. Kabul edilirse, alıcı-MTP 354 yanıtı döndürür ve bundan sonraki tüm satırları mesaj metni olarak kabul eder. Mesaj metni yalnızca bir nokta içeren bir satırla sonlandırılır; bunun üzerine 250 tamamlanma yanıtı döndürülür. Çeşitli hatalar oluşabilir.
Aslında <sender-path> ve <receiver-path> yalnızca posta kutularından ibaret değildir; aynı zamanda kaynak yönlendirmeler de içerebilir. <receiver-path> ana bilgisayarların ve hedef posta kutusunun yer aldığı bir kaynak yönlendirme listesidir; <sender-path> ise ana bilgisayarların ve kaynak posta kutusunun bulunduğu ters kaynak yönlendirme listesidir.
-------------------------------------------------------------
MAIL Örneği (Temel Posta)
Bu MAIL komutu, postanın A ana bilgisayarındaki Waldo tarafından
gönderildiğini ve Y ana bilgisayarındaki Foo'ya teslim edileceğini
belirtir. Burada A ana bilgisayarının Y ana bilgisayarıyla doğrudan
iletişime geçtiğini varsayıyoruz.
S: MAIL FROM:<waldo@A> TO:<Foo@Y> <CRLF>
R: 354 Posta girişi başlat; <CRLF>.<CRLF> ile bitir
S: Blah blah blah blah....vb. vb. vb.
S: <CRLF>.<CRLF>
R: 250 Posta gönderildi
Posta metni artık "Foo"ya gönderilmiştir.
Örnek 1
-------------------------------------------------------------
3.1 Yönlendirme
Bir alıcının, posta kutusu o ana bilgisayarda bulunmayan bir kullanıcı için postayı kabul ettiğini belirtmek amacıyla kullanabileceği iki olası ön yanıt vardır.
151 Kullanıcı yerel değil; <user>@<host> adresine yönlendirilecek
Bu yanıt, alıcı-MTP'nin kullanıcının posta kutusunun başka bir ana bilgisayarda bulunduğunu bildiğini ve postayı o ana bilgisayara yönlendirme sorumluluğunu üstleneceğini gösterir. Bu yanıt yalnızca göndericinin postanın yönlendirileceğini beklemediği durumlarda gönderilir. Yani komutta verilen <receiver-path> posta aktarımını zaten belirtiyorsa bu yanıt kullanılmaz. Bu yanıt, birden fazla ana bilgisayara sahip bir kuruluşta, her birinde diğer ana bilgisayarlardaki birçok kullanıcının listesinin bulunduğu durumlarda kullanılabilir. Bir ana bilgisayar kendi listesindeki herhangi bir kullanıcı için postayı kabul edebilir ve doğru ana bilgisayara yönlendirebilir.
152 Kullanıcı bilinmiyor; posta operatör tarafından yönlendirilecek
Bu yanıt, ana bilgisayarın kullanıcı adını tanımadığını ancak postayı kabul ederek operatörün teslim etmeye çalışmasını sağlayacağını belirtir. Bu durum kullanıcı adı yanlış yazıldığında yararlı olabilir, ancak posta gerçekten teslim edilemez durumdaysa uygun olmayabilir.
Operatör tarafından yönlendirme kabul edilemezse veya gönderen kullanıcı postayı doğrudan alıcının gerçek ana bilgisayarına göndermeyi tercih ederse işlem iptal edilebilir.
MTP-gönderici, ön yanıttaki öneriyi kabul etmek veya reddetmek için continue (CONT) ya da abort (ABRT) komutu göndermelidir. Devam edilmesi durumunda, MTP-alıcıdan gelen bir sonraki yanıt MAIL komutu için beklenen yanıtlardan biri olacaktır; büyük olasılıkla "354 Posta girişi başlat, ...". İptal edilmesi durumunda ise MTP-alıcıdan gelen bir sonraki yanıt "201 Komut uygun, işlem iptal edildi" olacaktır.
3.2 Kaynak Yönlendirme
receiver-path aşağıdaki biçimde bir kaynak yönlendirme olabilir:
@ONE,@TWO,JOE@THREE
Burada ONE, TWO ve THREE ana bilgisayarlardır. Bu biçim, bir adres ile bir rota arasındaki ayrımı vurgulamak için kullanılır.
Uzak bir gelecekte posta kutusu biçimini bir bölge tanımlayıcısı içerecek şekilde genişletmek gerekebilir; örneğin:
user@host@region
Böyle bir durumda MTP yol kuralı şu şekilde genişletilebilir:
host@region,host@region,...user@host@region
Örneğin:
ONE@R1,TWO@R2,JOE@THREE@R3
Posta kutusu mutlak bir adrestir ve rota oraya nasıl ulaşılacağına dair bilgidir. Bu iki kavram birbirine karıştırılmamalıdır.
Mesaj bir MTP'den diğerine aktarılırken receiver-path öğeleri sender-path'e taşınmalıdır. sender-path ters kaynak yönlendirmedir; yani mesajın çıkış noktasına doğru bir kaynak yönlendirme yoludur. Bir MTP, receiver-path içinden kendi tanımlayıcısını kaldırıp sender-path'in başına eklediğinde, posta hangi ortamdan geldiyse o ortamda bilinen adıyla değil, gönderdiği ortamda bilindiği adıyla kullanmalıdır; çünkü bir MTP farklı ortamlarda farklı adlarla bilinebilir.
Kaynak yönlendirme kullanıldığında alıcı-MTP başka bir MTP'ye aktarılmak üzere posta alır. Alıcı-MTP postayı aktarma görevini kabul edebilir veya yerel bir kullanıcı için postayı kabul ya da reddettiği şekilde reddedebilir. 151 "Kullanıcı yerel değil" veya 152 "Kullanıcı bilinmiyor" ön yanıtlarını kullanmaz. Alıcı-MTP aktarım görevini kabul ettiğinde posta metnini alır ve komut bağımsız değişkenlerini dönüştürür; receiver-path içinden kendi tanımlayıcısını kaldırır ve sender-path'in başına ekler. Alıcı-MTP daha sonra bir gönderici-MTP haline gelir, receiver-path içindeki bir sonraki MTP ile bir iletim kanalı kurar ve postayı ona gönderir.
Bir MTP posta aktarma görevini kabul ettikten sonra receiver-path'in hatalı olduğunu ya da postanın herhangi bir nedenle teslim edilemediğini fark ederse, teslim edilemeyen postanın gönderenine bir bildirim mesajı hazırlayıp göndermelidir. Bu gönderici sender-path tarafından belirtilir. Bu bildirim mesajı bu ana bilgisayardaki MTP'den gelmelidir. Yani bildirim mesajının sender-path değeri "MTP@
4. ÇOKLU ALICILI POSTA
Bir mesajın metninin aynı anda birden fazla alıcıya gönderilmesine izin veren iki MTP komutu vardır; bu tür mesaj iletimi, her ek alıcı için metni tekrar tekrar göndermeye kıyasla çok daha verimlidir.
Bir şemada önce tüm alıcılar belirtilir ve ardından metin gönderilir. Diğer şemada ise sıra tersine çevrilir; önce metin gönderilir, ardından alıcılar belirtilir. Gönderici-MTP tercih ettiği şemayı önerir, ancak gerçekte hangi şemanın kullanılacağını alıcı-MTP belirler.
Belirli bir şemayı seçmek için MRSQ komutu kullanılır; bir şema seçildikten sonra alıcıları belirtmek için MRCP komutları verilir; metni sağlamak için ise MAIL komutu kullanılır.
Her iki şema da gereklidir çünkü tek başına hiçbirisi tüm sistemler için en uygun değildir. MRSQ R, her şeyin biriktirilip ardından eşzamanlı olarak gönderilmesi sayesinde daha çok "toplu" posta gönderimine olanak tanır. Bu durum, MTP alıcısının postayı doğrudan yazmadığı ancak onu merkezi bir posta gönderim arka plan sürecine devrettiği ITS gibi sistemler için oldukça yararlıdır. Tek bir "devretme" işlemiyle ilişkilendirilen bilgi (örneğin alıcılar) ne kadar fazla olursa, posta o kadar verimli şekilde teslim edilebilir.
Buna karşılık MRSQ T, postayı doğrudan ve tek tek artımlı biçimde teslim etmek isteyen alıcı-MTP'ler için tasarlanmıştır. Her bir alıcı için bu şema, disk kotasının aşılması, posta kutusu erişim çakışmaları vb. değişken posta sistemi etkenlerine bağlı olabilen ayrı bir başarı/başarısızlık yanıt kodu döndürür. Bu alıcı-MTP'ler MRSQ R'nin toplu gönderimini taklit etmeye çalışsalar, MAIL komutuna verilen başarı yanıtının gerçekten tüm belirtilen alıcılara teslim edildiği anlamına geldiğinden emin olmak zorunda kalırlardı — yalnızca bir kısmına değil.
4.1 Şema Seçimi: MRSQ
MRSQ, bir gönderici-MTP'nin MRSQ/MRCP uygulamasını test etmesine, belirli bir şema seçmesine, durumunu sıfırlamasına ve hatta bazı temel düzeyde pazarlık işlemleri yapmasına olanak sağlayan araçtır. Biçimi aşağıdaki gibidir:
MRSQ [
<scheme> tek bir karakterdir. Aşağıdakiler tanımlanmıştır:
- R — Önce alıcılar. Eğer bu uygulanmamışsa T uygulanmış olmalıdır.
- T — Önce metin. Eğer bu uygulanmamışsa R uygulanmış olmalıdır.
- ? — Tercih isteği. Bu her zaman uygulanmış olmalıdır.
Argüman olmaması, hiçbir şemanın seçilmediği bir "seçim" anlamına gelir (varsayılan).
Olası yanıtlar şunlardır:
- 200 Tamam, belirtilen şemayı kullan
- 215
Tercih ettiğim şema budur - 504 MRSQ'yu anlıyorum ancak o şemayı kullanamam
- 5xx Komut tanınmadı veya uygulanmamış
MRSQ'nun üç yönü vardır.
Birincisi, argümansız bir MRSQ her zaman 200 yanıtı döndürmeli ve hiçbir şemanın seçili olmadığı varsayılan durumu geri yüklemelidir. Bunun dışındaki herhangi bir yanıt, MRSQ'nun ve dolayısıyla MRCP'nin anlaşılmadığı veya doğru şekilde gerçekleştirilemediği anlamına gelir.
İkincisi, <scheme> olarak ? kullanılması alıcı MTP'den 215 yanıtı döndürmesini ister; bu yanıtta alıcı tercih edilen şemayı belirtir. Bu yanıtın biçimi şöyledir:
215
Başka herhangi bir yanıt (örneğin 4xx veya 5xx), MRSQ uygulanıyorsa ? her zaman uygulanmak zorunda olduğundan, MRSQ ve MRCP'nin uygulanmadığını gösterir.
MRSQ hakkında üçüncü önemli nokta, her zaman tüm şemaları başlangıç durumlarına sıfırlama yan etkisine sahip olmasıdır. Bu sıfırlama, verilecek yanıt ne olursa olsun — 200, 215 veya 504 — yapılmalıdır. Sıfırlama için gerekli işlemler, her şemanın nasıl çalıştığı tartışılırken açıklanacaktır.
Alıcının hangi şemanın kullanılacağını seçtiğine dikkat edin. Gönderici her iki yöntemi de kullanmaya hazır olmalıdır.
4.2 Mesaj Metni Belirtimi: MAIL
Hangi şema seçilmiş olursa olsun (veya hiçbiri seçilmemiş olsa bile), alıcı-yol argümanı boş olmayan bir MAIL komutu daha önce olduğu gibi aynı şekilde davranır; MRSQ/MRCP komutlarının buna hiçbir etkisi yoktur. Bununla birlikte normal bir MAIL komutunun MRSQ ile aynı yan etkisi vardır; tüm şemaları başlangıç durumlarına sıfırlar.
Seçilen özel şemanın önemli olması yalnızca alıcı-yol argümanının boş olduğu durumlarda ortaya çıkar.
MAIL FROM:
Bir hata üretmek yerine alıcı, bu "boş" alıcı belirtimi için mesaj metnini kabul edecektir. Bununla ne yapacağı, hangi şemanın etkin olduğuna bağlıdır ve Şema Mekaniği bölümünde açıklanacaktır.
4.3 Alıcı Belirtimi: MRCP
Alıcı adlarını (yani posta kutularını) belirtmek ve her ad için bir onay (veya reddetme) almak amacıyla aşağıdaki komut kullanılır:
MRCP
Şema yoksa verilen yanıt:
- 503 Henüz bir şema belirtilmedi; MRSQ kullan
T şeması için verilen yanıtlar MAIL komutu için verilenlerle aynıdır.
R şeması için verilen yanıtlar (önce alıcılar):
- 200 Tamam, ad kaydedildi
- 452 Alıcı tablosu dolu, bu ad kaydedilmedi
- 550 Alıcı adı reddedildi
- 4xx Geçici hata, bu adı daha sonra tekrar dene
- 5xx Kalıcı hata, göndericiye bildir
Bu komutun henüz bir şema seçilmemişken kullanılmasının hata olduğuna dikkat edin; MRCP kullanılacaksa önceden bir MRSQ
4.4 Şema Mekaniği: MRSQ R (Önce Alıcılar)
Önce alıcılar şemasında MRCP, MTP alıcısının bir liste veya tabloda sakladığı adları belirtmek için kullanılır. Normalde her MRCP için verilen yanıt ya kabul anlamına gelen 200 ya da 4xx/5xx reddetme kodudur.
Tüm 5xx kodları kalıcı reddetmelerdir (örneğin kullanıcı bilinmiyor) ve insan kullanıcıya bildirilmelidir; 4xx kodları ise genellikle daha sonra giderilebilecek geçici bir hatayı gösterir.
452 dışında hiçbir 4xx/5xx yanıtı önceki veya sonraki MRCP komutlarını etkilemez; 452 ise halihazırda saklanan alıcılara bir mesaj gönderilmedikçe veya bir sıfırlama yapılmadıkça başka MRCP komutlarının başarılı olmayacağını gösterir.
Saklanan alıcılara mesaj metni göndermek için alıcı-yol argümanı olmayan bir MAIL komutu verilir:
MAIL
Mesaj metninin iletimi normal MAIL ile tamamen aynıdır. Ancak iletimin sonunda verilen olumlu bir onay, mesajın MRCP ile hatırlanan tüm alıcılara gönderildiği anlamına gelir; bir hata kodu ise bu alıcıların tamamı için başarısız sayılması gerektiğini gösterir.
Yanıtın neyi ifade ettiğine bakılmaksızın, saklanan tüm alıcı adları silinir ve unutulur — başka bir deyişle durum başlangıç hâline döner. Alıcı adı listesinin bu şekilde temizlenmesi, MRSQ kullanımının (veya alıcı-yol argümanı boş olmayan MAIL kullanımının) sıfırlama yan etkisi olarak da yapılmalıdır.
Bir MRCP için verilen 452 yanıtı (depolama alanı yetersizliği), mevcut alıcılar için mesajı belirtmek üzere MAIL kullanılarak ve ardından daha fazla MRCP ve başka bir MAIL gönderilerek, gerektiği kadar tekrarlanarak ele alınabilir. Örneğin bir alıcı yalnızca 10 ad saklayabiliyorsa, bu durumda 50 alıcılı bir mesaj 5 kez gönderilir ve her seferinde farklı 10 alıcıya iletilir.
Bir gönderici, herhangi bir başarılı MRCP verilmeden önce mesaj metni belirtmeye çalışırsa (alıcı-yol argümanı olmayan MAIL), bu durum "boş alıcılı" normal bir MAIL gibi ele alınmalıdır; bazı alıcılar 550 Null recipient gibi bir hata döndürebilir.
MRSQ R Örneği (Önce Alıcılar)
Önce gönderici alıcının MRSQ uyguladığını doğrulamalıdır.
S: MRSQ
R: 200 OK, hiçbir şema seçilmedi
Boş argümanlı bir MRSQ uygulanmışsa her zaman 200 döndürür ve varsayılan şemayı (hiçbiri) seçer. Eğer MRSQ uygulanmamış olsaydı 4xx veya 5xx kodu dönerdi.
S: MRSQ R
R: 200 OK, o şema kullanılıyor
Her şey yolunda; şimdi alıcılar belirtilebilir.
S: MRCP TO:<Foo@Y>
R: 200 OK
S: MRCP TO:<Raboof@Y>
R: 550 Burada böyle bir kullanıcı yok
S: MRCP TO:<bar@Y>
R: 200 OK
S: MRCP TO:<@Y,@X,fubar@Z>
R: 200 OK
"Raboof" için başarısızlığın, "Foo" veya "bar" için postanın saklanmasını ya da "X" ana makinesi üzerinden "fubar@Z" adresine iletilecek postayı etkilemediğine dikkat edin.
Şimdi mesaj metni, alıcı-yol argümanı olmayan bir MAIL komutu verilerek sağlanır.
S: MAIL FROM:<waldo@A>
R: 354 Posta girişi başlasın;
S: Blah blah blah blah.... vb. vb. vb.
S:
R: 250 Posta gönderildi
Posta metni artık "Foo" ve "bar" adreslerine gönderilmiş ve aynı zamanda "fubar@Z" adresine iletilmek üzere aktarılmıştır.
4.5 Şema Mekaniği: MRSQ T (Önce Metin)
Önce metin şemasında alıcı-yol argümanı olmayan MAIL, alıcının sakladığı mesaj metnini belirtmek için kullanılır. Ardından gelen MRCP komutları, metin aktarımıyla ilgili işlemler yapılmaması dışında MAIL komutları gibi değerlendirilir; saklanan mesaj metni belirtilen alıcıya gönderilir.
Döndürülen yanıt kodu, gerçek bir MAIL komutunun vereceğiyle aynıdır (herhangi bir 2xx kodu başarıyı gösterir).
Saklanan mesaj metni, bir sonraki MAIL veya MRSQ gelene kadar unutulmaz; bu komutlar ya yeni metinle değiştirecek ya da tamamen temizleyecektir. MRSQ kullanımı saklanan metni temizleyerek bu şemayı sıfırlar; alıcı-yol argümanı boş olmayan MAIL kullanımı da aynı etkiyi yapar.
Herhangi bir mesaj metni saklanmadan önce bir MRCP görülürse, gönderici fiilen boş bir mesaj göndermeye çalışıyordur; bazı alıcılar buna izin verebilirken diğerleri hata kodu döndürebilir.
MRSQ T Örneği (Önce Metin)
Önce gönderici alıcının MRSQ uyguladığını doğrulamalıdır.
S: MRSQ ?
R: 215 T Önce metin, lütfen
MRSQ gerçekten uygulanmıştır ve alıcı T tercih ettiğini belirtmektedir; ancak bu durum göndericinin başka bir şey denemesini engellemez.
S: MRSQ R
R: 504 Üzgünüm, gerçekten bunu yapamam
Alıcının R'yi de anlayabilmesi mümkündür, ancak genel olarak tercih edilen şemayı kullanmak en iyisidir çünkü alıcı kendi sitesi için hangisinin daha verimli olduğunu bilir.
S: MRSQ T
R: 200 OK, o şema kullanılıyor
Artık T şeması seçilmiştir ve mesaj metni alıcı-yol argümanı olmayan bir MAIL komutu verilerek gönderilir.
S: MAIL FROM:<WALDO@A>
R: 354 Posta girişi başlasın;
S: Blah blah blah blah....vb. vb. vb.
S:
R: 250 Posta saklandı
Artık alıcılar belirtilebilir.
S: MRCP TO:<Foo@Y>
R: 250 Saklanan posta gönderildi
S: MRCP TO:<Raboof@Y>
R: 550 Burada böyle bir kullanıcı yok
S: MRCP TO:<bar@Y>
R: 250 Saklanan posta gönderildi
S: MRCP TO:<@Y,@X,fubar@Z>
R: 250 Posta iletilmek üzere kabul edildi
Metin artık "Y" ana makinesindeki "Foo" ve "bar" adreslerine gönderilmiş ve "X" ana makinesi üzerinden "fubar@Z" adresine iletilecektir; ayrıca hâlâ saklı durumdadır. Başka bir MAIL/MRCP ... dizisiyle yeni bir mesaj gönderilebilir, ancak dikkatli bir gönderici aşağıdaki alışverişi kullanarak durumu sıfırlar.
S: MRSQ ?
R: 215 T Önce metin, lütfen
Bu işlem, etkin şemayı değiştirmeden durumu sıfırlar.
Örnek 3
4.6. TARTIŞMA
Bu komutlar MTP'nin asgari uygulamasında zorunlu olmadığından, MRSQ veya MRCP'nin hiçbirini tanımayan sitelerle başa çıkmaya hazır olunmalıdır. "MRSQ" ve "MRSQ ?" özellikle herhangi bir şemanın uygulanıp uygulanmadığını test etmek için tasarlanmıştır. MRCP bir test amacıyla tasarlanmamıştır ve "uygulanmamış" türünde bir başarısızlık yanıtı "Henüz şema seçilmedi" veya hatta "Alıcı bilinmiyor" ile karıştırılabilir.
"MRSQ ?" komutuna verilen olumlu bir yanıtta alıcının tercih ettiği "şemanın" varsayılan durum (yani çoklu alıcı şemalarının hiçbiri) olduğunu belirtmenin bir yolu yoktur. Bunun gerekçesi şudur: bu durumda MRSQ/MRCP'yi uygulamanın bir anlamı olmazdı ve dolayısıyla yanıt negatif olurdu.
Bu çoklu alıcı genişletmesinde MAIL kullanımının boş alıcı-yol argümanlarıyla sınırlandırılmasının nedenlerinden biri, boş olmayan bir alıcı-yol argümanına izin verilmesi durumunda ortaya çıkacak belirsizliktir. Örneğin MRSQ R etkin durumdayken bazı MRCP komutları verilmiş ve ardından MAIL FROM:<X@Y> TO:<FOO@Z>
Tüm şemaların "sıfırlanması" karışıklığı ve aşırı karmaşık uygulamayı önlemek için tüm MRSQ'lar ve "normal" MAIL komutları tarafından yapılır. MRSQ komutu durum değişikliğini veya durum belirsizliğini ima eder ve MAIL komutu aksi takdirde T/R şemalarının kullandığı veri tabanlarını (örneğin mesaj metni depolama alanı) bozmamak için bağımsız mekanizmalar kullanmak zorunda kalırdı. Ancak bir şema seçildikten sonra etkin kalır. Geçerli seçimi değiştirmeden sıfırlama yapmanın önerilen yolu "MRSQ ?" kullanmaktır. "MRSQ" komutunun tek başına hiçbir şema durumuna geri döndürdüğünü unutmayın.
5. ÖZELLİKLER
5.1. MTP KOMUTLARI
5.1.1. KOMUT ANLAMBİLİMİ
MTP komutları, kullanıcının talep ettiği posta aktarımını veya posta sistemi işlevini tanımlar. MTP komutları
MAIL (MAIL)
Bu komut iletim kanalı üzerinden posta göndermek için kullanılır. Argüman alanı bir gönderici-yol dizisi ve isteğe bağlı bir alıcı-yol dizisi içerir.
Gönderici-yol dizisi isteğe bağlı bir ana makine listesi ve gönderici posta kutusundan oluşur. Ana makine listesi mevcut olduğunda bu "ters" kaynak yönlendirme bilgisidir ve postanın listedeki her ana makine üzerinden aktarıldığını gösterir (listedeki ilk ana makine en son aktarıcıdır). Bu liste, teslim edilememe bildirimlerini göndericiye geri yönlendirmek için kaynak yönlendirme olarak kullanılır. Her aktarıcı ana makine kendisini listenin başına eklerken, eğer farklıysa postanın geldiği ağ yerine postayı ilettiği ağda bilinen adını kullanmalıdır.
Alıcı-yol dizisi mevcutsa, isteğe bağlı bir ana makine listesi ve bir hedef posta kutusundan oluşur. Ana makine listesi mevcut olduğunda bu kaynak yönlendirme bilgisidir ve postanın listedeki ilk ana makineye aktarılması gerektiğini belirtir.
Alıcı, komutu izleyen satırları göndericiden gelen posta metni olarak değerlendirir. Posta metni "
Posta alıcı-yol dizisi boyunca aktarılırken, her aktarıcı ana makine kendisini yol dizisinden kaldırmalı ve gönderici-yol dizisinin başına eklemelidir. Posta nihai hedefe ulaştığında (alıcı-yol dizisi yalnızca bir hedef posta kutusu içerdiğinde), alıcı-MTP bunu kendi ana makine posta kurallarına uygun şekilde hedef posta kutusuna yerleştirir. (Örneğin "MAIL FROM:<X@Y> TO:<@A,@B,C@D>
Alıcı-yol dizisi boşsa, posta yazıcıya veya ana makinenin genel teslim postası için belirlenmiş başka bir yere yönlendirilir (eğer bu ana makinede buna izin veriliyorsa). Posta, gönderici-yol dizisi alanında belirtildiği şekilde göndericiden gelmiş olarak işaretlenebilir.
MAIL RECIPIENT SCHEME QUESTION (MRSQ)
Bu MTP komutu, aynı ana makinedeki birden fazla kullanıcıya posta iletimi için bir şema seçmek amacıyla kullanılır. Şemalar; önce alıcılar veya önce metin biçimindedir.
MAIL RECIPIENT (MRCP)
Bu komut, tek bir ana makinedeki birden fazla kullanıcıya posta iletimi sırasında postanın bireysel alıcılarını tanımlamak için kullanılır.
HELP (HELP)
Bu komut, alıcının uygulama durumuyla ilgili yararlı bilgileri iletim kanalı üzerinden göndermesine neden olur. Komut bir argüman (örneğin herhangi bir komut adı) alabilir ve yanıt olarak daha belirli bilgiler döndürebilir.
QUIT (QUIT)
Bu komut, alıcının iletim kanalını kapatması gerektiğini belirtir.
NOOP (NOOP)
Bu komut herhangi bir parametreyi veya daha önce girilmiş komutları etkilemez. Alıcının OK yanıtı göndermesi dışında hiçbir işlem yapılmayacağını belirtir.
CONTINUE (CONT)
Bu komut, daha önce belirtilmiş olan işlemin devam ettirilmesi gerektiğini belirtir. Bu komut yalnızca bir ön yanıtın ardından gönderilir.
ABORT (ABRT)
Bu komut, daha önce belirtilmiş olan işlemin iptal edilmesi gerektiğini belirtir. Bu komut yalnızca bir ön yanıtın ardından gönderilir. Alıcının OK yanıtı göndermesi dışında başka bir işlem yapılmayacağını belirtir.
5.1.2. KOMUT SÖZDİZİMİ
Komutlar, bir komut kodu ile başlar ve ardından bir argüman alanı gelir. Komut kodları dört alfabetik karakterden oluşur. Büyük ve küçük harfli alfabetik karakterler aynı şekilde ele alınmalıdır. Bu nedenle aşağıdakilerin herhangi biri mail komutunu temsil edebilir:
MAIL
Mail
mail
MaIl
mAIl
Bu durum, parametre değerlerini temsil eden semboller için de geçerlidir; örneğin RECIPIENT için R veya r gibi. Komut kodları ile argüman alanları bir veya daha fazla boşluk ile ayrılır.
Ancak gönderici-yolu ve alıcı-yolu argümanlarında büyük/küçük harf kullanımı önemlidir. Özellikle bazı host sistemlerinde "foo" kullanıcısı ile "Foo" kullanıcısı 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. Tüm karakterler ASCII karakter kümesindedir.
Aşağıdakiler MTP komutlarıdır:
MAIL
MRSQ [
MRCP
HELP [
QUIT
NOOP
CONT
ABRT
Yukarıdaki argüman alanlarının sözdizimi (uygun yerlerde BNF gösterimi kullanılarak) aşağıda verilmiştir. "..." gösterimi bir alanın bir veya daha fazla kez tekrarlanabileceğini belirtir.
::= A ile Z arasındaki 26 harften herhangi biri (büyük veya küçük)
::=
Ters eğik çizgi '\' bir alıntılama karakteridir; sonraki karakterin normal yorumuyla değil, olduğu gibi kullanılacağını belirtir. Örneğin "Joe\,Smith" ifadesi, virgülün alanın dördüncü karakteri olduğu dokuz karakterlik tek bir kullanıcı alanını belirtmek için kullanılabilir.
Host sistemleri genellikle her host içinde adreslere çevrilen adlarla bilinir. Bazen bir host çeviri işlevi tarafından bilinmez ve iletişim engellenir. Bu engeli aşmak için host "adları" için sayısal biçimlere de izin verilir. Bu biçimlerden biri, başında diyez işareti "#" bulunan onluk bir tam sayıdır; bu sayı host adresini gösterir. Başka bir biçim ise noktalarla ayrılmış dört küçük onluk tam sayının köşeli parantez içinde yazılmasıdır; örneğin "[123.255.37.321]". Bu gösterim dört adet sekiz bitlik alandan oluşan 32 bitlik bir ARPA Internet Address anlamına gelir.
5.2. MTP YANITLARI
MTP komutlarına verilen yanıtlar, posta aktarım sürecinde istekler ile işlemler arasında eşzamanlılığı sağlamak ve gönderici-MTP'nin alıcı-MTP'nin durumunu her zaman bilmesini güvence altına almak amacıyla tasarlanmıştır. Her komut tam olarak bir yanıt üretmelidir. Ayrıca bazı komutların belirli bir sırayla gerçekleşmesi gerekir; örneğin MRSQ T -> MAIL -> MRCP veya MRSQ R -> MRCP -> MAIL.
Komut-yanıt sırasının ayrıntıları, Sıralama ve Durum Diyagramları ile ilgili 5.3 ve 5.4 bölümlerinde açık biçimde verilmiştir.
Bir MTP 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 düzeyde kodlanmış bilgi içermesi amaçlanmıştır; böylece gönderici-MTP metni incelemek zorunda kalmaz ve uygun olduğu durumda metni ya 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 bulunması muhtemeldir. Yanıt kodlarının atanmasına ilişkin daha ayrıntılı açıklama Ek E'de, Yanıt Kodları Kuramı bölümünde verilmiştir. Resmî olarak bir yanıt şu diziden oluşur: üç basamaklı kod,
5.2.1. İŞLEV GRUPLARINA GÖRE YANIT KODLARI
200 Komut uygun
201 Komut uygun, işlem iptal edildi
500 Sözdizimi hatası, komut tanınmadı
[Bu, komut satırının çok uzun olması gibi hataları içerebilir]
501 Parametrelerde veya argümanlarda sözdizimi hatası
502 Komut uygulanmamış
503 Komutların sırası hatalı
504 Komut parametresi uygulanmamış
211 Sistem durumu veya sistem yardım yanıtı
214 Yardım mesajı
[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]
215 <scheme> tercih edilen şemadır
120 <host> Hizmet nnn dakika içinde hazır
220 <host> Hizmet yeni kullanıcı için hazır
221 <host> Hizmet iletim kanalını kapatıyor
421 <host> Hizmet mevcut değil, iletim kanalı kapatılıyor
[Hizmetin kapanması gerektiği biliniyorsa bu
herhangi bir komuta yanıt olarak verilebilir]
151 Kullanıcı yerel değil; <user>@<host> adresine iletilecek
152 Kullanıcı bilinmiyor; posta operatör tarafından iletilecek
250 İstenen posta işlemi uygun, tamamlandı
450 İstenen posta işlemi yapılmadı: posta kutusu kullanılamıyor
[Örneğin posta kutusu meşgul]
550 İstenen işlem yapılmadı: posta kutusu kullanılamıyor
[Örneğin posta kutusu bulunamadı, erişim yok]
451 İstenen işlem iptal edildi: işleme sırasında yerel hata
452 İstenen işlem yapılmadı: yetersiz sistem depolama alanı
552 İstenen posta işlemi iptal edildi: depolama kotası aşıldı
[Geçerli posta kutusu konumu için]
553 İstenen işlem yapılmadı: posta kutusu adı izin verilmiyor
[Örneğin posta kutusu sözdizimi yanlış]
354 Posta girişi başlat; <CRLF>.<CRLF> ile bitir
5.2.2. YANIT KODLARININ SAYISAL SIRALI LİSTESİ
120 <host> Hizmet nnn dakika içinde hazır
151 Kullanıcı yerel değil; <user>@<host> adresine iletilecek
152 Kullanıcı bilinmiyor; posta operatör tarafından iletilecek
200 Komut uygun
201 Komut uygun, işlem iptal edildi
211 Sistem durumu veya sistem yardım yanıtı
214 Yardım mesajı
[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]
215 <scheme> tercih edilen şemadır
220 <host> Hizmet yeni kullanıcı için hazır
221 <host> Hizmet iletim kanalını kapatıyor
250 İstenen posta işlemi uygun, tamamlandı
354 Posta girişi başlat; <CRLF>.<CRLF> ile bitir
421 <host> Hizmet mevcut değil, iletim kanalı kapatılıyor
[Hizmetin kapanması gerektiği biliniyorsa bu
herhangi bir komuta yanıt olarak verilebilir]
450 İstenen posta işlemi yapılmadı: posta kutusu kullanılamıyor
[Örneğin posta kutusu meşgul]
451 İstenen işlem iptal edildi: işleme sırasında yerel hata
452 İstenen işlem yapılmadı: yetersiz sistem depolama alanı
500 Sözdizimi hatası, komut tanınmadı
[Bu, komut satırının çok uzun olması gibi hataları içerebilir]
501 Parametrelerde veya argümanlarda sözdizimi hatası
502 Komut uygulanmamış
503 Komutların sırası hatalı
504 Komut parametresi uygulanmamış
550 İstenen işlem yapılmadı: posta kutusu kullanılamıyor
[Örneğin posta kutusu bulunamadı, erişim yok]
552 İstenen posta işlemi iptal edildi: depolama kotası aşıldı
[Geçerli posta kutusu konumu için]
553 İstenen işlem yapılmadı: posta kutusu adı izin verilmiyor
[Örneğin posta kutusu sözdizimi yanlış]
5.3. KOMUTLARIN VE YANITLARIN SIRALANMASI
Gönderici ile alıcı arasındaki iletişim dönüşümlü bir diyalog olarak tasarlanmıştır. Buna göre gönderici bir MTP komutu gönderir ve alıcı hızlı bir birincil yanıtla karşılık verir. Gönderici, yeni komutlar göndermeden önce bu yanıtı beklemelidir.
Ön (1xx) ve ara (3xx) yanıtlar, istenen işlemin tamamlanabilmesi için ek komutlar ve bilgiler gerektiğini gösterir. Ön yanıtlar ilerlemek için ya continue ya da abort komutunu gerektirir; ara yanıtlar ise duruma bağlı ek komutlar gerektirir.
Önemli yanıtlardan biri bağlantı karşılama mesajıdır. Normal koşullar altında alıcı, bağlantı kurulduğunda 220 "Girdi bekleniyor" yanıtını gönderir. Gönderici herhangi bir komut göndermeden önce bu karşılama mesajını beklemelidir. Eğer alıcı hemen girdi kabul edemiyorsa derhal 120 "Beklenen gecikme" yanıtını göndermelidir. Gönderici daha sonra continue komutu ile beklemeye istekli olduğunu ya da abort komutu ile beklemek istemediğini belirtebilir. Alıcı abort komutuna 201 yanıtıyla, hazır olduğunda continue komutuna ise 220 yanıtıyla karşılık verir.
Not: tüm karşılama türü yanıtlarında, yanıt kodundan sonra gelen ilk kelime sunucu host'unun resmî adıdır.
Örneğin:
220 <SP> USC-ISIF <SP> Service ready <CRLF>
Aşağıdaki tabloda her komut için alternatif başarı ve başarısızlık yanıtları listelenmiştir. Bunlara kesin olarak uyulmalıdır; alıcı yanıt metninde değişiklik yapabilir, ancak kod numaralarının ve belirli komut-yanıt sırasının ifade ettiği anlam ve işlem değiştirilemez.
KOMUT-YANIT DİZİLERİ
Her komut olası yanıtlarıyla birlikte listelenmiştir. Ön yanıtlar önce verilir ve onları takip eden yanıtlar girintili olarak gösterilir; ardından başarı ve başarısızlık tamamlanmaları ve son olarak ara yanıtlar ile dizideki kalan komutlar yer alır. Olası yanıtların önünde kullanılan önekler şunlardır: "P" (preliminary/ön), "I" (intermediate/ara), "S" (success/başarı), "F" (failure/başarısızlık) ve "E" (error/hata). 421 yanıtı (hizmet mevcut değil, iletim kanalı kapatılıyor) MTP-alıcısı kapanması gerektiğini biliyorsa herhangi bir komuta verilebilir. Bu liste, 5.4 bölümündeki Durum Diyagramlarının temelini oluşturur.
CONNECTION ESTABLISHMENT
P: 120 -> CONT -> S: 220
F: 421
ABRT S: 201
F: 421
S: 220
F: 421
MAIL
P: 151 -> CONT -> I: 354 -> text -> S: 250
152 F: 451,552,450,
550,452,553
ABRT -> S: 201
F: 451,552,450,550,452,553
I: 354 -> text -> S: 250
F: 451,552,450,550,452,553
F: 451, 552, 450, 550, 452, 553
E: 500, 501, 502, 421
MRSQ
S: 200, 215
E: 500, 501, 502, 504, 421
MRCP
P: 151 -> CONT -> S: 200, 215, 250
152 F: 451,552,450,550,452,553
ABRT -> S: 201
F: 451,552,450,550,452,553
S: 200, 215, 250
F: 451, 552, 450, 550, 452, 553
E: 500, 501, 502, 503, 421
QUIT
S: 221
E: 500, 421
HELP
S: 211, 214
E: 500, 501, 502, 504, 421
NOOP
S: 200
E: 500, 421
CONT
S: önceki komuta bağlıdır
F: önceki komuta bağlıdır
E: 500, 501, 502, 504, 421
ABRT
S: 201
E: 500, 501, 502, 504, 421
5.4. DURUM DİYAGRAMLARI
Aşağıda çok basit bir MTP uygulaması için durum diyagramları verilmiştir. Yanıt kodlarının yalnızca ilk basamağı kullanılır. Her MTP 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 aynı modellere sahip komutlar bir araya getirilerek belirlenmiştir.
Her komut için üç olası sonuç vardır: "success" (S), "failure" (F) ve "error" (E). Aşağıdaki durum diyagramlarında "B" sembolü "begin" (başla) anlamına gelir ve "W" sembolü "yanıt bekle" anlamına gelir.
Önce, MTP komutlarının çoğunu temsil eden diyagram:
1,3 +---+
----------->| E |
| +---+
|
+---+ cmd +---+ 2 +---+
| B |---------->| W |---------->| S |
+---+ +---+ +---+
|
| 4,5 +---+
----------->| F |
+---+
Bu diyagram şu komutları modeller:
HELP, MRCP, MRSQ, NOOP, QUIT, ABRT.
Daha karmaşık bir diyagram MAIL komutunu modeller:
ABRT +---+ 1,3
CONT ---- ------------->| W |-------
| | +---+ |
| |1 4,5| |2 V
+---+ cmd -->+---+ 2 | | +---+
| B |---------->| W |-------------------->| E |
+---+ +---+ ------------>+---+
3| |4,5 | | |
| | | | |
-------------- ------ | | |
| | | | ---->+---+
| ----------------------->| S |
| | | | | +---+
| | -------- |
| | | | |
V 2| |1,3 | |
+---+ text +---+ | ------->+---+
| |---------->| W | --------------->| F |
+---+ +---+-------------------->+---+
4,5
Buradaki "text" bölümünün, göndericiden alıcıya gönderilen ve son satır gönderilene kadar herhangi bir yanıt beklenmeyen bir dizi satırdan oluştuğuna dikkat edin.
5.5. AYRINTILAR
5.5.1. ASGARİ UYGULAMA
MTP'nin çalışabilir olması için tüm alıcılar için aşağıdaki asgari uygulama gereklidir:
COMMANDS -- MAIL
QUIT
NOOP
5.5.2. ŞEFFAFLIK
Veri şeffaflığı için bir düzenleme yapılmadığında "
Gönderici-MTP bir posta metni satırı göndermeden önce satırın ilk karakterini kontrol eder. Eğer bu karakter bir nokta ise satırın başına bir nokta daha eklenir.
Alıcı-MTP tarafından bir posta metni satırı alındığında satır kontrol edilir. Satır yalnızca tek bir noktadan oluşuyorsa bu posta metninin sonudur. Eğer ilk karakter nokta ise ve satırda başka karakterler de varsa ilk karakter silinir.
5.5.3. BOYUTLAR
Tanımlı azami boyutlara sahip olması gereken birkaç nesne vardır.
kullanıcı
Bir kullanıcı adının toplam maksimum uzunluğu 40 karakterdir.
host
Bir host adının veya numarasının toplam maksimum uzunluğu 20 karakterdir.
path
Bir gönderici yolu (sender-path) veya alıcı yolu (receiver-path) için toplam maksimum uzunluk 100 karakterdir.
komut satırı
Komut sözcüğü ve
yanıt satırı
Yanıt kodu ve
metin satırı
Mümkün olan en geniş ölçüde, bu nesnelerin uzunluğuna hiçbir sınır koymayan uygulama teknikleri kullanılmalıdır.
EK A
TCP Taşıma Hizmeti
Transmission Control Protocol [1], ARPA Internet’te ve ağlar arası protokoller için ABD DoD standartlarını izleyen herhangi bir ağda kullanılır.
Bağlantı Kurulumu
MTP iletim kanalı, gönderici 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 hizmet portu 57 (sekizlik 71) atanmıştır, yani L = 57.
Veri Aktarımı
TCP bağlantısı 8 bitlik baytların iletimini destekler. MTP verisi 7 bitlik ASCII karakterlerinden oluşur. Her karakter, en yüksek anlamlı biti sıfıra ayarlanmış 8 bitlik bir bayt olarak iletilir.
EK B
NCP Taşıma Hizmeti
ARPANET Host-to-Host Protocol [2] (Network Control Program tarafından uygulanır) ARPANET’te kullanılabilir.
Bağlantı Kurulumu
MTP iletim kanalı, gönderici süreç soketi U ile alıcı süreç soketi L arasında NCP aracılığıyla kurulur. Initial Connection Protocol [3] izlenir ve bunun sonucunda bir çift tek yönlü bağlantı oluşur. Bu bağlantı çifti iletim kanalı olarak kullanılır. Bu protokole temas soketi 57 (sekizlik 71) atanmıştır, yani L = 57.
Veri Aktarımı
NCP veri bağlantıları 8 bit bayt modunda kurulur. MTP verisi 7 bit ASCII karakterlerinden oluşur. Her karakter, en yüksek anlamlı biti sıfıra ayarlanmış 8 bitlik bir bayt olarak iletilir.
EK C
NITS
Network Independent Transport Service [4] kullanılabilir.
Bağlantı Kurulumu
MTP iletim kanalı, gönderici süreç ile alıcı süreç arasında NITS aracılığıyla kurulur. Gönderici süreç CONNECT ilkelini yürütür ve bekleyen alıcı süreç ACCEPT ilkelini yürütür.
Veri Aktarımı
NITS bağlantısı 8 bitlik baytların iletimini destekler. MTP verisi 7 bit ASCII karakterlerinden oluşur. Her karakter, en yüksek anlamlı biti sıfıra ayarlanmış 8 bitlik bir bayt olarak iletilir.
EK D
X.25 Taşıma Hizmeti
Public Data Networks tarafından sağlanan X.25 hizmetinin [5] doğrudan kullanılması mümkün olabilir, ancak güvenilir bir kanal olarak nitelendirilemeyecek 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 uygun olacağı önerilir.
EK E
Yanıt Kodları Kuramı
Her yanıtın üç basamağının da özel bir anlamı vardır. İlk basamak, yanıtın iyi, kötü veya eksik olup olmadığını belirtir. Basit bir gönderici-MTP, 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 meydana geldiğini bilmek isteyen bir gönderici-MTP (örneğin posta sistemi hatası, komut sözdizimi hatası) ikinci basamağı inceleyebilir; üçüncü basamak ise bilginin en ayrıntılı düzeyde ayrımını sağlar.
Yanıt kodunun ilk basamağı için beş değer vardır:
1yz — Pozitif Ön Yanıt
Komut kabul edilmiştir, ancak istenen işlem bu yanıttaki bilginin doğrulanması beklenerek askıda tutulmaktadır. Gönderici-MTP işlemin devam edip etmeyeceğini veya iptal edilip edilmeyeceğini belirten başka bir komut göndermelidir.
2yz — Pozitif Tamamlama Yanıtı
İstenen işlem başarıyla tamamlanmıştır. Yeni bir istek başlatılabilir.
3yz — Pozitif Ara Yanıt
Komut kabul edilmiştir, ancak istenen işlem daha fazla bilginin alınması beklenerek askıda tutulmaktadır. Gönderici-MTP bu bilgiyi belirten başka bir komut göndermelidir. Bu yanıt komut dizisi gruplarında kullanılır.
4yz — Geçici Negatif Tamamlama Yanıtı
Komut kabul edilmemiştir ve istenen işlem gerçekleşmemiştir. Bununla birlikte hata durumu geçicidir ve işlem yeniden istenebilir. Gönderici komut dizisinin başına geri dönmelidir (varsa). İki farklı site (alıcı ve gönderici MTP’ler) yorum üzerinde anlaşmak zorunda olduğundan “geçici” kavramına bir anlam atamak zordur. Bu kategorideki her yanıt farklı bir zaman değerine sahip olabilir, ancak gönderici-MTP’nin yeniden 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önderici ya da alıcının özelliklerinde herhangi bir değişiklik yapılmadan yanıt tekrar edilebiliyorsa (örneğin komut aynen tekrar edilir; alıcı yeni bir uygulama kurmaz), yanıt 4yz olarak değerlendirilir.
5yz — Kalıcı Negatif Tamamlama Yanıtı
Komut kabul edilmemiştir ve istenen işlem gerçekleşmemiştir. Gönderici-MTP’nin aynı isteği (aynı dizide) tekrar etmesi önerilmez. Yine de bazı “kalıcı” hata durumları düzeltilebilir; bu nedenle insan kullanıcı, örneğin yazım değiştirildikten veya kullanıcı hesap durumu değiştirildikten sonra, gelecekte bir noktada komut dizisinin yeniden başlatılması için gönderici-MTP’yi doğrudan yönlendirmek isteyebilir.
İkinci basamak yanıtları belirli kategorilerde kodlar:
x0z — Sözdizimi
Bu yanıtlar sözdizimi hatalarına, sözdizimi açısından doğru olup hiçbir işlevsel kategoriye uymayan komutlara ve uygulanmamış ya da gereksiz komutlara atıfta bulunur.x1z — Bilgi
Bunlar durum veya yardım gibi bilgi taleplerine verilen yanıtlardır.x2z — Bağlantılar
Bunlar iletim kanalına ilişkin yanıtlardır.x3z — Henüz belirtilmemiş.
x4z — Henüz belirtilmemiş.
x5z — Posta sistemi
Bu yanıtlar, alıcı posta sisteminin istenen aktarım veya diğer posta sistemi işlemleri karşısındaki durumunu gösterir.
Üçüncü basamak, ikinci basamak tarafından belirtilen her kategori içinde daha ayrıntılı bir anlam derecelendirmesi sağlar. Yanıtların listesi bunu gösterir. Her yanıt metni öneri niteliğindedir, zorunlu değildir ve hatta ilişkili olduğu komuta göre değişebilir. Buna karşılık yanıt kodları bu bölümdeki tanımlara kesin olarak uymalıdır.
Alıcı uygulamaları burada açıklanan durumlardan biraz farklı durumlar için yeni kodlar geliştirmemeli, bunun yerine zaten tanımlanmış kodları uyarlamalıdır.
Örneğin, NOOP gibi başarılı yürütülmesi gönderici-MTP’ye yeni bir bilgi sağlamayan bir komut 200 yanıtını döndürür. Komut uygulanmamış ve siteye özgü olmayan bir işlem talep ediyorsa yanıt 502 olur. Bunun daha ayrıntılı bir biçimi, uygulanmış fakat uygulanmamış bir parametre talep eden komut için verilen 504 yanıtıdır.
Yanıt metni tek bir satırdan daha uzun olabilir. Bu durumlarda gönderici-MTP’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ın biçimi, son satır hariç her satırın yanıt kodu ile başlamasını, hemen ardından bir tire "-" (eksi işareti) gelmesini ve sonra metnin bulunmasını gerektirir. Son satır ise yanıt kodu ile başlar, hemen ardından
Örnek:
123-First line
123-Second line
123-234 text beginning with numbers
123 The last line
Gönderici-MTP daha sonra yalnızca satırın başında yanıt kodu ve ardından
SÖZLÜK
ASCII
American Standard Code for Information Interchange [6].
komut
Gönderici-MTP tarafından alıcı-MTP’ye gönderilen ve bir posta hizmeti işlemi talep eden istek.
host
Ağlar arası ortamda posta kutularının veya MTP süreçlerinin bulunduğu bir bilgisayar.
satır
posta
RFC 733’te tanımlanan standarda uyan, keyfi uzunlukta ASCII karakterlerinden oluşan bir dizi (Standard for the Format of ARPA Network Text Messages [7]).
posta kutusu
Postanın gönderileceği kullanıcıyı tanımlayan bir karakter dizisi (adres). Posta kutusu normalde host ve kullanıcı tanımlarından oluşur. Standart posta kutusu adlandırma kuralı "user@host" biçimindedir. Ayrıca postanın saklandığı "kapsayıcı" anlamına da gelir.
alıcı-MTP süreci
Bir gönderici-MTP süreci ile iş birliği içinde posta aktarımı yapan bir süreçtir. Taşıma hizmeti aracılığıyla bağlantı kurulmasını bekler. Gönderici-MTP’den MTP komutlarını alır, yanıtlar gönderir ve posta aktarımını yönetir.
yanıt
Yanıt, bir MTP komutuna karşılık olarak alıcıdan göndericiye iletim kanalı üzerinden gönderilen bir onaydır (pozitif veya negatif). Yanıtın genel biçimi, bir tamamlama 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.
gönderici-MTP süreci
Bir alıcı-MTP süreci ile iş birliği içinde posta aktarımı yapan bir süreçtir. Kullanıcı arayüzündeki komut/yanıt diyaloğunda yerel bir dil kullanılabilir. Gönderici-MTP taşıma hizmeti bağlantısını başlatır. MTP komutlarını başlatır, yanıtları alır ve posta aktarımını yönetir.
iletim kanalı
Komutların, yanıtların ve posta metninin değişimi için gönderici-MTP ile alıcı-MTP arasında bulunan tam çift yönlü iletişim yolu.
taşıma hizmeti
Herhangi bir güvenilir akış yönelimli veri iletişim hizmeti. Örneğin: NCP, TCP, NITS.
kullanıcı
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ı.
sözcük
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ı.
Carriage return ve line feed karakterleri (bu sırayla).
Boşluk karakteri.
KAYNAKLAR
[1] TCP
Postel, J., ed., "DOD Standard Transmission Control Protocol", IEN 129, RFC 761, USC/Information Sciences Institute, NTIS ADA082609, Ocak 1980. Şurada yayımlandı: Computer Communication Review, Special Interest Group on Data Communications, ACM, Cilt 10, Sayı 4, Ekim 1980.
[2] 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, Menlo Park, California, Gözden geçirilmiş baskı Ocak 1978.
[3] 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, Menlo Park, California, Gözden geçirilmiş baskı Ocak 1978.
[4] NITS
PSS/SG3, "A Network Independent Transport Service", Study Group 3, The Post Office PSS Users Group, Şubat 1980. DCPU, National Physical Laboratory, Teddington, Birleşik Krallık üzerinden temin edilebilir.
[5] 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, Cenevre, 1976.
[6] 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, Menlo Park, California, Gözden geçirilmiş baskı Ocak 1978.
[7] 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, Menlo Park, California, Gözden geçirilmiş baskı Ocak 1978.