Весь конфиг выкладывать не буду - почти все как в статье на сайте.
Только то, что касается спамообороны.
Содержимое файла /etc/exim4/relay_from_hosts.
Код: Выделить всё
127.0.0.0/8:
10.4.0.0/16:
y.y.y.y :
x.x.x.x
Часть конфига /etc/exim4/exim4.conf.
Кроме спамообороны предусмотрена проверка через Spamassassin
Код: Выделить всё
....
hostlist relay_from_hosts = localhost : 127.0.0.0/8 : 10.4.0.0/16 : y.y.y.y : x.x.x.x
spamd_address = 127.0.0.1 783
.....
Далее часть acl_check_data.
Здесь мы сначала добавляем информацию от Spamassassin в тело письма.
Затем, в случае, если Spamassassin выдал более 300 очков письму(это уже точно спам - проверено опытным путем), в тело письма добавляем флаг X-Spam-Flag и устанавливаем значение YES.
Код: Выделить всё
acl_check_data:
....
warn message = X-Spam-Level: $spam_bar\nX-Spam-Score:$spam_score\nX-Spam-Report: $spam_report
spam = nobody:true
hosts = !+relay_from_hosts : *
warn message = X-Spam-Flag: YES
spam = nobody:true
hosts = !+relay_from_hosts : *
condition = ${if >{$spam_score_int}{300}{1}{0}}
........
Здесь самое интересное, попытаюсь объяснить, чего я хочу.
Роутер
spam_yandex_route направляет письма на сервера яндекса для проверки.
Мне нужно ограничить отправку писем:
- 1. Направляются письма, пришедшие только с 25 порта (если принимать с других портов, например 1125, будет зацикливание)
2. Письмо не направляется, если в нем есть флаг X-Spam-Flag со значением YES (то есть это те помеченные письма, которым Spamassassin дал более 300 очков - это точно спам, дважды подтверждать это не имеет смысла).
3. Письмо направляется, если в нем есть флаг X-Spam-Flag, но не со значением YES (иного значения, кроме YES я у себя не ставлю, тогда как очень много приходит писем извне с эти флагом со значением NO, но я им не доверяю)
4. Не направляются письма с доверенных хостов - смотри relay_from_hosts. Я уже пробовал и match_ip, и iplsearch, и через макрос relay_from_hosts и через файл /etc/exim4/relay_from_hosts. Может быть, в синтаксисе ошибся, ничего не работает, все равно с локальной сети идет на яндекс .
Далее, в роутере
spam_router если флаг X-Spam-Flag установлен в значение YES (устанавливается либо спамассассином, либо спамообороной), посылаю спам на почту
spam@bgita.ru
Код: Выделить всё
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}}
spam_yandex_route:
driver = manualroute
transport = spamoborona
domains = +local_domains
condition = ${if or { {and {{!def:h_X-Spam-Flag:}{eq {$interface_port}{25}}{!match_ip{$sender_host_address}{iplsearch;/etc/exim4/relay_from_hosts}}{{def:h_X-Spam-Flag:}{!eq {$h_X-Spam-Flag:}{YES}}{eq {$interface_port}{25}} } } } }
route_data = mail.bgita.ru
self = send
spam_router:
driver = redirect
domains = +local_domains
condition = ${if match {$h_X-Spam-Flag:}{YES}}
data = spam@bgita.ru
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}{yes}{no$
transport = dovecot_delivery
Теперь транспорт
Код: Выделить всё
begin transports
remote_smtp:
driver = smtp
headers_add = "X-Bounce-ID: $primary_hostname"
dovecot_delivery:
driver = pipe
command = /usr/lib/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = Debian-exim
spamoborona:
driver = smtp
port = 1125
interface = x.x.x.x
address_pipe:
driver = pipe
return_output
address_reply:
driver = autoreply
С нетерпением жду комментариев