Neulich bekam ich ein Helpdesk-Ticket: Einer meiner Nutzer wurde eine Mail nicht los. Bei uns ist das so, daß intern ein Exchange steht, die Clients allermeist Outlook sind Der Exchange liefert nicht direkt ins Internet aus, sondern an 3 Rechner mit sendmail, die dann ihrerseits direkt (via MX-Record) ausliefern.
Auf den sendmails läuft ein Virenscanner (clamav), der seinerseits über amavis aufgerufen wird. amavis zerlegt also jede Mail in ihre Einzelbestandteile und übergibt diese an clamav (genauer: clamdscan) zum Scannen.
Um sich vor Gemeinheiten wie 42.zip zu schützen, hat amavis einen Konfigurationsparameter namens MAXFILES, der standardmäßig auf 500 steht. Sobald also ein Archiv mehr als 500 Dateien enthält, bricht amavis ab, teilt das sendmail mit, und sendmail wird die Annahme der Mail verweigern.
Zurück zum Helpdesk-Ticket: Der Nutzer wollte ein zip verschicken, mit 2 Excel-Dateien darin — und wie gesagt, es ging nicht.
Im Log vom sendmail fand ich dann:
amavisd[2123]: Maximum number of files (500) exceeded
Allerdings behauptete der Nutzer noch immerfest, nur ein einziges zip mit 2 Excel-Dateien verschickt zu haben. Komisch…
Da erinnerte ich mich: MS-Office ab irgendeiner Version verwendet OOXML als „Dateiformat“ — und das ist nichts weiter als ein zip, in dem unterschiedliche Dateien sind. Also habe ich mir mal die beiden Excel-Dateien geben lassen — und Bingo:
$ unzip ‑l foobar.xlsx | tail ‑1
3901975 863 files
$
863 Dateien!
Nachdem ich dann MAXFILES auf 1000 gesetzt hatte, ging die Mail anstandslos durch 🙂