LINUX.ORG.RU
ФорумAdmin

exim 4.8 не работает чёрный список хостов

 , ,


0

1

CentOS 6.6, exim 4.80.1-49. Есть чёрный список хостов (/etc/exim/exim4.blacklist.hosts) и чёрный список адресов(/etc/exim/blackMAIL). Точно не работает чёрный список хостов. В чём может быть дело? Адреса вроде бы блокируются, но всё равно прошу проверить взглядом со стороны. Конфиг exim'а с комментариями:

#######################
#MAIN CONFIGURATION SETTINGS#
#######################
# Основное имя хоста
primary_hostname = мойдомен.ru

# Параметры подключения к БД в формате "хост/имя_базы/пользователь/пароль"
hide mysql_servers = localhost/vmail/vmail/vmail

# Список локальных доменов
domainlist local_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${quote_mysql:$domain}' AND \
                            `active`='1'}}

# Список доменов/хостов, для которых хост является входящим релеем
domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
                            FROM `domain` WHERE \
                            `domain`='${quote_mysql:$domain}' AND \
                            `active`='1'}}

hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.1.0/24:192.168.0.0/24:10.8.200.0/24  #add the hosts from which you allow relaying here

# Включаем ограничения - будут объявлены ниже, в секции ACL
acl_not_smtp = acl_not_smtp
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
#acl_smtp_mail = acl_check_mail

# Пусть к сокету clamd - clamd уже установлен и настроен
av_scanner = clamd:/var/run/clamav/clamd.socket

spamd_address = 127.0.0.1 783

# Имя домена, добавляемое ко всем адресам, идущим без "@" и имени домена. Например, для системных пользователей.
	 qualify_domain = мойдомен.ru
qualify_recipient = мойдомен.ru

# Запрещаем принимать почту с адресов типа user@[10.11.12.13]
allow_domain_literals = false

# Пользователь и группа, от которой работает Exim
exim_user = exim
exim_group = exim
never_users = root

# Эта опция заставляет делать обратный DNS-запрос для каждого входящего IP-адреса. Могут быть проблемы с некоторыми почтовыми серверами.
#	 host_lookup = *
rfc1413_query_timeout = 0s
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts

# На сколько задерживаем сообщение о доставке, если его не удалось доставить
	  ignore_bounce_errors_after = 12h

# Сколько хранить "замороженные" сообщения
	timeout_frozen_after = 3d

# Почта с этих хостов/доменов будет приниматься несмотря на ошибки в HELO/EHLO
	helo_accept_junk_hosts = 192.168.1.0/24 : 127.0.0.1/8 : 192.168.0.0/24 : 10.100.0.0/24 : 10.8.200.0/24

# Через какое время повторять отправку "замороженных" сообщений
	auto_thaw = 1h

smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
# Максимальное число одновременных соединений
	smtp_accept_max = 50
	  
# Максимальное число сообщений, принимаемых за одну tcp-сессию
	smtp_accept_max_per_connection = 25

smtp_connect_backlog = 30

# Максимальное число соединений с одного хоста/домена
	  smtp_accept_max_per_host = 20
smtp_receive_timeout = 10m
split_spool_directory = true

# Максимальное число параллельных процессов доставки
	remote_max_parallel = 15

# Ограничение на размер части письма, вкладываемого в сообщение об ошибке
	return_size_limit = 70k

# Максимальный размер сообщения
	message_size_limit = 64M

helo_allow_chars = _
smtp_enforce_sync = true

daemon_smtp_ports = 25 : 465
tls_on_connect_ports = 465

# Разрешаем всем клиентам использовать TLS
	tls_advertise_hosts = *

# Пути к TLS-сертификату и приватному ключу
	tls_verify_certificates = /etc/ssl/cetrs/ca-bundle.crt
	tls_certificate = /etc/ssl/certs/mail.pem
	tls_privatekey = /etc/ssl/certs/mail.key

log_selector = \
    +all_parents \
    +connection_reject \
    +incoming_interface \
    +lost_incoming_connection \
    +received_sender \
    +received_recipients \
    +smtp_confirmation \
    +smtp_syntax_error \
    +smtp_protocol_error \
    -queue_run

syslog_timestamp = no

system_filter = /etc/exim/systemfilter
system_filter_directory_transport = local_copy_outgoing

#######################################
# ACL CONFIGURATION 
# Specifies access control lists for incoming SMTP mail
#######################################
begin acl

acl_not_smtp:
        deny message = Sender rate overlimit - $sender_rate / $sender_rate_period
        ratelimit = 50 / 1h / strict
        accept
		
####################################Проверка вложений zip-rar##########################
acl_check_mime:
	deny message = Dannoy soobschenie soderjit opasnoe vlojenie

		condition = ${if match{$mime_filename}{\N(?i)\.zip$\N}}
		decode = default
		condition = ${if match{${run{/usr/bin/unzip -l $mime_decoded_filename}}}{\N(?i)\.(exe|com|vbs|bat|pif|scr|hta|js|cmd|chm|cpl|jsp|reg|vbe|lnk|dll|sys)\n\N}}
		log_message = forbidden attachment: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients
  
	deny message = Dannoy soobschenie soderjit opasnoe vlojenie

		condition = ${if match{$mime_filename}{\N(?i)\.rar$\N}}
		decode = default
		condition = ${if match{${run{/usr/bin/unrar lb $mime_decoded_filename}}}{\N(?i)\.(exe|com|vbs|bat|pif|scr|hta|js|cmd|chm|cpl|jsp|reg|vbe|lnk|dll|sys)\n\N}}
		log_message = forbidden attachment: filename=$mime_filename, content-type=$mime_content_type, recipients=$recipients

	accept
####################################Проверка вложений zip-rar##########################

acl_check_rcpt:
  deny message          = "Lookup failed"
####################################OpenVPN Исключение#################################
          !hosts = 10.8.200.0/24
####################################OpenVPN Исключение#################################
          condition = ${if eq{$host_lookup_failed}{1}}

#  deny sender_domains = !+local_domains
#          ratelimit = 5/1h/leaky/$authenticated_id
#          message = Bite my shiny metal shaper!

	# Разрешаем сообщения с локалхоста не по TCP/IP 
  accept  hosts = :
	# Запрещаю хосты из чёрного списка
	deny hosts = /etc/exim/exim4.blacklist.hosts
     message = blackhost
     log_message = blackhost $hostname
	
	# Запрещаем использование нестандартных символов в адресах локальных получателей 
 deny    message       = "incorrect symbol in address"
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]
	# Запрещаем использование нестандартных символов в адресах удаленных получателей
  deny    message       = "incorrect symbol in address"
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
	
	# Разрешаем почту на postmaster без проверок
  accept  local_parts   = postmaster
          domains       = +local_domains

	######################!!!!######################### Включаем проверку отправителя########################################
    #require verify = sender
	
	# Запрещаем соединения с теми, кто не предоставляет приветствие по RFC -HELO/EHLO
  deny    message       = "HELO/EHLO required by SMTP RFC"
          condition     = ${if eq{$sender_helo_name}{}{yes}{no}}
	
	# Разрешаем аутентифицированные соединения
  accept  authenticated = *

	# Запрещаем соединения с теми, кто подставляет в приветствие IP-адрес вместо имени
  deny    message       = "Your IP in HELO - access denied!"
          hosts         =  * : !+relay_from_hosts
          condition     = ${if eq{$sender_helo_name}\
    {$sender_host_address}{true}{false}}
	# Запрещаем соединения с теми, кто подставляет IP-адрес нашего сервера в приветствии
  deny    condition     = ${if eq{$sender_helo_name}\
    {$interface_address}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "My IP in your HELO! Access denied!"

	# Запрещаем соединения с теми, у кого в приветствии только цифры
  deny    condition     = ${if match{$sender_helo_name}\
    {\N^\d+$\N}{yes}{no}}
          hosts         = !127.0.0.1 : !localhost : *
          message       = "There is only numbers in HELO!"

	# Запрещаю e-mail адреса из чёрного списка
  deny	senders = wildlsearch;/etc/exim/blackMAIL
		message       = "Ваш адрес: $sender_address в черном списке"
		logwrite = Rejected from $sender_address to $local_part@$domain by blacklist.
		
	# Запрещаем соединения с теми, у кого в имени хоста присутствуют adsl, dialup и т.д
  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
          condition     = ${if match{$sender_host_name} \
                               {adsl|dialup|pool|peer|dhcp} \
                               {yes}{no}}

	# Задержка установления соединения. Как один из методов борьбы со спамом.
  warn
        set acl_m0 = 30s

	# Убираем задержку для "своих" доменов/хостов
  warn
        hosts = +relay_from_hosts:192.168.0.0/24:192.168.1.0/24 #disable waits for 'friendly' hosts
        set acl_m0 = 0s

		warn
		.include_if_exists /etc/exim/whitelistForDelay #БЕЛЫЙ СПИСОК для отключения DELAY
		set acl_m0 = 0s
  warn
        logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
        delay = $acl_m0

	# Проверка на существование пользователей в локальных доменах
  accept  domains       = +local_domains
          endpass
          message       = "No such user"
          verify        = recipient
	
	# Проверка на существование пользователей в релейных доменах
  accept  domains       = +relay_to_domains
          endpass
          message       = "i don't know how to relay to this address"
          verify        = recipient
	
	# Если не подошло ни под одно правило - скорее всего ищут открытый релей
#  deny    message       = "you in blacklist - $dnslist_domain \n $dnslist_text"
          dnslists      = bl.spamcop.net : \
                          cbl.abuseat.org 
                          #bl.csma.biz
			
  accept  hosts         = +relay_from_hosts

  deny    message       = "Homo hominus lupus est"
####################################OpenVPN Исключение#################################
	!hosts = 10.8.200.0/24
	
  accept  hosts = 10.8.200.0/24
####################################OpenVPN Исключение#################################

acl_check_data:
####################################АНТИВИРУС##########################################
  # Запрещаем сообщения содержащие вирусы
  deny malware = *
  message = "В вашем сообщение обнаружен вирус: $malware_name"
  log_message   = Malware found: $malware_name
  demime        = *
####################################АНТИВИРУС########################################## 
####################################ЗАПРЕТЫ############################################
  # if needed - add spam filtering here
  deny    condition     = ${if eq{$h_Subject:}{}{yes}{no}}
          message       = Сервер не отправляет и не принимает письма с пустым полем "Тема"   
		  
  deny    message = Ошибка вложенных файлов ($demime_reason)
          demime = *
          condition = ${if >{$demime_errorlevel}{2}{1}{0}}
		  
  deny    message = Сервер не отправляет и не принимает пустые письма
          log_message = NUL characters!
          condition   = ${if >{$body_zerocount}{0}{1}{0}}
  
  deny    message = Запрещенные вложения .$found_extension файл в списке(blacklisted).
          demime  = com:vbs:bat:pif:scr:exe:js:cmd:reg:hta:chm:cpl:jsp:vbe:lnk:dll:sys
		  
####################################ЗАПРЕТЫ############################################
####################################СПАМ ФИЛЬТРЫ####################################### 
#Метки спам проверок
  warn    message = X-SA-Score: $spam_score ($spam_bar)
          spam = nobody:true
#Метки спам проверок        
  warn    message = X-SA-Status: Yes 
          spam = nobody:true
          condition = ${if >{$spam_score_int}{70}{1}{0}}
#Метки спам проверок		
  warn    message = X-SA-Report: $spam_report
          spam = nobody:true
          condition = ${if >{$spam_score_int}{0}{1}{0}}
#Метки спам проверок		  		  
  warn    message = Subject: ***SPAM*** $h_Subject:
          hosts       = !+relay_from_hosts
		  spam = nobody
		  log_message = Subject: ***SPAM*** $h_Subject:
		  
#Не отправлять письма из локалки с высоким СПАМ балом
  deny    message = Это сообщение будет расценено как СПАМ другим сервером, т.к. сообщение набрало $spam_score СПАМ балов. Удалите рекламную инфорацию из письма
		  hosts       = +relay_from_hosts
          spam = nobody:true
          condition = ${if >{$spam_score_int}{40}{true}{false}}
		  log_message = Это сообщение набрало $spam_score СПАМ балов.
		  
#Не принимать письма с высоким СПАМ балом        
  deny    message = Это сообщение набрало $spam_score СПАМ балов.
          spam = nobody:true
          condition = ${if >{$spam_score_int}{100}{true}{false}}
		  log_message = Это сообщение набрало $spam_score СПАМ балов.
		  
  accept  set acl_m1 = $spam_score_int

  #acl_check_mail:

  ####################################СПАМ ФИЛЬТРЫ#######################################
#########################
# ROUTERS CONFIGURATION                
# Specifies how addresses are handled 
#############################################
#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!   
# An address is passed to each router in turn until it is accepted.              
#############################################
begin routers

	# Поиск маршрута к хосту в DNS
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}'}}

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

##############################
#                      TRANSPORTS CONFIGURATION  
##############################
#                       ORDER DOES NOT MATTER       
#     Only one appropriate transport is called for each delivery.
#######################################
begin transports

	# Включаем доставку по SMTP на удаленные хосты
remote_smtp:
  driver = smtp
#  interface = 4.3.2.1 #your public ip address, if it's the main server ip - you could skip this parameter. if it's an alias- it must be specified in clear

	# Доставка до локальных получателей
dovecot_delivery:
  driver = pipe
  command = /usr/libexec/dovecot/deliver -d $local_part@$domain
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  shadow_transport = local_copy_incoming
  shadow_condition = ${if eq {$domain}{мойдомен.ru}{yes}{no}}
  log_output
  user = exim

address_pipe:
  driver = pipe
  return_output

address_reply:
  driver = autoreply

local_copy_incoming:
	driver = appendfile
	directory = /var/vmail/мойдомен.ru/float_copy@мойдомен.ru/.${tr {$local_part}{.}{_}}@${tr {$domain}{.}{_}}.inbox/
	delivery_date_add
	envelope_to_add
	return_path_add
	group = exim
	user = exim
	mode = 0660
	maildir_format = true
	create_directory = true

local_copy_outgoing:
        driver = appendfile
        delivery_date_add
        envelope_to_add
        return_path_add
        group = exim
        user = exim
        mode = 0660
        maildir_format = true
        create_directory = true

###########################
# Когда делать очередную попытку отправки недоставленных писем      
###########################
begin retry

*                    *       F,2h,15m; G,16h,1h,1.5; F,4d,6h

############################
#                      REWRITE CONFIGURATION    
############################
begin rewrite
################################
#                   AUTHENTICATION CONFIGURATION       
################################
begin authenticators
	# Описание типа аутентификации plain
auth_plain:
     driver = dovecot
     public_name = PLAIN
     server_socket = /var/run/dovecot/auth-client
     server_set_id = $auth1

auth_login:
     driver = dovecot
     public_name = LOGIN
     server_socket = /var/run/dovecot/auth-client
     server_set_id = $auth1

auth_cram_md5:
     driver = dovecot
     public_name = CRAM-MD5
     server_socket = /var/run/dovecot/auth-client
     server_set_id = $auth1

З.Ы. Спойлер не смог влепить...



Последнее исправление: optiqus (всего исправлений: 1)

То есть ты сначала принимаешь сообщения от всех

accept  hosts = :
А потом пытаешься их блокировать? Удачи. :)

fbiagent ★★★
()
Ответ на: Спасибо. от optiqus

Точно прочитали документацию exim насчет exim -bh?

hizel ★★★★★
()
Ответ на: комментарий от fbiagent

Большой и жирный плюсище!

Просто день сисадмина рано начал отмечать)))

optiqus
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.