OpenBSD: Противостояние спаму с помощью greylisting и spamd(8)


Мини-руководство "шаг за шагом"

Конфигурирование следует начинать с правки spamd.conf(5). В качестве значения директивы "all" указываем адреса известных спамеров из Китая и Кореи:

# vi /etc/spamd.conf
all:\
	:china:korea:

china:\
	:black:\
	:msg="SPAM. Your address %A appears to be from China\n\
	See www.okean.com/asianspamblocks.html for more details":\
	:method=http:\
	:file=www.openbsd.org/spamd/chinacidr.txt.gz:

korea:\
	:black:\
	:msg="SPAM. Your address %A appears to be from Korea\n\
	See www.okean.com/asianspamblocks.html for more details":\
	:method=http:\
	:file=www.openbsd.org/spamd/koreacidr.txt.gz:

Устанавливаем время периодического обновления адресной базы равным 1 час:

# crontab -e
0	*	*	*	*	/usr/libexec/spamd-setup

В rc.conf(8) прописываем автозапуск spamd:

# vi /etc/rc.conf
spamd_flags="-vl 127.0.0.1 -n Postfix"
spamlogd_flags=

Внесенные в файл /etc/rc.conf изменения вступят в силу только после перезагрузки. Если по какой-то причине хост перегружать нельзя, необходимо выполнить следующую последовательность команд:

# eval /usr/libexec/spamd -vl 127.0.0.1 -n Postfix
# /usr/libexec/spamd-setup
# /usr/libexec/spamlogd

Редактируем правила файервола:

# vi /etc/pf.conf

# Внешний сетевой интерфейс
#
ext_if = "fxp0"

# Таблица адресов SMTP-серверов, которые прошли greylisting-проверку
#
table <spamd-white> persist 

# Таблица адресов/сетей, не требующих greylisting проверки.
# Пример файла можно найти здесь:
# http://www.openbsd.ru/files/etc/mail/spamd.bypass
#
table <spamd-bypass> persist file "/etc/mail/spamd.bypass"

# Пропускать адреса, не требующие greylisting проверки.
#
no rdr inet proto tcp from <spamd-bypass> to ($ext_if) port smtp

# Перенаправляем входящие SMTP-подключения
#
rdr pass on $ext_if inet proto tcp from !<spamd-white> to \
	($ext_if) port smtp -> 127.0.0.1 port spamd 

# Пропускаем входящие smtp соединения для проверенных серверов,
# регистрируем соединение для обновления времени в базе данных spamd.
#
pass in log on $ext_if inet proto tcp to ($ext_if) port smtp

Перезагружаем правила файервола:

# pfctl -f /etc/pf.conf

Дополнительную информацию можно получить из справочных man-страниц: pf.conf(5), spamd.conf(5), spamd(8), spamd-setup(8), spamlogd(8).


OpenBSD.ru www@openbsd.ru
$RuOBSD: spamd.html,v 1.11 2010/11/01 10:57:49 dinar Exp $