Слой, блокирующий SMTP с белым списком

cpulimit, как известно, в некоторых случаях не работает хорошо. Иногда он работает достаточно хорошо (на простых однопоточных приложениях), а иногда (в основном mutli-threaded или muti-process) он не работает.

Технически говоря, есть две проблемы, которые могут привести к тому, что cpulimit не будет ограничен. Первая - это то, что программа, которую Вы пытаетесь запустить, порождает поток или процесс таким образом, что порожденный поток не является потомком порождающего потока. Для этого есть несколько причин, но это немного необычно.

Вторая причина - это то, что SIGSTOP - это не сигнал, который можно "обработать". Но сигналы асинхронные. Поэтому поток a может порождать поток b. поток a может быть SIGSTOP'ed при запуске потока b, а поток b запускается без сигнала.

Также SIGSTOP приостанавливает процесс "когда он может". В некоторых случаях, особенно при использовании диска io, нить не может быть приостановлена. Самое распространенное, что я могу придумать, это дисковое IO.

Другими словами, в то время как SIGSTOP (то, что использует cpulimit) должен останавливать поток и все остальные дочерние потоки, он не всегда делает это так, как вы ожидаете в сложных многопоточных приложениях, которые могут запускать другие процессы. Лучше всего в этих случаях использовать традиционное дросселирование расписания (хорошо).

1
11.04.2014, 01:16
1 ответ

Можно использовать команду вставки, чтобы добавить правила перед правилами блокировки. Однако только 1 или, возможно, 2 сервера должны отправлять электронную почту в Интернет. При необходимости добавьте правила брандмауэра на свои хосты, чтобы разрешить отправку электронной почты только их почтовому серверу. Это должно отключить ботов или, по крайней мере, дать возможность регистрировать и отслеживать проблему.

Я бы порекомендовал вам настроить один сервер исходящей почты и заблокировать все остальные серверы, отправляющие электронную почту в Интернет. Используйте этот почтовый сервер в качестве исходящего MTA (агента пересылки почты) для всех хостов в вашей сети. Настройте его должным образом с помощью rDNS, SPF и т. Д. Домены, которые не отправляют электронную почту, должны иметь записи SPF, содержащие политику «-все». См. Мои заметки о Защита репутации электронной почты с помощью SPF.

Настройте свой почтовый сервер, чтобы ограничить количество доменов, от имени которых вы будете отправлять сообщения. Я считаю, что для этого хорошо работают возможности ACL Exim. Вы также можете установить правила ограничения, чтобы предотвратить большие объемы исходящей электронной почты.

1
27.01.2020, 23:52

Теги

Похожие вопросы