Очень внимательно читаю конференцию на opennet.ru ( http://www.opennet.dev/openforum/vsluhforumID3/3588.html ). В самой конференции обсуждались плюсы и минусы как SpamAssassin, так и Kaspersky Antispam. Данные типы антиспам-фильтров основаны на лингвистическом анализе содержимого письма, но у меня возникла идея... Несомненно, она вероятно не нова, но мне кажется, что она не лишена права на жизнь.Как известно, только сам конечный пользователь сам может сказать, пришедшее письмо спам или не спам. Несомненно, можно научить "компьютер" делать это за него, но, простите, я считаю, что это "слабое подобие правой руки", ибо всё равно 100% точности не получить. Но "компьютеру" можно дать правило, которое пользователь УЖЕ создал. Что бы не лезть в дебри, посмотрите, пожалуйста, алгоритм работы того, что у меня в голове:
1. Отправляется письмо.
2. На сервере получателя проверяются всякие там RBL и т.д. (пока они ещё работают).
3. Проверяется, есть ли отправитель в белом списке.
4. Если отправитель в белом списке, то письмо доставляется в инбокс (грубо говоря). Если нет, то далее.
5. Если в белом списке отправителя нет, то генерируется случайное число (или комбинация чисел-букв).
6. Сервер делает reply письма отправителю, но в тело письма и в тему письма вставляет сгенерированное в п.5 число.
7. Письмо маркируется как "Неавторизированное" (любым способом. Начиная с добавления в тему маркера и заканчивая header-ом в заголовке).
8. Письмо доставляется в инбокс (но, несомненно, правила на основе маркера могут его доставить в иное место).
Х. Пользователь, проверив неавторизованное письмо, может добавить адресата в белый список. Или он добавится автоматически в чёрный, спустя какое-то указанное время.
ХХ. Если сервер получает ответ от отправителя, и присутствует в нужном месте сгенерированное в п.5 число, то адресат автоматически заносится в белый список.
Что мы в итоге получаем?
Плюсы.
1. Полное отсутствие ложных срабатываний.
2. Скорость работы сервера может быть очень и очень существенной, т.к. не требуются ресурсоёмкие лингвистические анализы.
3. Прозрачность работы фильтра - всё просто и логично.
Минусы.
1. Первоначально всё равно требуется проверять спам на наличие нужных сообщений.
2. Некоторый паразитный трафик (что в текущий момент, учитывая скоростные каналы связи, не так критично).
Несомненно, можно добавить условие - письма, изначально содержащие в себе (в теме, например) указанный маркер, сразу будут попадать в белый список... Например, один мой знакомый, которого спам достал "по самое немогу", установил фильтр, в котором удаляются все письма, кроме тех, которые содержат в себе слово "Маяк" (Это название фирмы, в которой он работает). Естесственно, он всем, кому даёт свой адрес, говорит, что письма отсылать только так (даже на визитке напечатано). Прекрасно понимаю, что он и потеряет много (например, опечатался кто-то), но... Нет в жизни идеала! В моём случае, если кто-то "опечатался" или просто "ключа" нет, то отправитель получит уведомление... И если это действительно важно, то либо сам подтвердит себя, либо будет ждать, пока получатель это сделает.
Как мне кажется, мой вариант антиспам-фильтра не требует особо глубокого знания языков программирования. IMHO, всё логично... Что бы добавлять кого-то в белый список, пользователь может, например, отправить письмо на whitelist@domain.com, в теме которого указать адрес, который надо занести в "белый" список. Аналогично можно поступить и с "чёрным" списком... Для работы фильтра можно использовать базу SQL, которая, как известно, при нормальной установке работает достаточно быстро. Имея белый список можно разрешить фильтру пропускать сообщения от серверов, обеспечивающих необходимые (и только необходимые!) рассылки. Конечно, письма на добавление в список принимаются только от локальных пользователей. Для проверки всего списка достаточно будет отправить письмо с темой, например, STATUS на тот же whitelist@domain.com и автоматом получить таблицу с адресами, временем занесения в базу и т.д. Вероятно, есть возможность аналогичным реализовать добавление целого домена, но данный вариант будет прекрасно работать, если вести отдельно списки для каждого пользователя. В принципе, администратор может управлять списками для всего своего почтового сервера...
Господа, жду комментариев :)