Was als Anhang ankommt
Eine Nachricht ist ein Baum aus Teilen, und nur einige davon sind Dateien. Die Regel hier ist bewusst großzügig, denn die Alternative — sich darauf zu verlassen, dass Absender alles korrekt kennzeichnen — würde stillschweigend Anhänge verlieren, die ein Mail-Client angezeigt hätte:
- Alles, was als solcher markiert ist
- Ein Teil, dessen
Content-Dispositionattachmentlautet. Der Normalfall, und der einzige, auf den sich jeder Mail-Client einigt. - Alles mit einem Dateinamen
- Ein Teil mit einem
filename, unabhängig davon, wie er sonst gekennzeichnet ist. Absender kennzeichnen ständig falsch, und eine Datei mit einem Namen ist eine Datei. - Benannte Teile, die kein Text sind
- Ein Teil mit einem
name, dessen Typ nichttext/…ist. Das fängt zum Beispiel das Logo in einer HTML-Signatur ab — eine Nachricht kann also mit Anhängen ankommen, die Sie nicht erwartet haben und die der Absender nie als Anhänge betrachtet hat.
Die Zahl, die Sie sehen, liegt deshalb oft höher als die, die der Absender im Kopf hatte. Zwanzig ist das Maximum, das eine einzelne Nachricht behält; trägt sie mehr Teile mit Dateinamen als das, bleiben die ersten zwanzig erhalten und der Rest fällt weg — gut zu wissen, bevor Sie etwas darauf aufbauen.
Ein Dateiname aus der Übertragung wird nie als Pfad verwendet. Die Datei wird unter einem generierten Namen gespeichert, und der ursprüngliche Name wird als Datenfeld mitgeführt — ein Absender kann also nicht bestimmen, wo seine Datei landet, indem er sie mit einem Schrägstrich im Namen versieht.
Die Größengrenze, und wo sie wirklich liegt
Die veröffentlichte Zahl ist 5 MB, und es lohnt sich, genau zu sein, was damit gemessen wird: die gesamte kodierte Nachricht. Nicht der Anhang, nicht die Summe der Anhänge — alles, was der sendende Server übergibt, nachdem die MIME-Kodierung es bereits größer gemacht hat.
Base64 — die Art, wie eine Binärdatei ein für Text gebautes Protokoll durchquert — macht aus je drei Byte vier. Zählt man die dafür nötigen Zeilenumbrüche hinzu, kommt eine Datei etwa ein Drittel größer an, als sie auf der Festplatte war, mit diesen ein wenig mehr. Rechnet man von 5 MB zurück, liegt die tatsächliche Grenze bei einer Datei von rund 3,5 MB — und niedriger noch bei einer Nachricht mit Signatur und HTML-Teil.
- Was gemessen wird
- Header, der Textteil, der HTML-Teil und jeder Anhang, jeweils nach der Kodierung.
- Anhänge pro Nachricht
- Zwanzig. In der Praxis wird zuerst die Größengrenze erreicht.
- Textteile
- Werden nach dem Dekodieren bis zu je 2 MiB behalten. Ein längerer Text wird gekürzt gespeichert — das kommt bei gewöhnlicher Mail nicht annähernd vor, bei einem generierten Bericht aber durchaus.
Was passiert, wenn eine Datei zu groß ist
Sie wird schon an der Tür abgewiesen, während der SMTP-Verbindung, bevor irgendetwas gespeichert wird. Ein sendender Server, der die Größe vorab ankündigt, wird sofort abgewiesen, und der Austausch endet etwa so:
>>> MAIL FROM:<news@example.com> SIZE=7602176
<<< 552 5.3.4 Message size exceeds fixed limitDas ist wichtiger, als es aussieht. Ein Dienst, der die Nachricht annimmt und sie danach verwirft, würde den Absender glauben lassen, sie sei zugestellt worden, während Sie auf etwas warten, das nie erscheinen wird. Eine Abweisung zum Zeitpunkt der SMTP-Verbindung ist ein echter Fehlschlag, der einer echten Person gemeldet wird: Der Absender erhält einen Bounce mit dem Grund darin.
Ein Absender, der die Größe nicht vorab ankündigt, bekommt stattdessen dieselbe Antwort am Ende der Nachricht, sobald der Mailserver die Bytes selbst gezählt hat. So oder so landet nichts im Postfach, und nichts kommt gekürzt an.
Eine Datei aus dem Postfach holen
Im Browser ist es dort, wo Sie es erwarten würden. Öffnen Sie die Nachricht, und die Anhänge werden darunter aufgelistet, jeweils mit dem Namen, den der Absender vergeben hat, und der Größe, die tatsächlich angekommen ist.
- Öffnen Sie die Nachricht. Die Liste aktualisiert sich von selbst, sodass eine Datei, die eintrifft, während Sie das Postfach betrachten, ohne Neuladen erscheint.
- Lesen Sie Name und Größe, bevor Sie klicken. Beides sind Fakten über das, was angekommen ist, und das Letzte, was Sie sehen, bevor die Datei auf Ihrem Rechner liegt.
- Klicken Sie darauf. Die Datei wird heruntergeladen. Sie öffnet sich nie im Browser, was auch immer sie vorgibt zu sein — der nächste Abschnitt erklärt, warum das ein Feature ist und kein Mangel.
Externe Bilder im Nachrichtentext werden blockiert, bis Sie sie anfordern, und das ist etwas anderes als ein Anhang: Ein blockiertes Bild wird in dem Moment, in dem Sie es zulassen, vom Server des Absenders geladen, während ein Anhang mit der Nachricht kam und von niemandem geladen werden muss.
Herunterladen über die API
Beim Auslesen einer Nachricht kommen ihre Anhänge als Liste zurück, jeder davon bereits mit der fertigen URL:
"attachments": [
{
"id": "01JR8W2K4QATT1",
"filename": "invoice.pdf",
"mime": "application/pdf",
"size": 184320,
"url": "/api/v1/attachment/01JR8W2K4QATT1?mailbox=k7fq2m%40grabmail.io"
}
]Diese URL ist ein einfaches GET mit dem Postfach als Query-Parameter, und auf den öffentlichen Domains braucht es sonst nichts — keinen Schlüssel, keine Sitzung, kein Konto:
curl -OJ "https://grabmail.io/api/v1/attachment/01JR8W2K4QATT1?mailbox=k7fq2m%40grabmail.io"-OJ weist curl an, die Datei unter dem vom Server gesendeten Namen zu speichern statt unter der ID. Der Endpunkt antwortet mit einer von drei Möglichkeiten: der Datei, einem 404, wenn es diesen Anhang in dem Postfach nicht gibt oder er abgelaufen ist, oder einem 429, wenn Sie öfter als einmal pro Sekunde anfragen.
Eine Anhang-ID gilt nur innerhalb ihres Postfachs, eine ID von einer Adresse ist an einer anderen also ein 404. Es gibt keinen Endpunkt, der Anhänge für sich allein auflistet — sie kommen mit ihrer Nachricht an und werden aus dieser ausgelesen. Die API-Referenz zeigt die vollständige Struktur einer Nachrichten-Antwort.
Warum jede Datei als Binärdatei heruntergeladen wird
Was auch immer der Absender über seine Datei behauptet hat, sie kommt als application/octet-stream zurück und wird heruntergeladen statt geöffnet. Das ist keine Nachlässigkeit bei den Inhaltstypen — es ist die einzig sichere Antwort, wenn die Datei von einem Fremden stammt.
- Der Typ des Absenders wird nie zurückgegeben
- Wer seine Datei als
text/htmlkennzeichnet und sie auf unserer Origin gerendert bekommt, lässt seine eigene Seite als uns laufen, in Ihrer Sitzung, mit allem, was das ermöglicht. Deshalb wird die Kennzeichnung verworfen, und der Aufrufer entscheidet anhand der Metadaten daneben, was die Datei ist. - Immer ein Download, nie eine Ansicht
Content-Disposition: attachmentsteht auf jeder Antwort, sodass nichts an Ort und Stelle gerendert wird, wie auch immer es gekennzeichnet ist.- Kein Erraten, und nichts darf ausgeführt werden
X-Content-Type-Options: nosniffhindert den Browser daran, selbst einen Typ zu erraten, und eineContent-Security-Policyvondefault-src 'none'; sandboxsorgt dafür, dass selbst wenn doch etwas gerendert würde, nichts geladen und nichts ausgeführt werden könnte.- Der Dateiname kann nicht zu einem Header werden
- Der Name wird kodiert statt direkt in die Antwort eingefügt, sodass eine Datei mit einem Zeilenumbruch im Namen keinen eigenen Header einschleusen kann.
Die Datei selbst bleibt unangetastet — Byte für Byte das, was der Absender geschickt hat. Bewusst langweilig ist nur das, was drumherum passiert. Sie wird zudem außerhalb des Webroots gespeichert, sodass das Erraten eines Pfads kein Einstieg ist: Das Postfach muss erst aufgelöst und autorisiert werden, bevor die Datei überhaupt gelesen wird.
Hier scannt nichts die Datei
Es gibt keinen Virenscanner, keine Sandbox-Detonation und keine Reputationsprüfung. Das ist eine erklärte Grenze und kein Versehen, und sie bestimmt, was Sie mit dem, was ankommt, gefahrlos tun können:
- Jeder kann an eine öffentliche Adresse senden. Er muss Sie nicht kennen — er muss die Adresse kennen, und kurze werden erraten. Eine Datei in einem öffentlichen Postfach hat standardmäßig einen unbekannten Urheber.
- Ausführbare Dateien und Skripte sind hier genauso gefährlich wie überall sonst. Nichts wird nach Dateiendung gefiltert, und nichts schaut in ein Archiv hinein, um zu sehen, was darin steckt.
- Dokumente, die etwas ausführen können, sind der häufigste Fall. Office-Dateien mit Makros und PDFs mit eingebetteten Aktionen sind der Weg, auf dem das meiste davon tatsächlich passiert — nicht offensichtliche ausführbare Dateien.
- Der Name sagt nichts aus. Eine Datei namens
invoice.pdfist das, was ihre Bytes hergeben, und die Endung hat sich der Absender ausgesucht.
Dateien verschwinden, wenn die Nachricht verschwindet
Ein Anhang hat kein eigenes Leben. Er gehört zu seiner Nachricht und verschwindet, wenn diese verschwindet:
- Nach 5 Tagen
- Wird mit der Nachricht gelöscht, gelesen oder nicht, nach einer Uhr, die mit der Ankunft zu laufen begann. Es gibt kein Archiv und keinen Export.
- Wenn Sie die Nachricht löschen
- Sofort, und die URL wird zu einem
404. Das gilt gleichermaßen, ob Sie aus dem Postfach oder über die API löschen. - Es gibt kein Zurück
- Kein Wiederherstellen, keine Gnadenfrist und kein Support-Postfach zum Nachfragen. Alles, was Sie morgen brauchen werden, muss heute heruntergeladen werden.
Wenn E-Mail das falsche Werkzeug ist
Manches, was Menschen hier mit Anhängen versuchen, ist keine Grenze, die man umgehen sollte — es ist schlicht das falsche Werkzeug für die Aufgabe:
- Eine Datei über der Grenze. Nichts hebt sie an. Schicken Sie stattdessen einen Link.
- Etwas, das Sie nächsten Monat brauchen. 5 Tage sind eine feste, von einem Job durchgesetzte Grenze, keine Einstellung. Holen Sie es sich jetzt ab, oder nutzen Sie ein echtes Postfach.
- Alles, was Sie störte, würde es ein Fremder lesen. Auf einer öffentlichen Domain ist die Adresse das einzige Schloss an der Tür, und es ist ein kurzes.
Eine eigene Domain ändert den dritten dieser Punkte und keinen der ersten beiden: Grenze und Aufbewahrungsdauer bleiben exakt gleich, aber die Adresse steht auf einem Namen, der nirgendwo auf dieser Website auftaucht, sodass niemand Dateien dorthin errät. Ein einziger MX-Eintrag genügt:
MX-Eintrag für Ihre Domain10 smtp.grabmail.io
Die vollständige Anleitung finden Sie hier — der Eintrag, was seine Veröffentlichung beweist, und die ehrlichen Grenzen eines Postfachs ohne Passwort.
Fragen
Wie groß darf ein Anhang maximal sein?
5 MB für die gesamte kodierte Nachricht — das ist die Zahl, die der Mailserver tatsächlich durchsetzt. Weil base64 eine Binärdatei um etwa ein Drittel aufbläht, ergibt das eine Datei von rund 3,5 MB, weniger noch bei einer Nachricht mit Text und Signatur.
Welche Dateitypen kann ich empfangen?
Alle. Nichts wird nach Typ, Endung oder Inhalt gefiltert oder abgelehnt, und nichts wird entpackt, um hineinzuschauen. Das Einzige, weswegen eine Nachricht abgewiesen wird, ist ihre Größe.
Scannen Sie Anhänge auf Viren?
Nein. Es gibt keinen Virenscanner und keine Art von Scan. Die Datei, die Sie herunterladen, ist Byte für Byte das, was der Absender geschickt hat, und ob Sie sie öffnen, müssen Sie selbst beurteilen.
Warum wird jeder Anhang als application/octet-stream heruntergeladen?
Weil das Zurückgeben des von einem Fremden angegebenen Inhaltstyps genau der Weg ist, wie eine Datei zu einer auf unserer Origin laufenden Seite wird, in Ihrer Sitzung. Der tatsächliche Typ steht in den Metadaten neben der Datei; der Download selbst ist bewusst anonym und wird nie im Browser gerendert.
Wie viele Anhänge kann eine Nachricht tragen?
Zwanzig. Eine Nachricht mit mehr Teilen als das behält die ersten zwanzig. In der Praxis wird die Größengrenze lange vor der Anzahl erreicht.
Kann ich einen Anhang über die API herunterladen?
Ja. Jeder Anhang in einer Nachrichten-Antwort trägt eine fertige URL, und sie abzurufen ist ein einfaches GET mit dem Postfach als Parameter. Auf den öffentlichen Domains ist kein Schlüssel nötig.
Wie lange bleiben Anhänge erhalten?
So lange wie ihre Nachricht: 5 Tage ab Ankunft, dann werden sie mit ihr gelöscht. Löschen Sie die Nachricht selbst, ist die Datei sofort entfernt.
Mein Anhang ist nie angekommen — warum?
Entweder war die Nachricht über 5 MB groß und wurde schon an der Tür abgewiesen — dann hat der Absender einen Bounce mit der Erklärung —, oder der Teil trug weder Dateinamen noch Anhang-Kennzeichnung und wurde als Teil des Textkörpers gelesen. Die Anleitung zu Mail, die nicht ankommt deckt alles Weitere ab.
Kann ich eine Datei von einer Wegwerf-Adresse aus senden?
Nein. Dieser Dienst empfängt nur und hat überhaupt keinen Endpunkt zum Versenden — genau das verhindert, dass ein unauthentifiziertes Postfach zu einem bequemen Weg wird, Dateien an Fremde zu schicken.

