Вероятно, не самый известный ответ, но вы рассматривали стандартные способы сделать это, например, procmail? Предоставляет вам базовое понимание электронных писем и позволяет создавать фильтры вокруг всего. (Обработка писем с помощью детектора типов файлов, применение регулярных выражений ко всем возможным заголовкам, ...)
Таким образом, вы сохраняете каждую часть вашей системы в специализированном скрипте / программе и создаете модульное решение, которое можно легко расширить. Кроме того, вы можете использовать любой инструмент, который уже был запрограммирован кем-то другим.
Для фильтра типов файлов: я делаю что-то сопоставимое для сломанных / старых pgp-писем через procmail, чтобы добавить тип контента.
# repair pgp-encoded messages with missing Content-Type
######################################################################
:0
* !^Content-Type: message/
* !^Content-Type: multipart/
* !^Content-Type: application/pgp
{
:0 fBw
* ^-----BEGIN PGP MESSAGE-----
* ^-----END PGP MESSAGE-----
| /usr/bin/formail \
-i "Content-Type: application/pgp; format=text; x-action=encrypt"
:0 fBw
* ^-----BEGIN PGP SIGNED MESSAGE-----
* ^-----BEGIN PGP SIGNATURE-----
* ^-----END PGP SIGNATURE-----
| /usr/bin/formail \
-i "Content-Type: application/pgp; format=text; x-action=sign"
}
Дальнейшая обработка может привести к совпадению типов контента и назначить специальные обработчики для специальных типов (и универсальные обработчики для неизвестных типов).