Ek olarak ne kabul edilir?
Bir mesaj, parçalardan oluşan bir ağaçtır ve bunların yalnızca bir kısmı dosyadır. Buradaki kural bilerek gevşek tutulmuştur, çünkü alternatifi — gönderenin her şeyi doğru etiketleyeceğine güvenmek — bir posta istemcisinin göstereceği ekleri sessizce kaybeder:
- Öyle işaretlenmiş her şey
Content-Dispositionalanıattachmentdiyen bir parça. Sıradan durum budur ve her posta istemcisinin üzerinde anlaştığı da budur.- Bir dosya adı taşıyan her şey
- Üzerinde bir
filenameolan bir parça, başka nasıl etiketlenmiş olursa olsun. Gönderenler sürekli yanlış etiketler ve adı olan bir dosya, bir dosyadır. - Metin olmayan, adlandırılmış parçalar
- Türü
text/…olmayan, üzerinde birnamebulunan bir parça. HTML imzasındaki logoyu yakalayan da budur — yani bir mesaj, sizin beklemediğiniz ve gönderenin hiç ek olarak düşünmediği eklerle gelebilir.
Bu yüzden gördüğünüz sayı, çoğu zaman gönderenin aklındaki sayıdan daha yüksektir. Bir mesajın tutabileceği en fazla ek sayısı yirmidir; bundan fazla dosya adlı parça taşıyan bir mesaj ilk yirmisini tutar, kalanını düşürür — bunun üzerine bir şey inşa etmeden önce bilinmeye değer.
Hattan gelen bir dosya adı asla bir yol (path) olarak kullanılmaz. Dosya, üretilmiş bir ad altında yazılır ve özgün ad, yanında veri olarak taşınır — böylece bir gönderen, dosyasına içinde eğik çizgi olan bir ad vererek onun nereye yazılacağını seçemez.
Boyut sınırı gerçekte nereye düşer?
Yayımlanan sayı 5 MB'dır ve neyi ölçtüğü konusunda kesin olmakta fayda var: kodlanmış mesajın tamamı. Ek değil, eklerin toplamı da değil — MIME kodlaması onu zaten büyütmüşken, gönderen sunucunun teslim ettiği her şey.
Base64 — bir ikilinin, metin için tasarlanmış bir protokolden nasıl geçtiği — her üç baytı dörde çevirir. İhtiyaç duyduğu satır sonlarını da eklediğinizde bir dosya, diskteki hâlinden yaklaşık üçte bir daha büyük ulaşır, bunlar sayıldığında biraz daha fazla. 5 MB'dan geriye doğru hesaplandığında gerçek sınır, yaklaşık 3,5 MB'lık bir dosyaya karşılık gelir; bir imza ve bir HTML parçası taşıyan bir mesajda bu daha da düşer.
- Ne ölçülür
- Başlıklar, metin parçası, HTML parçası ve her ek — hepsi kodlamadan sonraki hâliyle.
- İleti başına ekler
- Yirmi. Pratikte boyut sınırına önce ulaşılır.
- Metin parçaları
- Çözümlemeden sonra her biri en fazla 2 MiB tutulur. Bundan uzun bir gövde kırpılmış olarak saklanır — sıradan hiçbir posta buna yaklaşmaz, ama otomatik üretilen bir rapor yaklaşabilir.
Dosya çok büyükse ne olur?
Herhangi bir şey saklanmadan önce, SMTP görüşmesi sırasında kapıda reddedilir. Boyutu baştan bildiren bir gönderen sunucu anında geri çevrilir ve görüşme yaklaşık şöyle sona erer:
>>> MAIL FROM:<news@example.com> SIZE=7602176
<<< 552 5.3.4 Message size exceeds fixed limitBu, göründüğünden daha önemlidir. Mesajı kabul edip sonradan düşüren bir hizmet, gönderenin mesajın teslim edildiğine inanmasına ve sizin de asla gelmeyecek bir şeyi beklemenize yol açardı. SMTP anındaki bir ret, gerçek bir kişiye bildirilen gerçek bir hatadır: gönderen, nedeniyle birlikte bir geri çevirme bildirimi alır.
Boyutu önceden bildirmeyen bir gönderen, aynı yanıtı bu kez mesajın sonunda alır — posta sunucusu baytları kendisi saydıktan sonra. Her iki durumda da posta kutusuna hiçbir şey düşmez ve hiçbir şey kırpılmış olarak ulaşmaz.
Dosya gelen kutusundan nasıl indirilir?
Tarayıcıda, beklediğiniz yerdedir. Mesajı açın; ekler altında listelenir — her biri gönderenin verdiği adla ve gerçekte ulaşan boyutla birlikte.
- Mesajı açın. Liste kendiliğinden yenilenir, bu yüzden siz posta kutusuna bakarken gelen bir dosya, sayfa yenilenmeden görünür.
- Tıklamadan önce adı ve boyutu okuyun. İkisi de gelen şey hakkındaki gerçeklerdir ve dosya makinenize inmeden önce göreceğiniz son şeydir.
- Üzerine tıklayın. Dosya indirilir. Ne olduğunu iddia ederse etsin, tarayıcıda asla açılmaz — bir sonraki bölüm bunun bir eksiklik değil, bir özellik olduğunu anlatıyor.
Mesaj gövdesindeki uzak görseller, siz istemediğiniz sürece engellenir ve bu, bir ekten farklı bir şeydir: engellenmiş bir görsel, izin verdiğiniz an gönderenin kendi sunucusundan çekilir; bir ek ise mesajla birlikte gelmiştir ve kimseden çekilmez.
API üzerinden bir ek nasıl indirilir?
Bir mesajı okumak, eklerini bir liste olarak döndürür ve her biri, kendisi için önceden oluşturulmuş bir URL ile birlikte gelir:
"attachments": [
{
"id": "01JR8W2K4QATT1",
"filename": "invoice.pdf",
"mime": "application/pdf",
"size": 184320,
"url": "/api/v1/attachment/01JR8W2K4QATT1?mailbox=k7fq2m%40grabmail.io"
}
]Bu URL, posta kutusunu sorgu parametresi olarak alan sade bir GET'tir ve genel alan adlarında başka hiçbir şeye ihtiyaç duymaz — ne anahtar, ne oturum, ne hesap:
curl -OJ "https://grabmail.io/api/v1/attachment/01JR8W2K4QATT1?mailbox=k7fq2m%40grabmail.io"-OJ, curl'e dosyayı kimlik yerine sunucunun gönderdiği adla kaydetmesini söyler. Uç nokta üç şeyden birini yanıtlar: dosyanın kendisini; o posta kutusunda böyle bir ek yoksa ya da süresi dolmuşsa bir 404'ü; ya da saniyede birden fazla istekte bulunuyorsanız bir 429'u.
Bir ek kimliği, kendi posta kutusuna özeldir; bu yüzden bir adresten alınan kimlik, başka bir adreste 404 verir. Ekleri tek başına listeleyen bir uç nokta yoktur — mesajlarıyla birlikte gelirler ve mesajdan okunurlar. API referansı, bir mesaj yanıtının tam biçimini içerir.
Her dosya neden bir ikili olarak indirilir?
Gönderen dosyasının ne olduğunu söylerse söylesin, dosya application/octet-stream olarak geri gelir ve açılmak yerine indirilir. Bu, içerik türlerine karşı bir özensizlik değildir — dosya bir yabancıdan geldiğinde tek güvenli yanıt budur.
- Gönderenin türü asla aynen yansıtılmaz
- Dosyasını
text/htmlolarak etiketleyip bunu bizim kaynağımızda görüntületen biri, sayfasını bizim kimliğimizle, sizin oturumunuzda ve bunun erişebildiği her şeyle çalıştırıyor demektir. Bu yüzden etiket atılır ve dosyanın ne olduğuna, çağıran taraf yanındaki üst veriye bakarak kendisi karar verir. - Her zaman indirme, asla görüntüleme
- Her yanıtta
Content-Disposition: attachmentbulunur, bu yüzden nasıl etiketlenmiş olursa olsun hiçbir şey yerinde görüntülenmez. - Tahmin yok, çalıştırma yok
X-Content-Type-Options: nosniff, tarayıcının bir tür tahmin etmesini engeller;default-src 'none'; sandboxşeklindeki birContent-Security-Policyise bir şey görüntülense bile hiçbir şey yükleyemeyeceği ve hiçbir şey çalıştıramayacağı anlamına gelir.- Dosya adı bir başlığa dönüşemez
- Ad, yanıta doğrudan yapıştırılmak yerine kodlanır; bu yüzden içinde bir satır sonu bulunan bir adla adlandırılmış dosya, kendi seçtiği bir başlığı ekleyemez.
Dosyanın kendisi dokunulmamıştır — bayt bayt, gönderenin gönderdiği hâliyle. Bilerek sıkıcı tutulan, onun etrafındaki çerçevedir. Dosya ayrıca web kök dizininin dışında saklanır, bu yüzden bir yol tahmin etmek içeri girmenin bir yolu değildir: dosya okunmadan önce posta kutusunun çözümlenmesi ve yetkilendirilmesi gerekir.
Ekler burada taranıyor mu?
Ne bir antivirüs, ne bir korumalı alanda patlatma, ne de bir itibar kontrolü vardır. Bu bir gözden kaçma değil, açıkça belirtilmiş bir sınırdır ve gelenle güvenle ne yapabileceğinizi değiştirir:
- Genel bir adrese herkes gönderebilir. Sizi tanımaları gerekmez — adresi bilmeleri yeter, kısa adresler de tahmin edilir. Genel bir posta kutusundaki bir dosyanın yazarı varsayılan olarak bilinmezdir.
- Çalıştırılabilir dosyalar ve betikler burada da tıpkı her yerdeki kadar tehlikelidir. Hiçbir şey uzantısına göre filtrelenmez ve hiçbir şey bir arşivin içine bakıp ne olduğunu görmez.
- Bir şeyler çalıştırabilen belgeler asıl yaygın durumdur. Bunun büyük kısmı, açıkça çalıştırılabilir dosyalarla değil, makro içeren ofis dosyaları ve gömülü eylemleri olan PDF'lerle olur.
- Ad size hiçbir şey söylemez.
invoice.pdfadlı bir dosya, baytlarının söylediği her neyse odur; uzantıyı seçen, onu gönderen kişidir.
Dosyalar mesajla birlikte ne zaman gider?
Bir ekin kendine ait bir ömrü yoktur. Ait olduğu mesaja bağlıdır ve mesaj gittiğinde o da gider:
- 5 gün sonra
- Okunmuş olsun olmasın, geldiği andan itibaren işleyen bir sayaçla, mesajla birlikte silinir. Ne arşiv ne de dışa aktarma vardır.
- Mesajı sildiğinizde
- Anında, ve URL bir
404'e döner. İster gelen kutusundan ister API üzerinden silin, çağrı aynıdır. - Geri dönüşü yoktur
- Silmeyi geri alma, ek süre ya da sorabileceğiniz bir destek posta kutusu yoktur. Yarın isteyeceğiniz her şeyin bugün indirilmiş olması gerekir.
E-posta ne zaman yanlış araçtır?
İnsanların eklerle burada yapmaya çalıştığı bazı şeyler, aşılması gereken bir sınır değildir — işe uygun olmayan bir araçtır:
- Sınırın üzerinde bir dosya. Hiçbir şey onu yükseltmez. Bunun yerine bir bağlantı gönderin.
- Önümüzdeki ay ihtiyaç duyacağınız bir şey. 5 gün, bir ayar değil, bir iş tarafından uygulanan kesin bir sınırdır. Onu şimdi alın ya da gerçek bir posta kutusu kullanın.
- Bir yabancının okumasını istemeyeceğiniz her şey. Genel bir alan adında kapının tek kilidi adrestir, o da kısa bir kilittir.
Kendi alan adınız bunlardan üçüncüsünü değiştirir, ilk ikisini değiştirmez: sınır ve saklama süresi tıpatıp aynıdır, ama adres bu sitede hiçbir yerde görünmeyen bir ad üzerindedir, bu yüzden kimse ona tahmin yoluyla dosya göndermez. Bunu tek bir MX kaydı sağlar:
Alan adınız için MX kaydı10 smtp.grabmail.io
Adım adım tam anlatım burada — kayıt, onu yayımlamanın neyi kanıtladığı ve parolası olmayan bir posta kutusunun gerçek sınırları.
Sorular
En büyük ek boyutu nedir?
Kodlanmış mesajın tamamı için 5 MB — posta sunucusunun gerçekte uyguladığı sayı budur. Base64, bir ikiliyi yaklaşık üçte bir oranında büyüttüğü için bu, yaklaşık 3,5 MB'lık bir dosyaya karşılık gelir; mesajın bir gövdesi ve bir imzası olduğunda bu daha da düşer.
Hangi dosya türlerini alabilirim?
Hepsini. Hiçbir şey türüne, uzantısına ya da içeriğine göre filtrelenmez ya da reddedilmez, ve içine bakmak için hiçbir şey açılıp incelenmez. Bir mesajı geri çevirten tek şey boyutudur.
Ekleri virüse karşı tarıyor musunuz?
Hayır. Ne bir antivirüs ne de herhangi bir tarama vardır. İndirdiğiniz dosya, gönderenin gönderdiği hâliyle bayt bayt aynıdır; açıp açmamaya karar vermek size kalır.
Her ek neden application/octet-stream olarak iniyor?
Çünkü bir yabancının bildirdiği içerik türünü aynen yansıtmak, bir dosyanın bizim kaynağımızda, sizin oturumunuzda çalışan bir sayfaya dönüşmesinin yoludur. Gerçek tür, dosyanın yanındaki mesaj üst verisindedir; indirmenin kendisi bilerek anonim tutulur ve tarayıcıda asla görüntülenmez.
Bir mesaj en fazla kaç ek taşıyabilir?
Yirmi. Bundan fazla parça taşıyan bir mesaj ilk yirmisini tutar. Pratikte boyut sınırına, sayı sınırından çok önce ulaşılır.
Bir eki API üzerinden indirebilir miyim?
Evet. Bir mesaj yanıtındaki her ek, hazır bir URL ile birlikte gelir; onu almak, posta kutusunu parametre olarak alan sade bir GET'tir. Genel alan adlarında hiçbir anahtar gerekmez.
Ekler ne kadar süre kalır?
Mesajları kadar: varışlarından itibaren 5 gün, ardından mesajla birlikte silinir. Mesajı kendiniz silerseniz dosya da anında kalkar.
Ekim hiç gelmedi, neden?
Ya mesaj 5 MB'ın üzerindeydi ve kapıda reddedildi — bu durumda gönderende bunu açıklayan bir geri çevirme bildirimi vardır — ya da parça bir dosya adı ve ek düzeni taşımıyordu ve gövdenin bir parçası olarak okundu. Geri kalan her şeyi gelmeyen posta rehberi kapsıyor.
Tek kullanımlık bir adresten dosya gönderebilir miyim?
Hayır. Bu hizmet yalnızca alır, hiçbir gönderme uç noktası yoktur — kimliği doğrulanmamış bir posta kutusunun, yabancılara dosya göndermenin kolay bir yolu hâline gelmesini engelleyen de tam olarak budur.

