Ağ Postası için Adres Belirtim Sözdizimi
Network Working Group
D. Crocker (ISI)
Request for Comments: 720
NIC #36337
Ağu 1976
Referanslar: RFC #680
Arpanet üzerinde posta işleme deneyimi, aşağıdakiler de dahil olmak üzere birçok adresleme sorununu ortaya çıkarmıştır:
- İnsanların adları, adresleriyle aynı değildir;
- Posta listeleri oldukça uzun olabilmektedir;
- Yanıt vermeye izin vermek için iletilerin çoğu zaman tüm posta listelerini kendileriyle birlikte taşıması gerekir;
- Bir kişinin birincil posta kutusu dışında dosyalara da posta gönderebilmek çok yararlı olacaktır.
RFC 680'de belirtilen mevcut posta sözdizimi, bir kişinin adı ile posta adresi arasında ayrım yapmak için uygun bir mekanizma sağlamaz. Paylaşılan dizinler söz konusu olduğunda ATTN: ifadesi kısmen yeterlidir; ancak adres belirtiminin yalnızca anlaşılması güç olduğu tek kullanıcılı posta kutuları için tamamen uygun değildir. CMU'nun tanımlama etiketleri bu soruna iyi örneklerdir; çünkü genellikle rastgele karakter dizileri gibi görünürler. Baş harflerin etiket olarak kullanılması da bu sorunu açıkça göstermektedir.
Adreslerin göndergesel belirsizliğinden kuşku duyuyorsanız, o hâlde rastgele kişisel bilgi yerine yalnızca sunulan bilgileri kullanarak Micro@ISI, JFH@ISI veya Greep@ISD adreslerinin kimlere ait olduğunu belirlemeyi deneyin. Adları ve adresleri ayrı ayrı belirtmek için resmi bir sözdizimine sahip olunması sayesinde posta görüntüleme yazılımı yalnızca insan adlarını içeren ad listeleri yazdırabilir. Bu da işleri daha kullanıcı dostu hâle getirir.
Uzun posta listeleriyle ilgili sorun, bir iletinin metni içine eklendiklerinde çoğu zaman iletinin ana bölümünden daha uzun olmalarıdır. Adres alanlarında grup adlarının kullanılmasına öncelikle bu sorunu aşmak için izin verilmiştir. Ancak yarı otomatik ileti yanıtlama sistemlerinin ortaya çıkışıyla birlikte — yani alıcının ileti sistemi, yanıt iletileri için adres listelerini özgün iletiden uygun alanları kopyalayarak hazırladığında — mevcut mekanizma yetersiz kalmaktadır: grup adının bulunması, alıcının grubun üyelerinin adlarına/adreslerine sahip olmadığı anlamına gelir.
Şu anda genellikle uygulanan bir gelenek, grup adının listeyi içeren dosyanın bir yol adı olmasıdır. Kolaylaştırıcı olsa da bu yeterli bir çözüm değildir.
Son olarak tek bir kullanıcı için birden fazla posta kutusu konusu vardır. Bu özellik muhtemelen telekonferans uygulamaları açısından en büyük potansiyele sahiptir; böylece devam eden bir tartışmaya ait iletiler otomatik olarak ayrı bir posta kutusuna yerleştirilebilir. Paylaşılan dizinler söz konusu olduğunda bu mekanizma ayrıca iletilerin her kişinin kendi posta kutusuna kolayca yönlendirilmesine de olanak tanır.
Bu gereksinimler göz önünde bulundurularak ve daha güçlü bir posta sözdizimi ile protokolü belirtilene kadar, kullanıcının belirttiği adres alanları için RFC 680'de tanımlanan mevcut sözdizimini genişletmek amacıyla aşağıdaki genel sözdizimi önerilmektedir:
Name:(Person(User-Id(Mailbox) at Host),...),; ...
Burada:
- "Name" posta listesinin adıdır.
- "Person" postayı alan kişinin adı olarak kabul edilir.
- "User-Id" çevrimiçi başvuru adıdır (genellikle oturum açma dizini).
- "Mailbox" ikincil bir posta kutusu/dosyadır.
Geri kalan kısım RFC 680 ile uyumludur; ancak belirtimde " at " yerine "@" kullanılabilir.
Parantezler diğer köşeli ayraç çiftleriyle ([], {}, <>) değiştirilebilir. Dize boşluk veya parantez gibi belirsizlik oluşturabilecek karakterler içerdiğinde tırnak işaretleri kullanılmalıdır. Name sonrasındaki köşeli ayraçlar, adres listesinin iletiden hariç tutulmasını talep etmek ve bunun yerine listenin kaynağına giden yol adını veren bir metnin kullanılmasını sağlamak için kullanılır.
Gerçekte gönderilen ağ postası içindeki adres belirtiminin resmi sözdizimi bir sonraki bölümde verilmiştir.
Bir belirtimin tüm parçalarının bulunması gerekmez; bu nedenle bazı örnekler konuyu açıklığa kavuşturabilir:
Şu anda kullanılan normal bir belirtim:
Walker at ISI
İletiyle birlikte taşınacak adlandırılmış bir liste; son adres listenin üyesi değildir:
List:Walker at ISI, greep@rand-isd; Action@ISI
İletiyle birlikte taşınmayacak adlandırılmış bir liste; liste içeriği, listenin kaynağını belirten bir metin dizgesiyle değiştirilecektir. Liste kullanıcı tarafından elle yazılmışsa, bir dosyadan alınmadığı için bu çok kullanışlı değildir. Bu nedenle:
List:(Walker@ISI, greep at rand); Action at ISI
iletide şu şekilde görünecek biçimde değiştirilecektir:
List:("/rnd/dcrocker/mail.list"); Action at ISI
Adreslerden ayrı kişisel adlar içeren bir liste:
"Steve Walker"[Walker at ISI], Bob<rha@isd>
Bir telekonferans adres listesi:
Talkers:"Dave C"(DCrocker(TC.msg)@isi), ...;
Resmi Belirtim
Aşağıdaki değiştirilmiş BNF, RFC 680 içindeki belirtimlere doğrudan ekleme/değiştirme olarak kullanılacaktır. Mevcut belirtimden kaldırılan alanlar şunlardır:
<addressee item><address list><addressee><mailbox><host spec><attention spec><user list><mailbox group><group numbers><mailbox list>
<Attention spec>, kişinin adı ve ikincil dosya belirtimi kullanılarak gerçekleştirilebilir.
Ayrıca <Sender> şu şekilde değiştirilmelidir:
Sender = "SENDER: " Individual
Ve eklenen alanlar şunlardır:
Address-Field = Address-List / Address-List ,,:,
Address-Field
Address-List = Individual-List / Group-List
Group-List = Group-Name Group-Members
Group-Name = / Name ":"
Group-Members = Individual-List /
L-Bracket Pathname R-Bracket
Pathname = {En azından bir insanın
Group-List içeren dosyayı
bulmasına yetecek kadar bilgi
sağlayabilen bir ad}
Individual-List = Individual /
Individual Individual-List
Individual = Mailbox /
Name L-Bracket Mailbox R-Bracket
L-Bracket = "(" / "[" / "{" / "<"
R-Bracket = ")" / "]" / "}" / ">"
Mailbox = Id Secondary-File At Host
Id = Name
At = " at " / "@"
Host = {Kabul edilebilir bir ana bilgisayar adı}
Secondary-File = /
L-Bracket Filename R-Bracket
Filename = Name
Name = {Carriage return, satır sonu, boşluk,
'"', ',', ';' veya herhangi bir
L-Bracket ya da R-Bracket içermeyen
bir ASCII dizgesi}
/ '"' {Herhangi bir çift tırnak işaretinin
iki kez yazıldığı bir ASCII dizgesi} '"'
Kullanılan L-Bracket ve R-Bracket karakterlerinin birbirleriyle eşleşmesi gerekir. Yazılım gereksinimlerini basitleştirmek amacıyla tırnak işareti gerekliliği kesin olarak gerekenden biraz daha katı tutulmuştur. Ayrıca yukarıda belirtilen sözdiziminin, varlıklar arası iletişim için olduğu ve kullanıcının yazdığı biçimi mutlaka yansıtmak zorunda olmadığı da unutulmamalıdır.