За уже почти 5 лет работы системным администратором приходилось настраивать не один почтовый сервер. Работал с различными почтовыми серверами (IBM Lotus Domino, XMail, Microsoft Exchange, Exim и др).
И всегда в таких случаях остро встает проблема борьбы со спамом.
Разные почтовые сервера решают ее по разному - одни имеют встроенные средства (XMail, Exim), другие (Microsoft Exchange) полностью безоружны перед спамом, без использования разработок сторонних производителей.
Не у каждого админа достаточно времени на тонкую настройку MTA, не каждая компания имеет в штате компетентного человека.
Вот поэтому я решил систематизировать накопленные на поприще борьбы со спамом знания в проекте по защите почтовых серверов от спама - http://www.spam-imuno.com/
Цены невысокие, услуги предоставлять планирую на арендованых виртуальных серверах.
Жду первых клиентов и буду рад ответить на вопросы.
[UPDATE]
Сайт проекта временно недоступен.
По всем вопросам, прошу писать мне на почту или в коентарии здесь.
Показаны сообщения с ярлыком MTA. Показать все сообщения
Показаны сообщения с ярлыком MTA. Показать все сообщения
4 мая 2009 г.
24 апр. 2009 г.
Exim4 - фильтруем почту для postmastera в ubuntu 8.10
Думаю многих администраторов почтовых серверов, принимающих сообщения на адрес "postmaster@вашдомен", замучал спам поступающий на этот адрес.
Многие либо меняют адрес постмастера, либо вовсе его отключают.
И то и то с точки зрения rfc822 неверно [2].
Чтобы хоть как-то снизить уровень спама в адрес постмастера и повысить вероятность обнаружения у него в ящике легитимных писем было предложено принимать письма только с определенной темой.
В [1] и [2] положений запрещающих какую-либо фильтрацию не нашел (если не прав, поправьте, кто знает;).
Исходя из поставленной задачи, нам необходимо проверять в поступающих письмах адрес назначения и если оно адресовано постмастеру, то еще проверить тему письма.
Первая проблема - Exim4 позволяет проверить адрес назначения только в acl_smtp_rcpt, а тему письма мы можем проверить только на этапе acl_smtp_data.
Благодаря механизму пользовательских переменных [3], в MTA Exim4 мы имеем возможность передавать данные между разными этапами обработки письма. Переменные acl_m{цыфра} действительны входе обработки письма, их значение сбрасывается по командам HELO, MAIL и STARTTLS. Переменные acl_с{цыфра} действительны в ходе всего соединения.
В стандартной конфигурации Exim4 все проверки проходят на этапе RCPT.
Одной из первых проверок является проверка на указание адреса назначения "postmaster" или "postmaster@your.domain". Здесь мы и будем "запоминать" что это письмо для постмастера:
ACL теперь будет выглядеть так:
т.е. присваиваем переменной acl_m0 значение "1" если $local_part равно "postmaster" или равно значению макроса "CHECK_RCPT_POSTMASTER".
Макрос "CHECK_RCPT_POSTMASTER" в стандартной для Ubuntu 8.10 конфигурации позволяет легко изменить адрес постмастра. Но еще раз оговорюсь, это идет в разрез с rfc.
Итак мы "пометили" письмо для постмастера.
Макрос CHECK_DATA_ACL_FILE позволяет указать файл в котором будут расположены наши собственные ACL для проверки письма на этапе команды DATA.
Присваиваем ему значение, создаем файл и пишем свой ACL:
Перезапустим Exim:
#/etc/init.d/exim4 restart
Проверим работу тестовой сессией:
exim -bh 192.168.0.1
helo nethuman
mail from: <>
rcpt to: postmaster
data
Subject: trouble
1. MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS (http://www.rfc-ignorant.org/rfcs/rfc2142.php)
2. STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES (ftp://ftp.rfc-editor.org/in-notes)/rfc822.txt
3. The Exim Specification - Version 4.6x, p. 119. (http://exim.org/exim-pdf-current/doc/spec.pdf)
Многие либо меняют адрес постмастера, либо вовсе его отключают.
И то и то с точки зрения rfc822 неверно [2].
Чтобы хоть как-то снизить уровень спама в адрес постмастера и повысить вероятность обнаружения у него в ящике легитимных писем было предложено принимать письма только с определенной темой.
В [1] и [2] положений запрещающих какую-либо фильтрацию не нашел (если не прав, поправьте, кто знает;).
Модификация стандартного конфига Exim4 в Ubuntu 8.10.
Исходя из поставленной задачи, нам необходимо проверять в поступающих письмах адрес назначения и если оно адресовано постмастеру, то еще проверить тему письма.
Первая проблема - Exim4 позволяет проверить адрес назначения только в acl_smtp_rcpt, а тему письма мы можем проверить только на этапе acl_smtp_data.
Благодаря механизму пользовательских переменных [3], в MTA Exim4 мы имеем возможность передавать данные между разными этапами обработки письма. Переменные acl_m{цыфра} действительны входе обработки письма, их значение сбрасывается по командам HELO, MAIL и STARTTLS. Переменные acl_с{цыфра} действительны в ходе всего соединения.
В стандартной конфигурации Exim4 все проверки проходят на этапе RCPT.
Одной из первых проверок является проверка на указание адреса назначения "postmaster" или "postmaster@your.domain". Здесь мы и будем "запоминать" что это письмо для постмастера:
set acl_m0 = ${if eq{$local_part}{postmaster}{1}{0}}
set acl_m0 = ${if eq{$local_part}{CHECK_RCPT_POSTMASTER}{1}{0}}
ACL теперь будет выглядеть так:
# Accept mail to postmaster in any local domain, regardless of the source,
# and without verifying the sender.
#
accept
.ifndef CHECK_RCPT_POSTMASTER
set acl_m0 = ${if eq{$local_part}{postmaster}{1}{0}}
local_parts = postmaster
.else
set acl_m0 = ${if eq{$local_part}{CHECK_RCPT_POSTMASTER}{1}{0}}
local_parts = CHECK_RCPT_POSTMASTER
.endif
domains = +local_domains : +relay_to_domains
т.е. присваиваем переменной acl_m0 значение "1" если $local_part равно "postmaster" или равно значению макроса "CHECK_RCPT_POSTMASTER".
Макрос "CHECK_RCPT_POSTMASTER" в стандартной для Ubuntu 8.10 конфигурации позволяет легко изменить адрес постмастра. Но еще раз оговорюсь, это идет в разрез с rfc.
Итак мы "пометили" письмо для постмастера.
Проверим тему
Макрос CHECK_DATA_ACL_FILE позволяет указать файл в котором будут расположены наши собственные ACL для проверки письма на этапе команды DATA.
Присваиваем ему значение, создаем файл и пишем свой ACL:
#
# Check subject in messages for postmaster
#
deny
message = We accept messages for postmaster only with Subject: "trouble". Please retry.
log_message = Not valid subject in message for postmaster - Subject=$h_Subject:
condition = ${if eq{$acl_m0}{1}{${if !eq{$h_Subject:}{trouble}{1}{0}}}{0}}
Перезапустим Exim:
#/etc/init.d/exim4 restart
Проверим работу тестовой сессией:
exim -bh 192.168.0.1
helo nethuman
mail from: <>
rcpt to: postmaster
data
Subject: trouble
Источники:
1. MAILBOX NAMES FOR COMMON SERVICES, ROLES AND FUNCTIONS (http://www.rfc-ignorant.org/rfcs/rfc2142.php)
2. STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES (ftp://ftp.rfc-editor.org/in-notes)/rfc822.txt
3. The Exim Specification - Version 4.6x, p. 119. (http://exim.org/exim-pdf-current/doc/spec.pdf)
Подписаться на:
Сообщения (Atom)
