Сергей Супрунов
Гуртом і батька добре бити.
Мудрость братского народа
Как бы ни был гибок и функционален Sendmail, его возможностей не всегда
хватает для решения всего многообразия задач. Но открытость ПО тем и хороша,
что позволяет наращивать мощь практически без ограничений.
Защиты не бывает много
Sendmail, как было показано в предыдущих частях статьи (№ 5, 6, 7 за 2006
г.), позволяет, используя файл aliases или пользовательские .forward-файлы, перенаправлять
входящие сообщения на обработку сторонними программами. Сам механизм достаточно
прост: письмо в исходном формате поступает на стандартный вход (stdin)
указанной программы или скрипта, который в дальнейшем занимается его
обработкой. Несложный пример реализации такого сценария на Python можно найти в
статье «Практикум Python: обрабатываем входящую электронную почту» (№2 за 2006
г.).
Однако здесь скрывается потенциальная проблема
безопасности – если у пользователя будет возможность самостоятельно указывать
любые программы в качестве обработчиков почты, то всегда остаётся вероятность,
что он воспользуется этим для несанкционированного вызова программы, к которой
в нормальных условиях у него нет доступа (например, не предоставляется доступ к
командной оболочке, но есть возможность вносить изменения в .forward-файл через
веб-интерфейс). Конечно, Sendmail снижает до минимума негативные последствия
этой возможности, запуская процесс, выполняющий такую обработку, от имени
пользователя-владельца .forward-файла. Но нельзя забывать, что в системе могут
быть исполняемые файлы, на которые установлен бит suid, что в ряде случаев
может привести к печальным последствиям...