dnl dnl использовать механизм определения страны по IP адресу dnl NO - не использовать механизм определения страны по IP адресу dnl YES - использовать механизм определения страны по IP адресу dnl define(`confIP2COUNTRY', `NO')dnl dnl dnl при использовании фильтрации писем по стране отправителя (confCHECK_RELAY_COUNTRY_ACCESS) и dnl при указании в заголовках письма информации о странах, через которые прошло письмо (confRELAY_COUNTRIES) dnl значение confIP2COUNTRY автоматически устанавливается равным YES dnl dnl механизм определения страны по IP адресу dnl DLFUNC - определение страны по IP адресу с помощю dlfunc ip2country dnl при этом необходимо: dnl собрать exim с EXPAND_DLFUNC dnl собрать и установить GeoIP library dnl DNSBL - определение страны по IP адресу с помощю DNSBL zz.countries.nerd.dk dnl PTRTLD - определение страны по IP адресу с на основании TLD из PTR записи dnl define(`confIP2COUNTRY_BACKEND', `DNSBL PTRTLD')dnl dnl в качестве значения confIP2COUNTRY_BACKEND можно указывать несколько механизмов dnl ifelse(SECTION, `ACLS_ADDITIONAL', `dnl acl_ip2country: warn set acl_m_country = UNKNOWN ifelse_strstr(confIP2COUNTRY_BACKEND, `DLFUNC', ` warn condition = ${if eq{$acl_m_country}{UNKNOWN}{yes}{no}} set acl_m_country = ${dlfunc{confDLFUNC_PATH/exim-dlfunc.so}{ip2country}{$acl_m_IP}} warn set acl_m_country = ${sg{$acl_m_country}{--}{UNKNOWN}} condition = ${if eq{$acl_m_country}{}{yes}{no}} set acl_m_country = UNKNOWN ') dnl ifelse_strstr(confIP2COUNTRY_BACKEND, `DLFUNC', `') ifelse_strstr(confIP2COUNTRY_BACKEND, `DNSBL', ` warn condition = ${if eq{$acl_m_country}{UNKNOWN}{yes}{no}} set acl_m_country = ${lookup dnsdb{txt=<,${sg{$acl_m_IP}\ {\N^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$\N}{\$4.\$3.\$2.\$1}}.zz.countries.nerd.dk}{$value}{UNKNOWN}} ') dnl ifelse_strstr(confIP2COUNTRY_BACKEND, `DNSBL', `') ifelse_strstr(confIP2COUNTRY_BACKEND, `PTRTLD', ` warn condition = ${if eq{$acl_m_country}{UNKNOWN}{yes}{no}} ## определяем страну по PTR записи в реверсной зоне только если существует соответствующая запись в прямой зоне # set acl_m_hostname = ${if eq{$acl_m_IP}{$sender_host_address}{$sender_host_name}{${lookup dnsdb{ptr=$acl_m_IP}{$value}{}}}} ## определяем страну по PTR записи в реверсной зоне даже если не существует соответствующая запись в прямой зоне set acl_m_hostname = ${if and{\ {eq{$acl_m_IP}{$sender_host_address}}\ {!eq{$sender_host_name}{}}\ }{$sender_host_name}{${lookup dnsdb{ptr=$acl_m_IP}{$value}{}}}} set acl_m_country = ${if match{$acl_m_hostname}{\N(?i)^.+\.([a-z][a-z])$\N}{$1}{UNKNOWN}} ') dnl ifelse_strstr(confIP2COUNTRY_BACKEND, `PTRTLD', `') warn set acl_m_country = ${uc:$acl_m_country} accept ') dnl ifelse(SECTION, `ACLS_ADDITIONAL', `')