Установка ограничений на отправку почты в Directadmin (exim).

Про спам уже написано много. Но проблема все равно остается. Особенно актуален вопрос рассылки спама с шаред хостингов. Покупает, к примеру, спамер самый дешевый тарифный план на хостинге, закачивает туда скрипт и спамит. В результате от такого урода страдают все клиенты данного хостинга. Потому как ip адрес такого сервера на вторые сутки попадает чуть ли не во все известные черные списки и стоит больших трудов его из них убрать.

Один из методов защиты от рассылки спама на хостинге с использованием панели управления Directadmin описан на их сайте. И еще тут.
Приведу произвольный перевод:
Скачиваем новые конфиги exim с сайта directadmin, выставляем права, создаем кучу файлов, назначаем им права.

wget -O /etc/exim.conf http://files.directadmin.com/services/exim.conf
wget -O /etc/exim.pl http://files.directadmin.com/services/exim.pl
chmod 755 /etc/exim.pl
cd /etc/virtual
touch blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders
echo 100 > limit
mkdir usage
chown mail:mail blacklist_domains whitelist_from use_rbl_domains bad_sender_hosts blacklist_senders whitelist_domains whitelist_hosts whitelist_senders limit usage
После чего рестартуем exim:
/sbin/service exim restart
Основная строка:
echo 100 > limit

В файле /etc/virtual/limit указываем количество почтовых сообщений в сутки для одного клиента. Если в этом файле указано число отличное от 0, то exim.pl начинает подсчет количества почтовых отправлений для каждого пользователя. В директории /etc/virtual/usage создается два типа файлов: 'username' и 'username.bytes где 'username' - это логин пользователя в directadmin. В файле 'username.bytes' в каждой строке хранится еще и размер каждого почтового сообщения. Конечно изучать надо будет строки содержащие method=outgoing, так как мы изучаем исходящую почту. В файле 'username' при отправке кажого письма просто дописывается одна единица. Количество байт в файле и указывает на количество исходящих почтовых сообщений. Таким образом, анализируя эти два файла можно выявлять спамеров и соответственно их наказывать.

Надеюсь моя заметка поможет владельцам выделенных серверов и VDS в выявлении спамеров.

Установка ограничений на

Установка ограничений на отправку почты всегда нужна!!!

А где именно можно найти

А где именно можно найти конфиг exima ? везде по разному написано шде то /etc/exim/exim.conf где то /etc/exim/exim.conf ? втретьем источнике по третьему написано.
На сервере установлен Web-host Manager может быть в этих папках лежит его конфиг ?

Хочу обратить свое внимание

Хочу обратить свое внимание если у Вас нет ДА или же вы хотели бы ограничивать кол-во писем не в сутки,а в час + как бонус другие защиты от спама. Для этого в exim.conf в разделе acl_check_data пишем следующее:

# Рубаем баунсы от клиентов до двух в час (если закрыть, аутглюку станет худо)
deny condition = ${if eq{$sender_address}{}{yes}{no}}
domains = !+local_domains
hosts = +relay_from_hosts
ratelimit = 2 / 1h / per_mail / strict / $sender_address
message = Too many bounces from you! Ask at admin@admin-sys.net.

# Рубаем тех кто превысил заданную норму сообщений в час - клиентов
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $sender_address

# Рубаем по (в частности, если сообщение посылается локально, то содержит имя пользователя)
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $authenticated_id

deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for More slowly, try later or complain admin@admin-sys.net.
hosts = +relay_from_hosts
ratelimit = 100 / 1h / per_mail / leaky / $sender_host_authenticated

# Рубаем тех кто превысил заданную норму сообщений в час - для остальных
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $sender_address
accept

# Рубаем тех кто превысил заданную норму сообщений в час - для остальных
deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $authenticated_id

deny message = Sender rate exceeds $sender_rate_limit messages per $sender_rate_period for $sender_host_address More slowly, try later or complain admin@admin-sys.net.
hosts = * : !+mine : !+relay_from_hosts
ratelimit = 100 / 1h / per_conn / leaky / $sender_host_authenticated
Надеюсь Вам станет это полезным.

А как совсем запретить

А как совсем запретить входящуюю почту для EXIM?

Уже сервер вешают китайцы, турки, индусы и т.д.

Есть один метод, но

Есть один метод, но модернизируете под себя, ибо по этому правилу, будет рубится почта от всех под сетей выбранной странны.
Или ли же набрасывать ним балов в spamassassin например

acl_check_rcpt:

# перед countries.nerd.dk обозначение зоны, соответствеющее какой нужно стране (cn, jp, vn...) и почта с IP адресов этой страны блокируется.
#deny message = "Host in blacklist - $dnslist_domain \n $dnslist_text"
deny message = Something with mail.
dnslists = cn.countries.nerd.dk
# Пропустим востребованные
hosts = ! 12.21.45.25 : 54.21.69.24/24 : !
log_message = Host in blacklist - "cn" Китай

deny message = Something with mail.
dnslists = br.countries.nerd.dk
log_message = Host in blacklist - "br" Бразилия

deny message = Something with mail.
dnslists = ar.countries.nerd.dk
log_message = Host in blacklist - "ar" Argentina

deny message = Something with mail.
dnslists = vn.countries.nerd.dk
log_message = Host in blacklist - "vn" Вьетнам

deny message = Something with mail.
dnslists = th.countries.nerd.dk
log_message = Host in blacklist - "th" Тайланд

deny message = Something with mail.
dnslists = la.countries.nerd.dk
log_message = Host in blacklist - "la" Лаос

deny message = Something with mail.
dnslists = kh.countries.nerd.dk
log_message = Host in blacklist - "kh" Камбоджа

deny message = Something with mail.
dnslists = tr.countries.nerd.dk
log_message = Host in blacklist - "tr" Турция

deny message = Something with mail.
dnslists = in.countries.nerd.dk
log_message = Host in blacklist - "in" Индия

deny message = Something with mail.
dnslists = lk.countries.nerd.dk
log_message = Host in blacklist - "lk" Шри-Ланка

Ну и дальше, по аналогии