dnl базовый каталог с настройками define(`confCONFDIR', `/usr/local/etc/exim')dnl ifelse(confOS, `FreeBSD', `define(`confCONFDIR', `/usr/local/etc/exim')')dnl ifelse(confOS, `Linux', `define(`confCONFDIR', `/etc/exim')')dnl ifelse(confOS2, `Debian', `define(`confCONFDIR', `/etc/exim4')')dnl ifelse(confOS, `OpenBSD', `define(`confCONFDIR', `/etc/exim')')dnl ifelse(confOS, `NetBSD', `define(`confCONFDIR', `/usr/pkg/etc/exim')')dnl ifelse(confOS, `DragonFly', `define(`confCONFDIR', ifelse(confPKGSRC, `YES', `/usr/pkg/etc/exim', `/usr/local/etc/exim'))')dnl ifelse(confOS, `QNX', `define(`confCONFDIR', `/usr/pkg/etc/exim')')dnl ifelse(confOS, `SunOS', `define(`confCONFDIR', ifelse(confPKGSRC, `YES', `/usr/pkg/etc/exim', `/opt/csw/etc/exim'))')dnl ifelse(confOS, `Darwin', `define(`confCONFDIR', ifelse(confPKGSRC, `YES', `/usr/pkg/etc/exim', `/opt/local/etc/exim'))')dnl dnl dnl каталог/файл планировщика задач define(`confPERIODIC', `/usr/local/etc/periodic/daily')dnl ifelse(confOS, `FreeBSD', `define(`confPERIODIC', `/usr/local/etc/periodic/daily')')dnl ifelse(confOS, `Linux', `define(`confPERIODIC', `/etc/cron.daily')')dnl ifelse(confOS, `OpenBSD', `define(`confPERIODIC', `/etc/daily.local')')dnl ifelse(confOS, `NetBSD', `define(`confPERIODIC', `/etc/daily.local')')dnl ifelse(confOS, `DragonFly', `define(`confPERIODIC', ifelse(confPKGSRC, `YES', `/etc/daily.local', `/usr/local/etc/periodic/daily'))')dnl ifelse(confOS, `QNX', `define(`confPERIODIC', `/usr/pkg/etc/exim/periodic/daily.local')')dnl ifelse(confOS, `SunOS', `define(`confPERIODIC', ifelse(confPKGSRC, `YES', `/usr/pkg/etc/exim/periodic/daily.local', `/opt/csw/etc/exim/periodic/daily.local'))')dnl ifelse(confOS, `Darwin', `define(`confPERIODIC', ifelse(confPKGSRC, `YES', `/usr/pkg/etc/exim/periodic/daily.local', `/opt/local/etc/exim/periodic/daily.local'))')dnl dnl dnl каталог файлов протоколов почтового сервера define(`confLOGDIR', `/var/log/exim')dnl ifelse(confOS2, `Debian', `define(`confLOGDIR', `/var/log/exim4')')dnl ifelse(confOS, `Darwin', `define(`confLOGDIR', ifelse(confPKGSRC, `YES', `/var/log/exim', `/opt/local/var/spool/exim/log'))')dnl dnl dnl каталог с данными почтового сервера define(`confSPOOLDIR', `/var/spool/exim')dnl ifelse(confOS2, `Debian', `define(`confSPOOLDIR', `/var/spool/exim4')')dnl ifelse(confOS, `Darwin', `define(`confSPOOLDIR', ifelse(confPKGSRC, `YES', `/var/spool/exim', `/opt/local/var/spool/exim'))')dnl dnl dnl имя почтового домена по умолчанию dnl пример: dnl define(`confQUALIFY_DOMAIN',`your.domain.tld')dnl dnl dnl список локальных доменов dnl пример: define(`confLOCAL_DOMAINS',`lsearch;CONFDIR/domains-local')dnl dnl dnl локальные интерфейсы dnl перечисление адресов локальных интерфейсов, на которых exim dnl будет слушать входящие соединения dnl пример: dnl define(`confLOCAL_INTERFACES',`127.0.0.1 : 10.0.0.1')dnl dnl dnl каталог с подоменными настройками define(`confVIRT_MDIR_DOMAIN_SETTINGS', `CONFDIR/virt_domains')dnl dnl dnl ################################################################## dnl GENERAL CONFIGURATION CONTROLS dnl ################################################################## dnl dnl пользовательские параметры для секции GENERAL CONFIGURATION CONTROL dnl NO - не использовать файл с пользовательскими опциями dnl имя_файла - имя файла с пользовательскими опциями define(`confCONFIGURE_GENERAL', `NO')dnl dnl пример: dnl define(`confCONFIGURE_GENERAL', confCONFDIR`/site/configure.general')dnl dnl dnl пользователь, с правами которого запускается exim ifdef(`confEXIM_USER',`',` define(`confEXIM_USER', `mailnull')dnl ifelse(confOS, `FreeBSD', `define(`confEXIM_USER', `mailnull')')dnl ifelse(confOS, `Linux', `define(`confEXIM_USER', `exim')')dnl ifelse(confOS2, `Debian', `define(`confEXIM_USER', `Debian-exim')')dnl ifelse(confOS, `OpenBSD', `define(`confEXIM_USER', `_exim')')dnl ifelse(confOS, `NetBSD', `define(`confEXIM_USER', `mail')')dnl ifelse(confOS, `DragonFly', `define(`confEXIM_USER', ifelse(confPKGSRC, `YES', `mail', `mailnull'))')dnl ifelse(confOS, `QNX', `define(`confEXIM_USER', `mail')')dnl ifelse(confOS, `SunOS', `define(`confEXIM_USER', ifelse(confPKGSRC, `YES', `mail', `exim'))')dnl ifelse(confOS, `Darwin', `define(`confEXIM_USER', ifelse(confPKGSRC, `YES', `mail', `exim'))')dnl ') dnl dnl группа, с правами которой запускается exim ifdef(`confEXIM_GROUP',`',` define(`confEXIM_GROUP', `mail')dnl ifelse(confOS, `FreeBSD', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `Linux', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `Debian', `define(`confEXIM_GROUP', `Debian-exim')')dnl ifelse(confOS, `OpenBSD', `define(`confEXIM_GROUP', `_exim')')dnl ifelse(confOS, `NetBSD', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `DragonFly', `define(`confEXIM_GROUP', ifelse(confPKGSRC, `YES', `mail', `mail'))')dnl ifelse(confOS, `QNX', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `SunOS', `define(`confEXIM_GROUP', ifelse(confPKGSRC, `YES', `mail', `exim'))')dnl ifelse(confOS, `Darwin', `define(`confEXIM_GROUP', ifelse(confPKGSRC, `YES', `mail', `mail'))')dnl ') dnl dnl владелец конфигурационного файла define(`confCONFIGURE_OWNER', `root')dnl dnl dnl группа владелеца конфигурационного файла define(`confCONFIGURE_GROUP', `wheel') ifelse(confOS, `SunOS', `define(`confCONFIGURE_GROUP', `other')')dnl ifelse(confOS, `QNX', `define(`confCONFIGURE_GROUP', `root')')dnl ifelse(confOS2, `Debian', `define(`confCONFIGURE_GROUP', `Debian-exim')')dnl dnl dnl настройка протоколирования работы: define(`confLOG_SELECTOR', `+smtp_connection +smtp_protocol_error +smtp_syntax_error +lost_incoming_connection +connection_reject +dnslist_defer +host_lookup_failed -retry_defer -skip_delivery -queue_run -rejected_header -acl_warn_skipped')dnl dnl dnl ограничение размера сообщений define(`confMESSAGE_SIZE_LIMIT', `50M') dnl dnl персональные ограничения на размер исходящих писем dnl NO - не применять персональные ограничения на размер исходящих писем dnl YES - применять персональные ограничения на размер исходящих писем define(`confMESSAGE_SIZE_LIMIT_OUT', `NO') dnl персональные ограничения на размер исходящих писем указываются в файле max_out_message_size dnl ограничения можно указывать по IP адресу хоста отправителя, envelope from отправителя или dnl SMTP логину dnl dnl персональные ограничения на размер входящих писем dnl NO - не применять персональные ограничения на размер входящих писем dnl YES - применять персональные ограничения на размер входящих писем define(`confMESSAGE_SIZE_LIMIT_IN', `NO') dnl персональные ограничения на размер исходящих писем указываются в файле max_in_message_size dnl ограничения можно указывать только по envelope to получателя dnl define(`confIGNORE_BOUNCE_ERRORS_AFTER', `2d')dnl define(`confTIMEOUT_FROZEN_AFTER', `7d')dnl dnl dnl путь на файл с perl'овыми hook'ами: dnl define(`confPERL', `CONFDIR/exim.pl') dnl файл с hook'ами необходим при использовании: dnl confGREYLIST, confMAILERTABLE, confRELAY_BASED_ON_MX, dnl confCHECK_HELO_FORGED dnl dnl путь к каталогу для динамически загружаемой библиотеки с пользовательскими функциями: define(`confDLFUNC_PATH', `/usr/local/libexec/exim') ifelse(confPKGSRC, `YES', `define(`confDLFUNC_PATH', `/usr/pkg/libexec/exim')')dnl ifelse(confOS, `Darwin', `define(`confDLFUNC_PATH', ifelse(confPKGSRC, `YES', `/usr/pkg/libexec/exim', `/opt/local/libexec/exim'))')dnl dnl dnl ################################################################## dnl FEATURES dnl ################################################################## dnl dnl поддержка IPv6 dnl NO - не использовать IPv6 dnl DISABLE - не использовать IPv6 и в явном виде указать dnl disable_ipv6 = true dnl (актуально при необходимости избежать доставки исходящих dnl писем по IPv6, если exim собран с поддержкой IPv6) dnl YES - использовать IPv6 define(`confIPv6', `NO')dnl dnl dnl адрес и порт для обращения к memcached define(`confMEMCACHED_HOST', `localhost')dnl define(`confMEMCACHED_PORT', `11211')dnl define(`confMEMCACHED_TIMEOUT', `5s')dnl dnl dnl описание параметров доступа к redis dnl define(`confREDIS', `127.0.0.1/0/xxxxxxxx')dnl dnl dnl описание параметров доступа к БД MySQL dnl define(`confMYSQL', `127.0.0.1/mail/exim/xxxxxxxx')dnl dnl dnl ################################################################## dnl dnl использование списка подозрительных хостов в MySQL dnl (только в enterprise версии) dnl NO - не использовать список dnl YES - использовать список define(`confMYSQL_DANGEROUS', `NO')dnl dnl dnl ################################################################## dnl dnl описание параметров доступа к БД SQLite dnl define(`confSQLITE', `/usr/local/etc/mail.db')dnl dnl dnl ################################################################## dnl dnl использование списка подозрительных хостов в SQLite dnl (только в enterprise версии) dnl NO - не использовать список dnl YES - использовать список define(`confSQLITE_DANGEROUS', `NO')dnl dnl dnl путь к файлу данных SQLite со списком подозрительных хостов define(`confSQLITE_DANGEROUS_CACHE', `confSPOOLDIR/db/dangerous.db')dnl dnl confSQLITE_DANGEROUS_CACHE может совпадать с confSQLITE dnl dnl ################################################################## dnl dnl исключения из проверки SMTP синхронизации dnl NO - не делать исключений dnl YES - включить исключения из проверки SMTP синхронизации define(`confNO_ENFORCE_SYNC', `NO')dnl dnl dnl какие именно хосты и сети исключаются из проверки SMTP синхронизации dnl при значении YES переменной confNO_ENFORCE_SYNC: define(`confNO_ENFORCE_SYNC_HOSTS', `+relay_from_hosts')dnl dnl dnl ################################################################## dnl dnl поддержка ETRN dnl NO - отключить поддержку ETRN dnl YES - включить поддержку ETRN define(`confETRN_ENABLE', `NO')dnl dnl пока ETRN поддерживается для host'ов из relay_from_hosts и trusted_hosts dnl dnl ################################################################## dnl dnl Анонимность dnl dnl скрывать в Received информацию о хостах из hosts-relayfrom dnl NO - не скрывать информцию о хостах dnl YES - скрывать информцию о хостах define(`confANONYM_RCVD_HIDE_HOST_INFO', `NO')dnl dnl dnl скрывать в Received информацию о MTA dnl NO - не скрывать информцию о MTA dnl VERSION - скрывать информцию о версии MTA dnl OS - скрывать информцию об ОС dnl ALL - скрывать всю информцию о MTA define(`confANONYM_RCVD_HIDE_MTA_INFO', `ALL')dnl dnl значения VERSION и OS могут быть указаны через пробел dnl dnl скрывать в SMTP баннере информацию о MTA dnl NO - не скрывать информцию о MTA dnl MTA - скрывать информцию о MTA dnl VERSION - скрывать информцию о версии MTA dnl DATE - скрывать дату dnl ALL - скрывать всю информцию о MTA define(`confANONYM_BANNER_HIDE_MTA_INFO', `NO')dnl dnl значения MTA, VERSION и DATE могут быть указаны через пробел dnl dnl ручная установка SMTP баннера: dnl define(`confSMTP_BANNER', `$primary_hostname ESMTP daemon')dnl dnl при ручном указании SMTP баннера значение переменной dnl confANONYM_BANNER_HIDE_MTA_INFO игнорируется dnl dnl разрешение автоматической генерации расширенного текста SMTP баннера при расширенных проверка HELO/EHLO define(`confSMTP_BANNER_ADDITIONAL_ENABLE', `YES')dnl dnl dnl ################################################################## dnl dnl define(`confRECEIVED_HEADER_TEXT', `Received: ${if def:sender_rcvhost {from $sender_rcvhost\n\t}{${if def:sender_ident {from ${quote_local_part:$sender_ident} }}${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}by $primary_hostname ${if def:received_protocol {with $received_protocol}} ${if def:tls_cipher {($tls_cipher)\n\t}}(Exim $version_number)\n\t${if def:sender_address {(envelope-from <$sender_address>)\n\t}}id $message_exim_id${if def:received_for {\n\tfor $received_for}}')dnl dnl define(`confRECEIVED_PRIMARY_HOSTNAME', `$primary_hostname') dnl dnl ################################################################## dnl dnl использование ratelimit'ов dnl NO - не использовать ratelimit'ы dnl HOST - использовать ratelimit'ы по хостам отправителей dnl AUTH - использовать ratelimit'ы по учетным записям dnl аутентифицировавшихся отправителей dnl MAIL - использовать ratelimit'ы по адресам отправителей dnl RCPT - использовать ratelimit'ы по адресам получателей dnl DEBUG - выводить в файл протокола результаты расчет dnl ratelimit'ов вне зависимости от их превышения define(`confRATELIMIT', `NO')dnl dnl возможно одновременное использование нескольких значений dnl dnl настройки ratelimit'ов по хостам отправителей указываются в файле ratelimit-host dnl настройки ratelimit'ов по учетным записям аутентифицировавшихся отправителей указываются в файле ratelimit-auth dnl настройки ratelimit'ов по адресам отправителей указываются в файле ratelimit-mail dnl настройки ratelimit'ов по адресам получателей указываются в файле ratelimit-rcpt dnl dnl во всех файлах настроек ratelimit'ов данные указываются однотипно в виде: dnl dnl аргумент : лимит : действие : сообщение dnl dnl где: dnl аргумент - это адрес хоста отправителя в случае ratelimit-host, dnl SMTP логин в случае ratelimit-auth, адреса отправителя dnl и получателя в случае ratelimit-mail и ratelimit-rcpt. dnl лимит - ограничение в виде "количество / время" dnl действие - действие, применяемое к письму (может отсутствовать) dnl сообщение - сообщение SMTP клиенту dnl dnl адреса хостов можно задавать в виде IP адресов, номеров сетей, имен dnl хостов, в том числе указанных по маске или в виде регулярного dnl выражения. dnl dnl SMTP логины и адреса отправителей и получателей можно указывать в dnl виде полных адресов, масок или регулярных выражений. dnl dnl лимит указывается в виде "количество сообщений / период времени". dnl dnl возможные действия: dnl ok - исключение из проверки dnl warn - вывод предупреждения в файл протокола и добавление в письмо поля заголовка dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl по умолчанию применяется действие defer. dnl dnl при описании действий можно использовать вычисляемые выражения. dnl пример: dnl * : 20 / 10m : defer delay=${eval:${sg{$sender_rate}{\N[\.].*$\N}{}} - $sender_rate_limit} : Try again later dnl dnl в качестве сообщения SMTP клиенту указывается не столько само dnl сообщение, сколько его уточнение dnl в уточнии сообщения SMTP клиенту можно использовать вычислямые dnl выражения, например в нем можно использовать переменные $sender_rate, dnl $sender_rate_limit и $sender_rate_period dnl dnl по умолчанию SMTP клиенту возвращаются следующие сообщения: dnl Sender host rate exceeds limit dnl Sender rate exceeds limit dnl Recipient rate exceeds limit dnl dnl далее следует уточнение сообщения. если оно отсутсвует, то dnl используется фраза "Try again later" dnl dnl ################################################################## dnl dnl добавление поля Authentication-Results с результатами проверки резолвинга dnl рилея отправителя, результатами проверки соответствия адреса рилея dnl отправителя SPF записи домена отправителя и результатами проверки DKIM dnl подписи: dnl NO - не добавлять поле Authentication-Results dnl YES - добавлять поле Authentication-Results define(`confAUTH_RESULTS_ADD', `NO') dnl dnl действие для существующих заголовков Authentication-Results dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confAUTH_RESULTS_OLD_HEADERS', `REMOVE')dnl dnl dnl ################################################################## dnl dnl поддержка DKIM dnl dnl запрет проверки подписи DKIM (для exim 4.70 и выше): dnl NO - не проводить проверку DKIM подписей dnl YES - проводить проверку DKIM подписей dnl DISABLE - запретить exim'у проводить проверку DKIM подписей define(`confDKIM_CHECK', `NO')dnl dnl dnl поддержка ADSP (Author Domain Signing Practices) dnl NO - не проводить проверку ADSP dnl YES - проводить проверку ADSP define(`confDKIM_CHECK_ADSP', `NO')dnl dnl dnl ################################################################## dnl dnl проверка соответствия адреса хоста отправителя SPF записи домена отправителя dnl NO - отключить поддержку SPF dnl YES - включить поддержку SPF dnl DEFER_OK - включить поддержку SPF и игнорировать невозможность dnl проверки соответствия адреса хоста отправителя SPF записи домена отправителя define(`confSPF2', `NO')dnl dnl dnl варианты действий при несоответствии рилея отправителя SPF записи домена отправителя dnl описаны в файле CONFDIR/access-spf2 в виде: dnl dnl sender.domain.tld|result : действие : сообщение клиенту : сообщение в файл протокола dnl dnl где sender.dom.tld - домен отправителя, допускаются wildcards dnl result - результат проверки соответствия рилея отправителя SPF записи dnl домена отправителя (pass, fail, softfail, none, neutral, dnl permerror, temperror dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-MX dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx или greylisting=xx - добавление xx баллов к счетчику опционального greylisting'а dnl reject=yy или deny=yy - добавление yy баллов к счетчику опционального reject'а dnl delay=zz или pause=zz - задержка на zz секунд перед продолжением обработки сообщения dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl сообщения, возвращаемое клиенту и выводимое в файл протокола, могут отсуствовать dnl dnl пример: dnl *.aol.com|fail : deny : AOL sender, but not from AOL-approved relay dnl *.aol.com|neutral : warn : AOL sender, but not from AOL-approved relay dnl aol.com|fail : deny : AOL sender, but not from AOL-approved relay dnl aol.com|neutral : deny : AOL sender, but not from AOL-approved relay dnl dnl bigmir.net|softfail : defer dnl bigmir.net|temperror: defer dnl gala.net|softfail : deny : You can not send messages with gala.net as sender domain dnl gala.net|fail : deny : You can not send messages with gala.net as sender domain dnl rambler.ru|softfail : deny : You can not send messages with rambler.ru as sender domain dnl rambler.ru|fail : deny : You can not send messages with rambler.ru as sender domain dnl dnl *|fail : deny dnl *|softfail : defer dnl *|temperror : defer dnl *|neutral : warn dnl dnl исключения из проверки SPF записей указываются в файле CONFDIR/access-spf2 в виде: dnl адрес_отправителя : skip : список сетей dnl dnl пример: dnl *@hotmail.com : skip : 194.183.162.130 dnl dnl необходимо внести в виде исключений адреса backup MX'ов: dnl * : skip : backup_MX_1 : backup_MX_2 dnl dnl backend для проверки соответствия адреса хоста отправителя SPF записи домена отправителя dnl LIBSPF2 - использовать libspf2 dnl SPFD - использовать spfd из состава Mail::SPF::Query define(`confSPF2_BACKEND', `LIBSPF2')dnl dnl dnl путь к файлу UNIX domain socket'а при использовании spfd в качестве backend для dnl проверки соответствия адреса хоста отправителя SPF записи домена отправителя define(`confSPF2_SPFD_SOCKET', `/tmp/spfd')dnl dnl dnl ################################################################## dnl dnl проверка меток хостов как валидных эмиттеров в реверсной зоне dnl dnl Marking Mail Transfer Agents in Reverse DNS with TXT RRs dnl http://www.ietf.org/internet-drafts/draft-stumpf-dns-mtamark-02.txt dnl dnl NO - не проверять метки MTA dnl YES - проверять метки MTA define(`confMTA_MARK_ENABLE', `NO') dnl dnl название метки define(`confMTA_MARK', `perm.smtp.srv') dnl define(`confMTA_MARK', `_perm._smtp._srv') dnl define(`confMTA_MARK', `_send._smtp._srv') dnl dnl ################################################################## dnl dnl поддержка Reverse-Path Rewriting (aka Sender Rewriting Scheme) dnl http://spf.pobox.com/srs.html dnl http://www.infradead.org/rpr.html dnl NO - отключить поддержку SRS dnl YES - включить поддержку SRS define(`confSRS', `NO')dnl dnl dnl пароль define(`confSRS_SECRET', `somesecret')dnl dnl dnl длина hash'а define(`confSRS_HASH_LENGTH', `20')dnl dnl dnl время жизни SRS подписи, дн. define(`confSRS_DSN_TIMEOUT', `7')dnl dnl dnl SRS домен dnl пример: dnl define(`confSRS_DOMAIN', `srs.local.domain')dnl dnl при этом надо прописать wildcard для MX записей в настройках DNS сервера dnl пример: dnl *.srs.local.domain IN MX 10 this.host. dnl dnl режим отладки dnl NO - выключить режим отладки dnl YES - включить режим отладки define(`confSRS_DEBUG', `NO')dnl dnl dnl список отправителей, адреса которых подписываются SRS указывается dnl в файле CONFDIR/senders-always-srs в виде: dnl domain0 : maibox00 : mailbox01 : mailbox02 dnl domain1 : maibox10 : mailbox11 dnl список адресов по умолчанию можно указать, используя "*" в качестве домена dnl пример: dnl domain.tld : * dnl our.domain.com : !postmaster : * dnl dnl список получателей, для которых не надо подписывать обратный адрес отправителя dnl с помощью SRS указывается в файле CONFDIR/skip_srs_recipients dnl рекомендуется внести в этот файл адреса списков рассылок и других получателей, dnl которые идентифицируют отправителей по envelope from, а не по header from dnl адреса в списке указывается построчно dnl пример: dnl exim-users@exim.org.ua dnl freebsd@freebsddiary.org.ua dnl *@yahoogroups.com dnl dnl ################################################################## dnl dnl поддержка Mailman dnl NO - выключить поддержку Mailman dnl YES - включить поддержку Mailman define(`confMAILMAN', `NO')dnl dnl dnl Mailman home directory define(`confMAILMAN_HOME', `/usr/local/mailman')dnl dnl Mailman group dnl не определено dnl пример: dnl define(`confMAILMAN_GROUP', `mailnull')dnl dnl по умолчанию будет использована группа, от имени которого выполняется exim dnl dnl ################################################################## dnl dnl поддержка работы в качестве backup MX для нелокальных доменов dnl NO - выключить поддержку backup MX dnl YES - включить поддержку backup MX define(`confSECONDARY_RELAY', `NO')dnl dnl dnl ################################################################## dnl dnl пользователь, получающий письма для несуществующих пользователей локальных доменов dnl NO - не принимать письма, адресованные несуществующим пользователям dnl локальных доменов dnl addr@domain - адрес пользователя, которому будут пересылаться все письма, dnl адресованные несуществующим пользователям локальных доменов define(`confLUSER', `NO')dnl dnl dnl пример: dnl define(`confLUSER', `admin@local.domain.tld')dnl dnl dnl ################################################################## dnl dnl использование суффиксов (admin+test@local.domain.tld): dnl NO - не использовать суффиксы адресов dnl any_suffixes - использовать суффиксы адресов define(`confLOCAL_PART_SUFFIX', `NO') dnl dnl суффиксы указываются в виде списка, разделенного двоеточиями dnl dnl пример: dnl define(`confLOCAL_PART_SUFFIX', `+* : -*') dnl define(`confLOCAL_PART_SUFFIX', `+*') dnl dnl dnl ################################################################## dnl dnl таблица виртуальных пользователей dnl NO - не использовать virtusertable dnl SINGLE_FILE - хранение списка пользователей в одном текстовом файле dnl SINGLE_DBM - хранение списка пользователей в одном DBM файле dnl DOMAINS_FILES - хранение списка пользователей в отдельных файлах для каждого домена dnl DOMAINS_DBM - хранение списка пользователей в отдельных DBM файлах для каждого домена dnl MYSQL - хранение списка пользователей в БД MySQL dnl SQLITE - хранение списка пользователей в БД SQLite define(`confVIRTUSERTABLE', `SINGLE_FILE')dnl dnl dnl значения SINGLE_FILE и SINGLE_DBM могут использоваться одновременно с DOMAINS_FILES и DOMAINS_DBM dnl dnl путь к отдельным файлам для каждого домена (если confVIRTUSERTABLE содержит DOMAINS_FILES или DOMAINS_DBM) dnl определяется как confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable или dnl confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/virtusertable.db соответственно dnl define(`confVIRTUSERTABLE_SINGLE', `CONFDIR/virtusertable')dnl define(`confVIRTUSERTABLE_MYSQL', `SELECT address FROM virtusertable WHERE alias="${quote_mysql:$local_part@$domain}"')dnl define(`confVIRTUSERTABLE_DOMAIN_MYSQL', `SELECT address FROM virtusertable WHERE alias="${quote_mysql:@$domain}"')dnl define(`confVIRTUSERTABLE_SQLITE', `SELECT address FROM virtusertable WHERE alias="${quote_sqlite:$local_part@$domain}"')dnl define(`confVIRTUSERTABLE_DOMAIN_SQLITE', `SELECT address FROM virtusertable WHERE alias="${quote_sqlite:@$domain}"')dnl dnl dnl исключение из персональных карантинов писем, маршрутизируемых через virtusertable dnl NO - не исключать из персональных карантинов письма, маршрутизируемые через virtusertable dnl YES - исключать из персональных карантинов письма, маршрутизируемые через virtusertable define(`confVIRTUSERTABLE_SKIP_QUARANTINED', `NO')dnl dnl dnl ############################################## dnl dnl использование domain literals (например, postmaster@[207.46.245.222]) dnl NO - не использовать domain literals dnl YES - не использовать domain literals define(`confDOMAIN_LITERALS', `NO')dnl dnl соответствующие домены перечисляются в файле domains-literals: dnl пример: dnl [207.46.245.222] dnl [207.46.245.214] dnl соответствия между адресами в виде domain literals и реальными адресами получателей dnl прописываются в virtusertable dnl пример: dnl postmaster@[207.46.245.222]: postmaster@local.domain dnl abuse@[207.46.245.222]: abuse@local.domain dnl dnl ############################################## dnl dnl проверка синтаксиса SMTP команд MAIL и RCPT dnl dnl NO - не проводить проверку синтаксиса SMTP команд dnl YES - проводить проверку синтаксиса SMTP команд dnl define(`confCHECK_SMTP_COMMANDS', `NO')dnl dnl dnl шаблоны проверки синтаксиса SMTP команд находятся в файлах dnl CONFDIR/access-smtp-command-mail и CONFDIR/access-smtp-command-rcpt dnl в виде: dnl шабьлон : действие : сообщение SMTP клиенту : сообщение в файл протокола dnl dnl в качестве "действия" могут выступать: dnl ok - исключать проверяемое значение из дальнейших проверок dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-SMTP-Command dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl пример (для access-smtp-command-mail): dnl \N^(?-i)MAIL\x20FROM\x3A\s*[^<\s]\N : warn delay=20 greylist=10 reject=2 : Temporary local problem : The angle brackets in MAIL FROM command not found dnl \N^(?-i)Mail\x20from\x3A\s*[^<\s]\N : warn delay=20 greylist=10 reject=2 : Temporary local problem : The angle brackets in MAIL FROM command not found dnl \N^(?-i)MAIL\x20FROM\x3A\N : ok dnl \N^(?-i)Mail\x20from\x3A\N : ok dnl \N^(?-i)[^\x3A]*[a-z][^\x3A]*\x3A\s*[^<\s]\N : warn delay=30 greylist=10 reject=4 : Temporary local problem : The angle brackets in MAIL FROM command not found and lowercase letter has found in MAIL FROM command dnl \N^mail\x20from\x3A\s*[^<\s]\N : warn delay=20 greylist=10 reject=2 : Temporary local problem : The angle brackets in MAIL FROM command not found dnl \N^(?-i)[^\x3A]*[a-z][^\x3A]*\x3A\N : warn delay=20 greylist=10 reject=2 : Temporary local problem : Lowercase letter has found in MAIL FROM command dnl dnl ############################################## dnl dnl локальная доставка (список) dnl MBOX - доставка в mailbox'ы в /var/mail dnl с MBOX можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl MDIR_USER - доставка в maildir'ы в $home/Maildir dnl с MDIR_USER можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl MDIR_VIRTUAL - доставка в виртуальные maildir'ы в confVIRT_MDIR_ROOT/$domain dnl с MDIR_USER и MDIR_VIRTUAL можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl PIPE - использование внешнего LDA dnl PIPE-LMTP - доставка через внешний LDA по LMTP define(`confDELIVERY_TO', `MBOX FILTERS PROCMAIL')dnl dnl dnl при наличии PROCMAIL в confDELIVERY_TO: dnl путь к procmail: define(`confPROCMAIL_PATH', `/usr/local/bin/procmail')dnl dnl dnl при наличии MBOX или MDIR_USER в confDELIVERY_TO: dnl dnl место хранения алиасов: dnl TEXT - хранение алиасов в текстовом файле dnl DBM - хранение алиасов в DBM файле define(`confSYSTEM_ALIASES', `DBM')dnl dnl dnl при наличии MDIR_USER в confDELIVERY_TO: dnl dnl путь к пользовательскому maildir'у: define(`confMDIR_USER_MAILDIR', `$home/Maildir/')dnl dnl define(`confMDIR_USER_MAILDIR', `/home/$local_part/Maildir/')dnl dnl define(`confMDIR_USER_MAILDIR', `confVIRT_MDIR_ROOT/domain/$local_part/')dnl dnl dnl при наличии MDIR_VIRTUAL в confDELIVERY_TO: dnl dnl корневой каталог виртуальных maildir'ов виртуальных доменов define(`confVIRT_MDIR_ROOT', `/var/vmail')dnl dnl путь к maildir'у получателя dnl define(`confVIRT_MDIR_PATH', confVIRT_MDIR_ROOT`/$domain/$local_part') dnl dnl пользователь, от имени которого доставляется почта в virtual maildir'ы define(`confVIRT_MDIR_USER', `mailnull')dnl dnl группа, от имени которой доставляется почта в virtual maildir'ы define(`confVIRT_MDIR_GROUP', `mail')dnl dnl производить ли рекурвисный chown каталога spool'а при gmake install define(`confVIRT_MDIR_CHOWN_RECURSIVE', `YES')dnl dnl производить ли рекурвисный chmod каталога spool'а при gmake install define(`confVIRT_MDIR_CHMOD_RECURSIVE', `YES')dnl dnl dnl dnl место хранения списка пользователей dnl SINGLE_FILE - хранение списка пользователей в файле типа passwd dnl DOMAINS_FILES - хранение списка пользователей в отдельных файлах для каждого домена dnl MYSQL - хранение списка пользователей в БД MySQL dnl PGSQL - хранение списка пользователей в БД PgSQL dnl SQLITE - хранение списка пользователей в БД MySQL dnl LDAP - хранение списка пользователей в БД LDAP dnl CYRUS-IMAPD - хранение список пользователей в cyrus-imapd dnl (проверка существования пользователей с помощью mbpath) define(`confVIRT_MDIR_USERLIST', `DOMAINS_FILES')dnl dnl dnl dnl путь к файлу типа passwd (если confVIRT_MDIR_USERLIST содержит SINGLE_FILE) define(`confVIRT_MDIR_USERLIST_SINGLE', `/usr/local/etc/passwd.imap')dnl dnl dnl dnl путь к отдельным файлам для каждого домена (если confVIRT_MDIR_USERLIST содержит DOMAINS_FILES) dnl определяется как confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/passwd dnl dnl dnl синтаксис SQL запроса к MySQL (если confVIRT_MDIR_USERLIST=MYSQL) define(`confVIRT_MDIR_MYSQL', `SELECT id, maildir as home, maildir as maildir FROM passwd WHERE id="${quote_mysql:$local_part@$domain}"')dnl dnl define(`confVIRT_MDIR_MYSQL', `SELECT userid FROM dbmail_users WHERE userid="${quote_mysql:$local_part@$domain}"')dnl dnl define(`confVIRT_MDIR_MYSQL2', `SELECT alias FROM dbmail_aliases WHERE alias="${quote_mysql:$local_part@$domain}" OR alias="${quote_mysql:@$domain}"')dnl dnl dnl dnl синтаксис SQL запроса к PgSQL (если confVIRT_MDIR_USERLIST=PGSQL) dnl changequote(<<, >>) dnl define(<>, <>)dnl dnl changequote dnl dnl dnl синтаксис SQL запроса к SQLite (если confVIRT_MDIR_USERLIST=SQLITE) define(`confVIRT_MDIR_SQLITE', `SELECT id, maildir as home, maildir as maildir FROM passwd WHERE id="${quote_sqlite:$local_part@$domain}"')dnl dnl define(`confVIRT_MDIR_SQLITE', `SELECT userid as id FROM dbmail_users WHERE userid="${quote_sqlite:$local_part@$domain}"')dnl dnl define(`confVIRT_MDIR_SQLITE2', `SELECT alias FROM dbmail_aliases WHERE alias="${quote_sqlite:$local_part@$domain}" OR alias="${quote_sqlite:@$domain}"')dnl dnl dnl dnl синтаксис LDAP запроса (если confVIRT_MDIR_USERLIST=LDAP) и преобразование результата выполнения запроса dnl confVIRT_MDIR_LDAP в путь к maildir получателя: dnl пример 1: dnl define(`confVIRT_MDIR_LDAP', `user="cn=Manager,dc=domain,dc=tld" pass=xxxxxxxx ldap://127.0.0.1/cn=Users,dc=domain,dc=tld?uid?sub?(uid=$local_part@$domain)')dnl dnl define(`confVIRT_MDIR_PATH_LDAP', `confVIRT_MDIR_ROOT/$domain/$local_part/')dnl dnl пример 2: dnl define(`confVIRT_MDIR_LDAP', `user="cn=Manager,dc=domain,dc=tld" pass=xxxxxxxx ldap://127.0.0.1/cn=Users,dc=domain,dc=tld?uid,homeDirectory?sub?(uid=$local_part@$domain)')dnl dnl define(`confVIRT_MDIR_PATH_LDAP', `confVIRT_MDIR_ROOT/${extract{homeDirectory}{$address_data}}')dnl dnl пример 3 (AD): dnl define(`confVIRT_MDIR_LDAP', `user="user@domain.tld" pass=xxxxxxxx ldap://192.168.0.1/cn=Users,dc=domain,dc=tld?sAMAccountName?sub?(sAMAccountName=$local_part)')dnl dnl define(`confVIRT_MDIR_PATH_LDAP', `confVIRT_MDIR_ROOT/AD/$address_data/')dnl dnl dnl dnl путь к mbpath (используется для проверки наличия пользователя при наличии CYRUS-IMAPD в confVIRT_MDIR_USERLIST): dnl dnl define(`confVIRT_MDIR_CYRUS_MBPATH_PATH', `/usr/lib/cyrus-imapd/mbpath')dnl define(`confVIRT_MDIR_CYRUS_MBPATH_PATH', `/usr/local/cyrus/bin/mbpath')dnl dnl dnl dnl права на maildir'ы и файлы с письмами define(`confVIRT_MDIR_DIR_MODE', `0750')dnl define(`confVIRT_MDIR_FILE_MODE', `0640')dnl dnl dnl место хранения алиасов: dnl SINGLE_FILE - хранение алиасов в текстовом файле virt_aliases dnl SINGLE_DBM - хранение алиасов в DBM файле virt_aliases.db dnl DOMAINS_FILES - хранение алиасов в отдельных текстовых файлах для каждого домена dnl DOMAINS_DBM - хранение алиасов в отдельных DBM файлах для каждого домена dnl MYSQL - хранение алиасов в БД MySQL (только при confVIRT_MDIR_USERLIST==MYSQL) dnl SQLITE - хранение алиасов в БД SQLite (только при confVIRT_MDIR_USERLIST==SQLITE) dnl LDAP - хранение алиасов в LDAP (только при confVIRT_MDIR_USERLIST==LDAP) define(`confVIRT_MDIR_ALIASES', `DOMAINS_DBM')dnl define(`confVIRT_MDIR_ALIASES_SINGLE', `CONFDIR/virt_aliases')dnl define(`confVIRT_MDIR_MYSQL_ALIAS', `SELECT address FROM aliases WHERE alias="${quote_mysql:$local_part@$domain}"')dnl define(`confVIRT_MDIR_SQLITE_ALIAS', `SELECT address FROM aliases WHERE alias="${quote_sqlite:$local_part@$domain}"')dnl dnl define(`confVIRT_MDIR_LDAP_ALIAS', `user="ldapuser@ad.domain.tld" pass=xxxxxxxxxxx \ dnl ldap://dc.ad.domain.tld/dc=ad,dc=domain,dc=tld?sAMAccountName?sub?\ dnl (&\ dnl (memberOf=CN=Mail Users,OU=Mail,DC=ad,DC=domain,DC=tld)\ dnl (memberOf=CN=alias_${local_part},OU=Mail,DC=ad,DC=domain,DC=tld)\ dnl )')dnl define(`confVIRT_MDIR_LDAP_ALIAS_VALUE', `$value')dnl define(`confVIRT_MDIR_LDAP_ALIAS_RECURSIVE_VALUE', `$value')dnl dnl define(`confVIRT_MDIR_LDAP_ALIAS2', `user="ldapuser@ad.domain.tld" pass=xxxxxxxxxxx \ dnl ldap://dc.ad.domain.tld/dc=ad,dc=domain,dc=tld?sAMAccountName?sub?\ dnl (&\ dnl (objectClass=user)\ dnl (sAMAccountName=$local_part)\ dnl (memberOf=CN=Mail Users,OU=Mail,DC=ad,DC=domain,DC=tld)\ dnl )')dnl define(`confVIRT_MDIR_LDAP_ALIAS2_VALUE', `$value')dnl define(`confVIRT_MDIR_LDAP_ALIAS2_RECURSIVE_VALUE', `$value')dnl define(`confVIRT_MDIR_LDAP_ALIAS3_VALUE', `$value')dnl define(`confVIRT_MDIR_LDAP_ALIAS3_RECURSIVE_VALUE', `$value')dnl define(`confVIRT_MDIR_LDAP_ALIAS4_VALUE', `$value')dnl dnl dnl путь к отдельным файлам для каждого домена (если confVIRT_MDIR_ALIASES содержит DOMAINS_FILES или DOMAINS_DBM) dnl определяется как confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/aliases или dnl confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/aliases.db соответственно dnl dnl использование квоты dnl NO - не использовать проверку квоты dnl TRANSPORT_MAILDIRSIZE - проверять квоту на этапе доставки с использованием файла maildirsize dnl TRANSPORT - проверять квоту на этапе доставки, каждый раз расчитывая размер maildir'а пользователя dnl VERIFY_RCPT_MAILDIRSIZE_DEFER - проверять квоту на этапе RCPT TO с использованием файла maildirsize; dnl в случае превышения квоты возвращать defer dnl VERIFY_RCPT_MAILDIRSIZE_REJECT - проверять квоту на этапе RCPT TO с использованием файла maildirsize; dnl в случае превышения квоты возвращать reject/deny dnl VERIFY_RCPT_CUSTOM_DEFER - проверять квоту на этапе RCPT TO; dnl в случае превышения квоты возвращать defer dnl VERIFY_RCPT_CUSTOM_REJECT - проверять квоту на этапе RCPT TO; dnl в случае превышения квоты возвращать reject/deny define(`confVIRT_MDIR_QUOTA', `NO')dnl dnl dnl регулярное выражение для ограничения набора каталогов для подсчета dnl размера maildir'а при использовании TRANSPORT_MAILDIRSIZE в качестве dnl значения confVIRT_MDIR_QUOTA define(`confVIRT_MDIR_QUOTA_DIR_REGEX', `^(?:cur|new|\.(?!Trash).*)$')dnl dnl dnl пользовательское условие проверки квоты, используется при указании dnl VERIFY_RCPT_CUSTOM_DEFER или VERIFY_RCPT_CUSTOM_REJECT в качестве dnl значения confVIRT_MDIR_QUOTA dnl условие должно вернуть "yes", если квота превышена dnl define(`confVIRT_MDIR_QUOTA_CUSTOM_CONDITION', `${lookup mysql{SELECT passwd.quota_limit_bytes-quota.bytes AS free FROM passwd, quota WHERE passwd.id = "${quote_mysql:$local_part@$domain}" AND quota.username = "${quote_mysql:$local_part@$domain}"}{${if <{${eval:$value-${if <{$message_size}{1}{10k}{$message_size}}}}{0}{yes}{no}}}{no}}')dnl dnl define(`confVIRT_MDIR_QUOTA_CUSTOM_CONDITION', `${if match{${readsocket{/var/lib/imap/socket/smmap}{${strlen:quota $local_part@$domain}:quota $local_part@$domain,}{5s}{ }{ERROR}}}{Over quota}{yes}{no}}')dnl dnl dnl вычисление размера квоты: define(`confVIRT_MDIR_QUOTA_SIZE', `0')dnl dnl define(`confVIRT_MDIR_QUOTA_SIZE', `100M')dnl dnl define(`confVIRT_MDIR_QUOTA_SIZE', `${if eq{$domain}{some.domain}{20M}{300M}}')dnl dnl define(`confVIRT_MDIR_QUOTA_SIZE', `${lookup mysql{SELECT quota FROM users WHERE user="${quote_mysql:$local_part@$domain}"}{$value}fail}')dnl dnl define(`confVIRT_MDIR_QUOTA_SIZE', `${lookup mysql{SELECT quota FROM users WHERE user="${quote_mysql:$local_part@$domain}"}{$value}{0}}')dnl dnl при TRANSPORT_MAILDIRSIZE и TRANSPORT нулевой размер квоты означает отсутствие квоты dnl временно: при VERIFY_RCPT_MAILDIRSIZE_DEFER и VERIFY_RCPT_MAILDIRSIZE_REJECT нулевой размер квоты означает превышение квоты dnl dnl при наличии MDIR_VIRTUAL и PIPE в confDELIVERY_TO: dnl dnl командная строка для запуска внешнего LDA: define(`confVIRT_MDIR_PIPE', `/usr/local/libexec/dovecot/deliver -d $local_part@$domain')dnl dnl define(`confVIRT_MDIR_PIPE', `/usr/local/sbin/dbmail-smtp -d $local_part@$domain')dnl dnl dnl LDA будет запущен от имени пользователя, указанного в confVIRT_MDIR_USER, и от имени группы, указанной в confVIRT_MDIR_GROUP dnl dnl ############################################## dnl dnl отсылка сообщений через smarthost(ы) dnl NO - не использовать отсылку через smarthost dnl - использовать отсылку через smarthost dnl допускается указание нескольких хостов, разделенных двоеточиями define(`confSMART_HOST', `NO') dnl если сообщение не может быть отправлено через smarthost за confSMART_HOST_TIMEOUT секунд, dnl то при его отправке smarthost использоваться больше не будет define(`confSMART_HOST_TIMEOUT', `3600')dnl dnl при использовании confFALL_BACK_MX_DELAYED если confSMART_HOST_TIMEOUT больше, чем dnl confFALL_BACK_MX_DELAY, то сразу после роутера smarthost будет использован роутер dnl route_to_fallbackmx, в противном случае в интервале между confSMART_HOST_TIMEOUT и dnl confFALL_BACK_MX_DELAY будет использован роутер dnslookup dnl dnl ############################################## dnl dnl отсылка сообщений через fallback_hosts dnl NO - не использовать отсылку через fallback host(ы) dnl - использовать отсылку через fallback host(ы) dnl допускается указание нескольких хостов, разделенных двоеточиями define(`confFALL_BACK_MX', `NO')dnl dnl dnl отмена запрета в роутере dnslookup на отсылку писем по SMTP на локальный хост define(`confFALL_BACK_MX_LOCALHOST_ENABLE', `NO')dnl dnl dnl ############################################## dnl dnl отсылка сообщений через fallback_hosts в случае невозможности их отправки dnl за confFALL_BACK_MX_DELAY секунд после помещения в очередь dnl NO - не использовать отсылку через fallback host(ы) dnl - использовать отсылку через fallback host(ы) dnl допускается указание нескольких хостов, разделенных двоеточиями define(`confFALL_BACK_MX_DELAYED', `NO')dnl define(`confFALL_BACK_MX_DELAY', `5400')dnl dnl dnl ############################################## dnl dnl поддержка UUCP dnl NO - выключить поддержку UUCP dnl YES - включить поддержку UUCP define(`confUUCP', `NO')dnl dnl dnl пользователь, от имени которого будет выполняться доставка define(`confUUCP_USER', `uucp')dnl dnl dnl полный путь к uux define(`confUUCP_UUX_PATH', `/usr/local/bin/uux')dnl dnl dnl ############################################## dnl dnl использование mailertable для выбора транспорта и маршрута для доставки сообщений dnl NO - не использовать mailertable для выбора транспорта и маршрута для доставки сообщений dnl TEXT - использовать отсылку по mailertable в виде текстового файла dnl DBM - использовать отсылку по mailertable в виде DBM файла dnl MYSQL - использовать отсылку по mailertable в виде таблицы в базе данных MYSQL dnl SQLITE - использовать mailertable в виде таблицы в БД SQLite define(`confMAILERTABLE', `NO')dnl dnl dnl при указании TEXT или DBM в confMAILERTABLE маршруты доставки почты dnl прописываются в CONFDIR/mailertable в виде: dnl домен : тип_транспорта : маршрут_1 : маршрут_2 : ... : маршрут_N dnl dnl в качестве типов транспорта могут быть указаны: dnl local - доставка почты домена в локальный mailbox dnl virt - доставка почты домена в mailbox в виртуальном домене dnl uucp-dom - доставка почты домена в uucp mailbox dnl shadowsmtp - доставка копии письма по smtp по маршруту, при этом dnl обработка письма будет продолжена dnl smtp - доставка почты домена по smtp по маршруту dnl smtp6 - доставка почты домена по smtp по маршруту по IPv6 dnl smtp4 - доставка почты домена по smtp по маршруту по IPv4 dnl lmtp - доставка почты домена по LMTP по маршруту dnl lmtpunix - доставка почты домена по LMTP через UNIX domain socket dnl lmtplocal - доставка почты локального домена по LMTP по dnl маршруту, выполняется после раскрытия алиасов dnl lmtpunixlocal - доставка почты локального домена по lmtp через UNIX dnl domain socket, выполняется после раскрытия алиасов dnl dnl для shadowsmtp, smtp, lmtp и lmtplocal транспортов: dnl - в качестве маршрута можно указывать списки имен хостов, IP адресов, dnl а также названия доменов с суффиксами /MX и /bestMX dnl - нестандартный номер порта (отличный от 25 в случае smtp и отличный от dnl 24 в случае lmtp) можно указывать через два символа ":". dnl - можно указывать отдельные маршруты для проверки существования адресов dnl в доменах путем указания суффикса \|callout после названия домена. dnl dnl в случае использования транспортов lmtpunix и lmtpunixlocal после dnl имени файла UNIX domain socket-а можно через символы ":" указать имя dnl пользователя и группу, от имени которых будет производится запись в dnl файл сокета. dnl dnl domain.tld : local : local_mailbox dnl domain.tld : virt : mailbox@virtual_domain dnl domain.tld : uucp-dom : local_uucp_user dnl domain.tld : smtp : host1::587 : host2 : domain2/MX dnl domain.tld\|callout : smtp : domain.tld/bestMX : host1::2025 : host2::2025 dnl domain.tld : lmtp : host1 : host2::2024 dnl domain.tld : lmtpunix : /var/lib/imap/socket/lmtp dnl domain.tld : lmtpunix : /var/lib/imap/socket/lmtp:cyrus:mail dnl dnl использование типа транпорта smtp6 dnl NO - не использовать тип транспорта smtp6 dnl YES - использовать тип транспорта smtp6 define(`confMAILERTABLE_SMTP6', `NO')dnl dnl dnl использование типа транпорта smtp4 dnl NO - не использовать тип транспорта smtp4 dnl YES - использовать тип транспорта smtp4 define(`confMAILERTABLE_SMTP4', `NO')dnl dnl dnl исключение локальных доменов из доставки по SMTP dnl NO - не исключать локальные домены из доставки по SMTP dnl YES - исключать локальные домены из доставки по SMTP define(`confMAILERTABLE_SMTP_SKIP_LOCALDOMAINS', `YES')dnl dnl dnl исключение локальных доменов из доставки по LMTP dnl NO - не исключать локальные домены из доставки по LMTP dnl YES - исключать локальные домены из доставки по LMTP define(`confMAILERTABLE_LMTP_SKIP_LOCALDOMAINS', `NO')dnl dnl dnl исключение локальных доменов из доставки по lmtp через UNIX domain socket dnl NO - не исключать локальные домены из доставки по lmtp через UNIX domain socket dnl YES - исключать локальные домены из доставки по lmtp через UNIX domain socket define(`confMAILERTABLE_LMTPUNIX_SKIP_LOCALDOMAINS', `NO')dnl dnl dnl запрос к БД MySQL на получение транспорта и маршрута для доставки сообщений define(`confMAILERTABLE_MYSQL', `SELECT transport, route FROM mailertable WHERE domain="${quote_mysql:$domain}"')dnl dnl запрос к БД MySQL на получение транспорта и маршрута для доставки копией сообщений define(`confMAILERTABLE_SHADOW_MYSQL', `SELECT transport, route FROM mailertableshadow WHERE domain="${quote_mysql:$domain}"')dnl dnl запрос к БД MySQL на получение транспорта и маршрута для проверки существования почтовых адресов define(`confMAILERTABLE_CALLOUTTABLE_MYSQL', `SELECT transport, route FROM callouttable WHERE domain="${quote_mysql:$domain}"')dnl dnl dnl запрос к БД SQLite на получение транспорта и маршрута для доставки сообщений define(`confMAILERTABLE_SQLITE', `SELECT transport, route FROM mailertable WHERE domain="${quote_sqlite:$domain}"')dnl dnl запрос к БД SQLite на получение транспорта и маршрута для доставки копий сообщений define(`confMAILERTABLE_SHADOW_SQLITE', `SELECT transport, route FROM mailertableshadow WHERE domain="${quote_sqlite:$domain}"')dnl dnl запрос к БД SQLite на получение транспорта и маршрута для проверки существования почтовых адресов define(`confMAILERTABLE_CALLOUTTABLE_SQLITE', `SELECT transport, route FROM callouttable WHERE domain="${quote_sqlite:$domain}"')dnl dnl dnl использование доставки копий писем по SMTP dnl NO - не использовать доставку копий писем по SMTP dnl YES - использовать доставку копий писем по SMTP define(`confMAILERTABLE_SHADOWSMTP', `NO')dnl dnl dnl использование транспортов lmtp и lmtpunix dnl NO - не использовать транспорты lmtp и lmtpunix в mailertable dnl YES - использовать транспорты lmtp и lmtpunix в mailertable define(`confMAILERTABLE_LMTP', `NO')dnl dnl dnl номер LMTP порта по умолчанию define(`confLMTP_DEFAULT_PORT', `lmtp')dnl dnl dnl использование ручных маршрутов с учётом адреса отправителя (пока доступны только для значения TEXT в confMAILERTABLE): dnl NO - не использовать ручные маршруты с учётом адреса отправителя dnl YES - использовать ручные маршруты с учётом адреса отправителя define(`confMAILERTABLE_PER_SENDER', `NO')dnl dnl dnl маршруты с учётом адреса отправителя задаются с указанием адресов отправителя и получателя в виде полных значений, wildcard или регулярных выражений dnl sender@domain.local<@>recipient@domain.tld : smtp : host1::587 : host2 : domain2/MX dnl \N^sender@domain\.local<@>.+@domain\.tld$\N : smtp : host1::587 : host2 : domain2/MX dnl dnl использование ручных маршрутов на основании основной MX записи домена получателя, только для smtp (пока доступны только для значения TEXT в confMAILERTABLE): dnl NO - не использовать ручные маршруты на основании основной MX записи домена получателя dnl YES - использовать ручные маршруты на основании основной MX записи домена получателя define(`confMAILERTABLE_DOMAIN_BEST_MX', `NO')dnl dnl dnl маршруты на основании основной MX записи домена получателя задаются с указанием суффикса bestMX dnl aspmx.l.google.com\|bestMX : smtp : host1 : host2 dnl aspmx.l.google.com\|bestMX\|callout : smtp : host1 : host2 dnl dnl ############################################## dnl dnl relay based on MX dnl NO - не использовать рилеинг на основе MX записей dnl BEST - использовать рилеинг на основе best MX записи (она должна входить в trusted сети) dnl ANY - использовать рилеинг на основе любой более младшей MX записи (она должна входить в trusted сети) dnl YES - синоним BEST define(`confRELAY_BASED_ON_MX', `NO')dnl dnl будут рилеиться все сообщения для доменов, для которых мы являемся backup MX dnl и best MX (или любая MX) запись которых входит в наши trusted сети, dnl перечисленные в файле hosts-trusted dnl dnl ############################################## dnl dnl использовать сериализацию при отправке сообщений хостам из предопределенного списка dnl NO - не использовать сериализацию dnl YES - использовать сериализацию при отправке писем хостам из CONFDIR/hosts-serialize define(`confSMTP_SERIALIZE_HOSTS', `NO') dnl dnl ############################################## dnl dnl использование fakereject до этапа DATA dnl NO - не использовать fakereject dnl YES - использовать fakereject define(`confFAKE_REJECT', `YES') dnl dnl отказ в приеме письма на основании суммы критериев dnl NO - не использовать optional reject dnl YES - использовать optional reject define(`confOPTIONAL_REJECT', `NO') dnl dnl сумма баллов, при превышении которой сообщение отвергается define(`confOPTIONAL_REJECT_SCORES', `10') dnl dnl ############################################## dnl dnl использование "серых списков" dnl NO - не использовать "серые списки" dnl YES - использовать "серые списки" dnl LEARN - использовать "серые списки" в режиме обучения dnl (аналог define(`confGREYLIST_BLOCKED', `0')) dnl BLOCK_FIRST_ONLY - использовать "серые списки" в режиме блокирования только первого письма dnl (аналог define(`confGREYLIST_BLOCKED', `-1')) dnl OPTIONAL - опциональный грейлистинг define(`confGREYLIST', `NO')dnl dnl dnl режим обучения: dnl define(`confGREYLIST_BLOCKED', `0')dnl dnl время блокировки записи в "сером списке" равно нулю dnl (принимаем все сообщения, производится лишь обучение кеша) dnl dnl режим обучения с блокированием лишь первой попытки отправки почты: dnl define(`confGREYLIST_BLOCKED', `-1')dnl dnl время блокировки записи в "сером списке" меньше нуля dnl (первое сообщение задерживается, остальные пропускаются) dnl dnl время блокировки записи в "сером списке" в минутах define(`confGREYLIST_BLOCKED', `25')dnl dnl dnl минимальное время жизни записи в "сером списке" в минутах define(`confGREYLIST_RECORD_EXPIRE_MIN', `300')dnl dnl dnl время жизни записи в "сером списке" в днях define(`confGREYLIST_RECORD_EXPIRE', `36')dnl dnl dnl какую часть адреса хоста отправителя учитывать при работе с "серыми списками": define(`confGREYLIST_SENDER_HOST_ADDRESS_KEY', `$sender_host_address')dnl dnl define(`confGREYLIST_SENDER_HOST_ADDRESS_KEY', `${mask:$sender_host_address/24}')dnl define(`confGREYLIST_SENDER_HOST_ADDRESS_KEY_DEFAULT', `$sender_host_address')dnl dnl dnl какую часть адреса отправителя учитывать при работе с "серыми списками": define(`confGREYLIST_SENDER_ADDRESS_KEY', `${lc:$sender_address}')dnl dnl define(`confGREYLIST_SENDER_ADDRESS_KEY', `${lc:$sender_address_domain}')dnl define(`confGREYLIST_SENDER_ADDRESS_KEY_DEFAULT', `${lc:$sender_address}')dnl dnl dnl внесение в исключения "серых списков" записей при отсылке письма из dnl рилеемых сетей или от аутентифицированных отправителей: dnl NO - не вносить исключающую запись dnl YES - вносить исключающую запись define(`confGREYLIST_ADDR_PRELOAD', `NO')dnl dnl запись вносится в исключения на confGREYLIST_ADDR_PRELOAD_TTL минут define(`confGREYLIST_ADDR_PRELOAD_TTL',`240')dnl dnl dnl что считать адресом отправителя в данном случае: define(`confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY', `${lc:$local_part@$domain}')dnl dnl данное значение должно соответствовать значению confGREYLIST_SENDER_ADDRESS_KEY dnl т. е. если значение confGREYLIST_SENDER_ADDRESS_KEY равно `${lc:$sender_address}', dnl то значение confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY должно быть равно dnl `${lc:$local_part@$domain}' dnl если же значение confGREYLIST_SENDER_ADDRESS_KEY равно `${lc:$sender_address_domain}', dnl то значение confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY должно быть равно `${lc:$domain}' dnl dnl тип хранилища данных "серых списков": dnl DBM - использовать Berkeley DB dnl SQLITE - использовать SQLite dnl MYSQL - использовать MySQL dnl MEMCACHED - использовать memcached dnl REDIS - использовать redis define(`confGREYLIST_BACKEND', `DBM')dnl dnl dnl префикс записей при использовании MEMCACHED и REDIS в качестве dnl значений переменной confGREYLIST_BACKEND: define(`confGREYLIST_RECORD_PREFIX', `greylist:')dnl dnl dnl пути к файлам данных "серых списков": define(`confGREYLIST_DBM_CACHE', `confSPOOLDIR/db/greylist.dbm')dnl define(`confGREYLIST_SQLITE_CACHE', `confSPOOLDIR/db/greylist.db')dnl dnl dnl при SQLITE в confGREYLIST_BACKEND: dnl define(`confGREYLIST_SQLITE_SELECT_PRELOAD', `\ SELECT * FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_sqlite:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$sender_address}";')dnl define(`confGREYLIST_SQLITE_UPDATE_PRELOAD', `\ UPDATE greylist \ SET block_expires=$tod_epoch, record_expires=${eval:$tod_epoch+confGREYLIST_ADDR_PRELOAD_TTL*60}, passed_count=passed_count+1, last_update=$tod_epoch \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_sqlite:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$sender_address}";')dnl define(`confGREYLIST_SQLITE_INSERT_PRELOAD', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("0.0.0.0", "${quote_sqlite:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}", "${quote_sqlite:$sender_address}", $tod_epoch, ${eval:$tod_epoch+confGREYLIST_ADDR_PRELOAD_TTL*60}, 0, 0, 0, "AUTO", $tod_epoch, $tod_epoch);')dnl dnl define(`confGREYLIST_SQLITE_CHECK_PRELOAD', `\ SELECT * FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl define(`confGREYLIST_SQLITE_DELETE_PRELOAD', `\ DELETE FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl dnl define(`confGREYLIST_SQLITE_SELECT', `\ SELECT * FROM greylist \ WHERE sender_host_address="${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl dnl define(`confGREYLIST_SQLITE_INSERT', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}", "${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}", "${quote_sqlite:$local_part@$domain}", ${eval:$tod_epoch+confGREYLIST_BLOCKED*60}, ${eval:$tod_epoch+confGREYLIST_RECORD_EXPIRE_MIN*60}, 1, 0, 0, "AUTO", $tod_epoch, $tod_epoch);')dnl define(`confGREYLIST_SQLITE_UPDATE_INIT', `\ UPDATE greylist \ SET block_expires=${eval:$tod_epoch+confGREYLIST_BLOCKED*60}, record_expires=${eval:$tod_epoch+confGREYLIST_RECORD_EXPIRE_MIN*60}, blocked_count=1, passed_count=0, aborted_count=0, origin_type="AUTO", create_time=$tod_epoch, last_update=$tod_epoch \ WHERE sender_host_address="${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl define(`confGREYLIST_SQLITE_UPDATE_BLOCK', `\ UPDATE greylist \ SET blocked_count=blocked_count+1, last_update=$tod_epoch \ WHERE sender_host_address="${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl define(`confGREYLIST_SQLITE_UPDATE_PASS', `\ UPDATE greylist \ SET record_expires=${eval:$tod_epoch+confGREYLIST_RECORD_EXPIRE*24*60*60}, passed_count=passed_count+1, last_update=$tod_epoch \ WHERE (sender_host_address="${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" OR sender_host_address="0.0.0.0") AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl dnl define(`confGREYLIST_SQLITE_LEARN_INSERT', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}", "${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}", "${quote_sqlite:$local_part@$domain}", $tod_epoch, ${eval:$tod_epoch+confGREYLIST_RECORD_EXPIRE_MIN*60}, 1, 0, 0, "AUTO", $tod_epoch, $tod_epoch);')dnl define(`confGREYLIST_SQLITE_LEARN_UPDATE_INIT', `\ UPDATE greylist \ SET block_expires=$tod_epoch, record_expires=${eval:$tod_epoch+confGREYLIST_RECORD_EXPIRE_MIN*60}, blocked_count=1, passed_count=0, aborted_count=0, origin_type="AUTO", create_time=$tod_epoch, last_update=$tod_epoch \ WHERE sender_host_address="${quote_sqlite:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_sqlite:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl dnl define(`confGREYLIST_SQLITE_DELETE_EXPIRED', `DELETE FROM greylist WHERE block_expires < strftime(\"%s\",\"now\");')dnl dnl dnl dnl при MYSQL в confGREYLIST_BACKEND: dnl define(`confGREYLIST_MYSQL_SELECT_PRELOAD', `\ SELECT * FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_mysql:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$sender_address}";')dnl define(`confGREYLIST_MYSQL_UPDATE_PRELOAD', `\ UPDATE greylist \ SET block_expires=NOW(), record_expires=ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_ADDR_PRELOAD_TTL*60)), passed_count=passed_count+1, last_update=NOW() \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_mysql:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$sender_address}";')dnl define(`confGREYLIST_MYSQL_INSERT_PRELOAD', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("0.0.0.0", "${quote_mysql:confGREYLIST_ADDR_PRELOAD_SENDER_ADDRESS_KEY}", "${quote_mysql:$sender_address}", NOW(), ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_ADDR_PRELOAD_TTL*60)), 0, 0, 0, "AUTO", NOW(), NOW());')dnl dnl define(`confGREYLIST_MYSQL_CHECK_PRELOAD', `\ SELECT UNIX_TIMESTAMP(record_expires) as record_expires FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl define(`confGREYLIST_MYSQL_DELETE_PRELOAD', `\ DELETE FROM greylist \ WHERE sender_host_address="0.0.0.0" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl dnl define(`confGREYLIST_MYSQL_SELECT', `\ SELECT UNIX_TIMESTAMP(block_expires) as block_expires, UNIX_TIMESTAMP(record_expires) as record_expires, greylist.* FROM greylist \ WHERE sender_host_address="${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl dnl define(`confGREYLIST_MYSQL_INSERT', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}", "${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}", "${quote_mysql:$local_part@$domain}", ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_BLOCKED*60)), ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_RECORD_EXPIRE_MIN*60)), 1, 0, 0, "AUTO", NOW(), NOW());')dnl define(`confGREYLIST_MYSQL_UPDATE_INIT', `\ UPDATE greylist \ SET block_expires=ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_BLOCKED*60)), record_expires=ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_RECORD_EXPIRE_MIN*60)), blocked_count=1, passed_count=0, aborted_count=0, origin_type="AUTO", create_time=NOW(), last_update=NOW() \ WHERE sender_host_address="${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl define(`confGREYLIST_MYSQL_UPDATE_BLOCK', `\ UPDATE greylist \ SET blocked_count=blocked_count+1, last_update=NOW() \ WHERE sender_host_address="${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl define(`confGREYLIST_MYSQL_UPDATE_PASS', `\ UPDATE greylist \ SET record_expires=ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_RECORD_EXPIRE*24*60*60)), passed_count=passed_count+1, last_update=NOW() \ WHERE (sender_host_address="${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" OR sender_host_address="0.0.0.0") AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl dnl define(`confGREYLIST_MYSQL_LEARN_INSERT', `\ INSERT INTO greylist (sender_host_address, sender_address, recipient_address, block_expires, record_expires, blocked_count, passed_count, aborted_count, origin_type, create_time, last_update) \ VALUES ("${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}", "${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}", "${quote_mysql:$local_part@$domain}", NOW(), ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_RECORD_EXPIRE_MIN*60)), 1, 0, 0, "AUTO", NOW(), NOW());')dnl define(`confGREYLIST_MYSQL_LEARN_UPDATE_INIT', `\ UPDATE greylist \ SET block_expires=NOW(), record_expires=ADDTIME(NOW(), SEC_TO_TIME(confGREYLIST_RECORD_EXPIRE_MIN*60)), blocked_count=1, passed_count=0, aborted_count=0, origin_type="AUTO", create_time=NOW(), last_update=NOW() \ WHERE sender_host_address="${quote_mysql:confGREYLIST_SENDER_HOST_ADDRESS_KEY}" AND sender_address="${quote_mysql:confGREYLIST_SENDER_ADDRESS_KEY}" AND recipient_address="${quote_mysql:$local_part@$domain}";')dnl dnl define(`confGREYLIST_MYSQL_DELETE_EXPIRED', `DELETE FROM greylist WHERE block_expires < NOW();')dnl dnl dnl dnl исключения из greylisting'а: dnl AUTH - исключения для аутентифицированных отправителей dnl FROM_<> - исключения для писем от пустого отправителя dnl FROM_POSTMASTER - исключения для писем от postmaster@ dnl TO_POSTMASTER - исключения для писем для postmaster@ dnl TO_ABUSE - исключения для писем для abuse@ dnl SPF_PASS - исключения для писем, успешно прошедших проверку соответствия хоста отправителя SPF записи домена отправителя dnl TLS_PASS - исключения для писем, при отправке которых использовался STARTTLS define(`confGREYLIST_SKIP', `AUTH FROM_<> FROM_POSTMASTER TO_POSTMASTER TO_ABUSE TLS_PASS') dnl dnl сообщение, возвращаемое клиенту при задержке почтового сообщения dnl define(`confGREYLIST_MESSAGE', `Message delayed as part of spam avoidance measure')dnl dnl define(`confGREYLIST_MESSAGE', `System too busy. Please try again later')dnl dnl define(`confGREYLIST_MESSAGE', `Temporary local problem - please try later')dnl define(`confGREYLIST_MESSAGE', `Greylisted')dnl dnl dnl домены получателей, проверяемые по "серым спискам", перечисляются в domains-greylist dnl хосты и сети, исключаемые из проверки по "серым спискам", перечисляются в skip_greylist_relays dnl списки отправителей, исключаемых из проверки по "серым спискам", перечисляются в файле skip_greylist_senders dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl zuper.domain.com : user : info : admin dnl списки отправителей, исключаемых из проверки по "серым спискам", перечисляются в файле skip_greylist_recipients dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl zuper.domain.com : user : info : admin dnl триплеты адрес_рилея/адрес_отправителя/адрес_получателя, исключаемые из проверки по "серым спискам", dnl перечисляются в файле skip_greylist в виде: dnl A.B.C.D|sender@domain1.tld|recipient@domain2.tld dnl пример: dnl 1.2.3.4|sender@example.org|test@local.domain dnl в случае, если в confGREYLIST_SENDER_HOST_ADDRESS_KEY указано dnl значение, отличное от confGREYLIST_SENDER_HOST_ADDRESS_KEY_DEFAULT dnl или в confGREYLIST_SENDER_ADDRESS_KEY указано значение, отличное от dnl confGREYLIST_SENDER_ADDRESS_KEY_DEFAULT (т. е. используется dnl "облегченный" вариант "серых списков", будет выполнено два lookup'а в dnl skip_greylist - первый по confGREYLIST_SENDER_HOST_ADDRESS_KEY_DEFAULT dnl и confGREYLIST_SENDER_ADDRESS_KEY_DEFAULT (т. е. по умолчанию по dnl адресу хоста отправителя и адресу отправителя), а второй - по dnl confGREYLIST_SENDER_HOST_ADDRESS_KEY и confGREYLIST_SENDER_ADDRESS_KEY dnl dnl количество баллов, при которых письмо задерживается (применяется при define(`confGREYLIST', `OPTIONAL')) define(`confGREYLIST_BLOCKED_OPTIONAL', `10')dnl dnl dnl dnl использование динамических "серых списков" рилеев (при GREYLIST в confCHECK_MESSAGE_ID или SUBMIT_GREYLIST_* в confSPAMASSASSIN_ACTION) dnl NO - не использовать динамические "серые списки" рилеев dnl YES - использовать динамические "серые списки" рилеев define(`confGREYLIST_RELAYS', `NO')dnl dnl dnl префикс записей динамических "серых списков" рилеев при использовании dnl MEMCACHED и REDIS в качестве значений переменной confGREYLIST_BACKEND: define(`confGREYLIST_RELAYS_RECORD_PREFIX', `greylist-relay:')dnl dnl dnl пути к файлам динамических "серых списков" рилеев define(`confGREYLIST_DBM_RELAYS', `confSPOOLDIR/db/greylist_relays.dbm')dnl define(`confGREYLIST_SQLITE_RELAYS', `confSPOOLDIR/db/greylist.db')dnl dnl dnl dnl запросы для работы с динамическими "серыми списками" рилеев в SQLite define(`confGREYLIST_SQLITE_RELAYS_SELECT', `SELECT * FROM greylist_relays WHERE sender_host_address="$sender_host_address";')dnl define(`confGREYLIST_SQLITE_RELAYS_INSERT', `\ INSERT INTO greylist_relays (sender_host_address, create_time, expire_time, reason) \ VALUES ("$sender_host_address", $tod_epoch, $acl_m_ttl, "${quote_sqlite:$acl_m_reason}");')dnl define(`confGREYLIST_SQLITE_RELAYS_UPDATE', `\ UPDATE greylist_relays \ SET create_time=$tod_epoch, expire_time=$acl_m_ttl, reason="${quote_sqlite:$acl_m_reason}" \ WHERE sender_host_address="$sender_host_address";')dnl define(`confGREYLIST_SQLITE_RELAYS_DELETE_EXPIRED', `DELETE FROM greylist_relays WHERE expire_time > 0 AND expire_time < strftime(\"%s\",\"now\");')dnl dnl dnl dnl запросы для работы с динамическими "серыми списками" рилеев в MySQL define(`confGREYLIST_MYSQL_RELAYS_SELECT', `SELECT FROM_UNIXTIME(expire_time) as expire_time, greylist_relays.* FROM greylist_relays WHERE sender_host_address="$sender_host_address";')dnl define(`confGREYLIST_MYSQL_RELAYS_INSERT', `\ INSERT INTO greylist_relays (sender_host_address, create_time, expire_time, reason) \ VALUES ("$sender_host_address", NOW(), FROM_UNIXTIME($acl_m_ttl), "${quote_sqlite:$acl_m_reason}");')dnl define(`confGREYLIST_MYSQL_RELAYS_UPDATE', `\ UPDATE greylist_relays \ SET create_time=NOW(), expire_time=FROM_UNIXTIME($acl_m_ttl), reason="${quote_sqlite:$acl_m_reason}" \ WHERE sender_host_address="$sender_host_address";')dnl define(`confGREYLIST_MYSQL_RELAYS_DELETE_EXPIRED', `DELETE FROM greylist_relays WHERE expire_time > 0 AND expire_time < NOW();')dnl dnl dnl dnl применение грейлистинга в зависимости от дня недели и времени суток dnl define(`confGREYLIST_DATETIME', `Sat|Sun;00:00-24:00;10 ;00:00-08:00;10 ;22:00-24:00;10') dnl применение "серых списков" по времени возможно при использовании опционального грейлистинга dnl расписание состоит из отдельных групп параметров dnl каждая состоит из трех частей, разделенных точкой с запятой: dnl - дни недели dnl - промежуток времени dnl - количество баллов опционального грейлистинга dnl дни недели разделяются друго от друга символами pipe "|" dnl если описываемый промежуток времени касается всех дней недели, список дней недели можно опустить, dnl т. е. данная группа параметров должна начинаться с точки с запятой dnl dnl dnl применение "серых списков" к письмам, отправленным по протоколу SMTP, а не ESMTP dnl NO - не применять "серые списки" на основании использования протокола SMTP, а не ESMTP dnl N - применять "серые списки" с весом в N баллов на основании использования протокола SMTP, а не ESMTP define(`confGREYLIST_SMTP', `NO')dnl dnl dnl ############################################## dnl dnl проверка праметра SIZE команды MAIL FROM при использовании клиентом протокола ESMTP dnl NO - не проверять резолвинг домена верхнего уровня команды HELO dnl WARN - вывод в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_ESMTP_SIZE', `NO')dnl dnl dnl исключения из проверки праметра SIZE команды MAIL FROM при использовании клиентом протокола ESMTP dnl RELAY_FROM - из проверки исключаются исходящие письма dnl AUTH - из проверки исключаются письма от аутентифицированных отправителей dnl FROM_NULL_SENDER - из проверки исключаются письма от пустых отправителей dnl FROM_POSTMASTER - из проверки исключаются письма от пустых postmaster'ов define(`confCHECK_ESMTP_SIZE_SKIP', `RELAY_FROM AUTH FROM_NULL_SENDER FROM_POSTMASTER')dnl dnl dnl ############################################## dnl dnl поддержка STARTTLS dnl NO - не поддерживать STARTTLS dnl YES - поддерживать STARTTLS define(`confSTARTTLS', `NO')dnl dnl dnl пути на файл сертификата и ключа: define(`confTLS_CERTIFICATE', `CONFDIR/exim.pem')dnl define(`confTLS_PRIVATEKEY', `CONFDIR/exim.pem')dnl dnl dnl использовать список исключений для анонсирования STARTTLS dnl NO - не использовать список исключений dnl YES - использовать список исключений define(`confSTARTTLS_SKIP_ADVERTIZE', `NO')dnl dnl сети и хосты должны быть перечислены в файле CONFDIR/skip_tls_advertise dnl dnl использовать список исключений для использования STARTTLS dnl NO - не использовать список исключений dnl YES - использовать список исключений define(`confSTARTTLS_SKIP_USING', `NO')dnl dnl сети и хосты должны быть перечислены в файле CONFDIR/skip_tls_using dnl dnl требовать использование TLS при работе через порт 587 dnl NO - не требовать использования TLS dnl EXTERNAL - требовать использования TLS для внешних отправителей dnl ALL - требовать использования TLS для всех отправителей define(`confTLS_ENFORCE_SUBMIT', `ALL')dnl dnl dnl ############################################## dnl dnl поддержка клиентской SMTP Auth (список) dnl NO - не использовать SMTP Auth dnl PLAIN - использовать PLAIN SMTP Auth dnl LOGIN - использовать LOGIN SMTP Auth dnl CRAM-MD5 - использовать CRAM-MD5 SMTP Auth define(`confSMTP_AUTH_CLIENT', `NO')dnl dnl dnl данные аутентификации указываются в файле CONFDIR/smtpauthdb в виде трех колонок, dnl разделенных двоеточиями: dnl host:login:password dnl dnl пример: dnl mail.server:clientname:secret dnl *:defaultclientname:defaultsecret dnl dnl при необходимости использовать логины и пароли в зависимости от адреса отправителя: dnl NO - не использовать логины и пароли в зависимости от адреса отправителя dnl YES - использовать логины и пароли в зависимости от адреса отправителя define(`confSMTP_AUTH_CLIENT_PER_SENDER', `NO')dnl dnl dnl пример: dnl mail.server<@>sender_address1:clientname1:secret1 dnl mail.server<@>sender_address2:clientname2:secret2 dnl mail.server:clientname:secret dnl dnl при необходимости использования другого разделителя его нужно указать в confSMTP_AUTH_CLIENT_SEPARATOR: dnl define(`confSMTP_AUTH_CLIENT_SEPARATOR', `|')dnl dnl dnl пример: dnl mail.server:clientname|secret dnl dnl ############################################## dnl dnl поддержка SMTP аутентификации на сервере dnl NO - не использовать SMTP аутентификацию dnl YES - использовать SMTP аутентификацию define(`confSMTP_AUTH', `NO')dnl dnl использование метода LOGIN dnl NO - не использовать метод LOGIN dnl YES - использовать метод LOGIN define(`confSMTP_AUTH_LOGIN', `YES')dnl dnl использование метода PLAIN dnl NO - не использовать метод PLAIN dnl YES - использовать метод PLAIN define(`confSMTP_AUTH_PLAIN', `YES')dnl dnl использование метода CRAM-MD5 dnl NO - не использовать метод CRAM-MD5 dnl YES - использовать метод CRAM-MD5 define(`confSMTP_AUTH_CRAM_MD5', `NO')dnl dnl использование метода DIGEST-MD5 dnl NO - не использовать метод DIGEST-MD5 dnl YES - использовать метод DIGEST-MD5 define(`confSMTP_AUTH_DIGEST_MD5', `NO')dnl dnl метод аутентификации DIGEST-MD5 используется при использовании DOVECOT dnl в качестве источника данных SMTP аутентификации (переменная confSMTP_AUTH_SOURCE) dnl использование метода NTLM (SPA) dnl NO - не использовать метод HTML dnl YES - использовать метод HTML define(`confSMTP_AUTH_NTLM', `NO')dnl dnl dnl использование метода NTLM (SPA) с проверкой паролей в ActiveDirectory dnl NO - не использовать метод SPA с проверкой паролей в ActiveDirectory dnl YES - использовать метод SPA с проверкой паролей в ActiveDirectory define(`confSMTP_AUTH_NTLM_DC', `NO')dnl dnl dnl exim должен быть собран с поддержкой cyrus-sasl, cyrus-sasl должен быть собран с поддержкой ntlm dnl в файле /usr/local/lib/sasl2/exim.conf (/usr/lib/sasl2/exim.conf для linux) dnl необходимо указать адрес контроллера домена в виде: dnl ntlm_server: dc.address dnl dnl использование kerberos для прозрачной аутентификации в ActiveDirectory dnl NO - не использовать kerberos для прозрачной аутентификации в ActiveDirectory dnl YES - использовать kerberos для прозрачной аутентификации в ActiveDirectory define(`confSMTP_AUTH_GSSAPI', `NO')dnl dnl exim должен быть собран с поддержкой GSSAPI (AUTH_HEIMDAL_GSSAPI) dnl dnl название сервиса и имя хоста почтового сервера, если для построения dnl идентификатора, по которому будет производитсяl поиск в keytab, нужно dnl использовать значения, отличные от "smtp" и "$primary_hostname" dnl define(`confSMTP_AUTH_GSSAPI_SERVER_SERVICE', `exim')dnl dnl define(`confSMTP_AUTH_GSSAPI_SERVER_HOSTNAME', `mail.domain.tld')dnl dnl альтернативный путь к файлу keytab dnl define(`confSMTP_AUTH_GSSAPI_SERVER_KEYTAB', `/etc/kerberos/tabs/exim.keytab')dnl dnl dnl механизм проверки паролей dnl PAM - использовать PAM dnl RADIUS - использовать radius dnl SASLAUTHD - использовать saslauthd dnl PASSWD_PLAIN- использовать нешифрованные пароли из файла passwd dnl PASSWD - использовать шифрованные пароли из файла passwd dnl MYSQL_PLAIN - использовать нешифрованные пароли из БД MySQL dnl MYSQL - использовать шифрованные пароли из БД MySQL dnl SQLITE_PLAIN- использовать нешифрованные пароли из БД SQLite dnl SQLITE - использовать шифрованные пароли из БД SQLite dnl IMAP - проверять SMTP логин и пароль с использованием IMAP сервера dnl требуется установленный модуль Mail::IMAPClient dnl SMTP - проверять SMTP логин и пароль с использованием альтернативного SMTP сервера dnl требуются установленные модули Net::SMTP_auth, Net::SMTP, Authen::SASL dnl SMTPTLS - проверять SMTP логин и пароль с использованием альтернативного SMTP сервера с TLS dnl требуется установленный модуль Net::SMTP::TLS dnl LDAPAUTH - проверять SMTP логин и пароль с использованием аутентификации на LDAP сервере (SMTP логин входит в DN) dnl LDAP_PLAIN - использовать нешифрованные пароли с LDAP сервера dnl LDAP - использовать шифрованные пароли с LDAP сервера dnl DOVECOT - использовать /var/run/dovecot/auth-client для проверки паролей dnl CUSTOM - использовать пользовательский механизм проверки логинов и паролей, описанный в confSMTP_AUTH_CUSTOM_SERVER_CONDITION define(`confSMTP_AUTH_SOURCE', `PAM')dnl dnl dnl путь к сокету auth-client define(`confSMTP_AUTH_DOVECOT_SOCKET', `/var/run/dovecot/auth-client')dnl dnl dnl путь к файлу с нешифрованными паролями define(`confSMTP_AUTH_PASSWD_PLAIN', `/etc/passwd.plain')dnl dnl путь к файлу с шифрованными паролями define(`confSMTP_AUTH_PASSWD', `/etc/master.passwd')dnl dnl dnl запрос к БД MySQL для проверки пароля define(`confSMTP_AUTH_MYSQL_PLAIN', `SELECT clear FROM passwd WHERE id="LOGIN"')dnl define(`confSMTP_AUTH_MYSQL', `SELECT crypt FROM passwd WHERE id="LOGIN"')dnl dnl dnl запрос к БД SQLite для проверки пароля define(`confSMTP_AUTH_SQLITE_PLAIN', `SELECT clear FROM passwd WHERE id="LOGIN"')dnl define(`confSMTP_AUTH_SQLITE', `SELECT crypt FROM passwd WHERE id="LOGIN"')dnl dnl dnl имя хоста и порт IMAP сервера define(`confSMTP_AUTH_IMAP_HOST', `localhost')dnl define(`confSMTP_AUTH_IMAP_PORT', `143')dnl dnl dnl имя хоста и номер порта SMTP сервера dnl define(`confSMTP_AUTH_SMTP_HOST', `another.smtp.host') define(`confSMTP_AUTH_SMTP_PORT', `25') dnl механизм проверки SMTP логина на пароля на альтернативном сервере dnl PLAIN - использовать механизм PLAIN dnl LOGIN - использовать механизм LOGIN define(`confSMTP_AUTH_SMTP_MECH', `LOGIN') dnl dnl имя хоста и номер порта SMTP сервера с TLS dnl define(`confSMTP_AUTH_SMTPTLS_HOST', `another.smtp.host') define(`confSMTP_AUTH_SMTPTLS_PORT', `25') dnl проверка SMTP логина и пароля без использования TLS dnl NO - не отключать использование TLS dnl YES - отключать использование TLS define(`confSMTP_AUTH_SMTPTLS_NOTLS', `NO') dnl dnl имя хоста LDAP сервера и шаблон имени LDAP пользователя (ключевое слово LOGIN будет заменено SMTP логином) define(`confSMTP_AUTH_LDAPAUTH_HOST', `127.0.0.1')dnl define(`confSMTP_AUTH_LDAPAUTH_LOGIN', `cn=LOGIN,cn=Users,dc=ad,dc=domain,dc=tld')dnl define(`confSMTP_AUTH_LDAPAUTH_LOGIN', `LOGIN@ad.domain.tld')dnl dnl dnl имя хоста LDAP сервера, LDAP логин и пароль, подолнительные параметры LDAP, LDAP запрос define(`confSMTP_AUTH_LDAP_HOST', `127.0.0.1')dnl define(`confSMTP_AUTH_LDAP_LOGIN', `LDAP_USER')dnl define(`confSMTP_AUTH_LDAP_PASS', `LDAP_PASSWORD')dnl define(`confSMTP_AUTH_LDAP_EXTRAATTR', `REFERRALS=nofollow')dnl define(`confSMTP_AUTH_LDAP_BASE', `dc=domain,dc=tld')dnl define(`confSMTP_AUTH_LDAP_PASSWD_ATTR', `userPassword')dnl define(`confSMTP_AUTH_LDAP_FILTER', `(&(objectClass=posixAccount)(uid=LOGIN))')dnl dnl dnl существует смешанный тип LDAP аутентификации, когда при confSMTP_AUTH_SOURCE, dnl равном `LDAP', в качестве логина и пароля LDAP сервера указываются SMTP логин dnl и SMTP пароль (как при confSMTP_AUTH_SOURCE, равном `LDAPAUTH'), но при этом dnl еще выполняет запрос к LDAP серверу. при этом confSMTP_AUTH_LDAP_PASSWD_ATTR dnl должен быть пустым. dnl такая схема может использоваться в случае, когда LDAP сервер не возвращает dnl значение атрибута пароля пользователя, а лишь дает возможность проверить dnl его, при этом еще не всякий пользователь, прошедший аутентификацию на LDAP dnl сервере, является валидным SMTP пользователем. dnl в качестве примера можно рассматривать случай интеграции exim с Active dnl Directory, когда только члены определенной группы считаются валидными dnl почтовыми пользователями. dnl define(`confSMTP_AUTH_LDAP_HOST', `dc.domain.tld')dnl dnl define(`confSMTP_AUTH_LDAP_LOGIN', `LOGIN@domain.tld')dnl dnl define(`confSMTP_AUTH_LDAP_PASS', `PASSWORD')dnl dnl define(`confSMTP_AUTH_LDAP_BASE', `dc=domain,dc=tld')dnl dnl define(`confSMTP_AUTH_LDAP_PASSWD_ATTR', `')dnl dnl define(`confSMTP_AUTH_LDAP_FILTER', `(&(objectClass=user)(sAMAccountName=LOGIN)(memberOf=CN=Mail Users,OU=Mail,DC=domain,DC=tld))')dnl dnl dnl название win домена при проверке паролей в Active Directory define(`confSMTP_AUTH_NTLM_DC_DOMAIN', `WIN.DOMAIN.NAME')dnl dnl dnl ############################################## dnl dnl использовать список исключений для анонсирования SMTP Auth dnl NO - не использовать список исключений dnl YES - использовать список исключений define(`confSMTP_AUTH_SKIP_ADVERTIZE', `NO')dnl dnl сети и хосты должны быть перечислены в файле CONFDIR/skip_auth_advertise dnl dnl ############################################## dnl dnl ограничения при использовании SMTP аутентификации dnl NO - не использовать ограничения dnl LOGIN_MISMATCH - адреса аутентифицированных отправителей должны совпадать с SMTP логинами dnl LOGIN_MISMATCH_MAPS - адреса аутентифицированных отправителей должны соответствовать SMTP логинам dnl соответствие указывается в файле CONFDIR/senders-login-maps dnl DISABLE_PLAIN_AUTH_WITHOUT_TLS - запрет аутентификации с использованием механизмов LOGIN или PLAIN без шифрования dnl DISABLE_AUTH_WITHOUT_TLS - запрет аутентификации без шифрования dnl DISABLE_AUTH_WITHOUT_TLS_SKIP - использовать исключения из запрета аутентификации без шифрования для SMTP логинов, dnl указанных в CONFDIR/authplain-enabled, и хостов, указанных в dnl confSMTP_AUTH_RESTRICT_DISABLE_AUTH_WITHOUT_TLS_SKIP_HOSTS dnl ENFORCE_ON_SUBMIT - требовать использование SMTP аутентификации при работе через порт 587 dnl ENFORCE_AUTH_ON_PORT_587 - синоним для ENFORCE_ON_SUBMIT dnl DISABLE_AUTH_ON_PORT_25 - запрет аутентификации на порту 25 dnl DISABLE_AUTH_ON_PORT_25_SKIP - использовать исключения запрета аутентификации на порту 25 для списка хостов, dnl указанного в confSMTP_AUTH_RESTRICT_DISABLE_AUTH_ON_PORT_25_SKIP_HOSTS dnl define(`confSMTP_AUTH_RESTRICT', `NO')dnl define(`confSMTP_AUTH_RESTRICT', `DISABLE_AUTH_WITHOUT_TLS ENFORCE_AUTH_ON_PORT_587')dnl dnl dnl исключать из запрета аутентификации без TLS следующие хосты: define(`confSMTP_AUTH_RESTRICT_DISABLE_AUTH_WITHOUT_TLS_SKIP_HOSTS', `+relay_from_hosts')dnl dnl dnl использовать исключения запрета аутентификации на порту 25 для данного списка хостов define(`confSMTP_AUTH_RESTRICT_DISABLE_AUTH_ON_PORT_25_SKIP_HOSTS', `+relay_from_hosts')dnl dnl dnl ################################################################## dnl RELAY dnl ################################################################## dnl dnl глобальный белый список рилеев (исключаются все проверки): dnl NO - не использовать белый список dnl YES - использовать белый список define(`confWHITE_LIST_RELAYS', `NO')dnl dnl dnl глобальный белый список отправителей (исключаются все проверки): dnl NO - не использовать белый список dnl YES - использовать белый список define(`confWHITE_LIST_SENDERS', `NO')dnl dnl dnl список указывается в файле CONFDIR/senders-whitelist в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl zuper.domain.com : user : info : admin dnl important.partner.domain : * dnl dnl ############################################## dnl dnl использовать список рилеев, коннекты с которых будут dropped dnl со стороны клиента это будет выглядеть как connection refused dnl NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_RELAY_DROPPED', `YES')dnl dnl список хостов и сетей указывается в виде CIDR в файле CONFDIR/hosts-dropfrom dnl dnl ############################################## dnl dnl проверка наличия записи рилея в реверсной зоне DNS (список) dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx, если запись отсутствует в реверсной зоне dnl и 451 в случае проблем с резолвингом dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl MAIL - проверка резолвинга в acl_smtp_mail dnl RCPT - проверка резолвинга в acl_smtp_rcpt define(`confCHECK_RELAY_RESOLVE', `WARN RCPT')dnl dnl необходимо, чтобы confCHECK_RELAY_RESOLVE наряду с WARN, DEFER или REJECT содержал dnl одно из пары значений MAIL или RCPT dnl значение GREYLIST несовместимо со значением MAIL dnl dnl проверка совпадения записей рилея в прямой и реверсной зонах DNS dnl (проверка работает только если переменная confCHECK_RELAY_RESOLVE не установлена в NO) dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям define(`confCHECK_RELAY_FORGED', `WARN')dnl dnl dnl исключеня из проверки резолвинга в реверсной зоне (список) dnl NO - не делать исключений из проверки резолвинга в реверсной зоне dnl AUTH - не проводить проверку аутентифицированных отправителей dnl RELAY_FROM - не проводить проверку исходящих сообщений dnl ACCESS - не проводить проверку для хостов, указанных в CONFDIR/access-relay со значением ok dnl WARN - вывод в лог файл предупреждения define(`confCHECK_RELAY_RESOLVE_SKIP', `AUTH RELAY_FROM ACCESS')dnl dnl в confCHECK_RELAY_RESOLVE_SKIP могут быть указаны несколько значений, разделеные пробелом dnl dnl exim должен быть скомпилирован с поддержкой dnsdb dnl dnl значение для host_lookup define(`confHOST_LOOKUP', `*')dnl dnl dnl ############################################## dnl dnl проверка рилея отправителя dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_ACCESS_RELAY', `WARN')dnl dnl dnl действия WARN, PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел dnl dnl в файле access-relay-blacklist перечисляются A записи хостов и сети в виде CIDR dnl для хостов и сетей, перечисленных в файле access-relay-blacklist, применяется dnl действие, указанное в переменной confCHECK_ACCESS_RELAY dnl dnl в файле access-relay перечисляются A записи хостов, сети в виде CIDR, dnl PTR записи хостов, доменные зоны в виде wildcard или регулярных выражений dnl dnl в файле access-relay можно указать необходимое действие для данного dnl хоста в виде: dnl хост : действие : сообщение : сообщение 2 dnl dnl где dnl хост - A запись хоста, сеть в виде CIDR, PTR запись хоста или dnl доменная зона в виде wildcard или регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl возможные действия: dnl ok - исключение из проверки для указанного хоста dnl warn - вывод предупреждения в файл протокола и добавление в письмо поля заголовка dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY dnl dnl пример: dnl A.B.C.D : defer : message defered. contact postmaster@$qualify_domain dnl A.B.C.0/24 : deny : sender network blacklisted dnl host.domain.tld : warn dnl host2.domain.tld : ok dnl *.domain.tld dnl \N^.+\.zuper-ISP\..+$\N : reject : message from zuper-ISP rejected dnl dnl ############################################## dnl dnl проверка страны хоста отправителя dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_ACCESS_RELAY_COUNTRY', `NO')dnl dnl dnl проверка страны хоста отправителя является расширением проверки dnl адреса хоста отправителя. dnl т. е. confCHECK_ACCESS_RELAY_COUNTRY можно использовать только dnl вместе с confCHECK_ACCESS_RELAY. dnl dnl отличием confCHECK_ACCESS_RELAY_COUNTRY от dnl confCHECK_ACCESS_RELAY является лишь то, что вместе адреса хоста dnl отправителя или имени хоста отправителя можно указывать страну dnl хоста отправителя в виде двубуквенного кода. dnl dnl при этом запрос в access-relay по стране хоста отправителя dnl производится только в случае, если в данном файле не найдены адрес dnl хоста отправителя и имя хоста отправителя. dnl dnl в файле CONFDIR/access-relay можно указать необходимые действия для страны dnl хоста отправителя в виде: dnl NN : action : message : log_message dnl dnl где dnl NN - двубуквенный код страны dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl возможные значения для action такие же, как при проверке хоста dnl отправителя (переменная confCHECK_ACCESS_RELAY). dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY dnl dnl пример: dnl CN : defer : message defered. contact postmaster@$qualify_domain dnl MX : pause=20 warn dnl dnl исключения для данного фильтра указываются в файле CONFDIR/access-relay в виде dnl IP адресов или сетей в виде CIDR, в качестве действия указав skip или ok dnl dnl механизм определения страны по IP адресу можно указать в переменной confIP2COUNTRY_BACKEND dnl dnl ############################################## dnl dnl проверка A записи рилея на принадлежность к dial-up/dsl/cable сетям dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_ACCESS_RELAY_DYNAMIC', `WARN')dnl dnl dnl действия WARN, PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел dnl dnl списки dial-up/dsl/cable хостов и сетей можно указывать в виде A записей и номеров сетей dnl указываются в файле CONFDIR/access-relay-dynamic dnl dnl confCHECK_ACCESS_RELAY_DYNAMIC используется только при использовании confCHECK_ACCESS_RELAY dnl dnl ############################################## dnl dnl списки сетей для принудительного greylistng'а при использовании опционального greylistng'а dnl NO - не проводить проверку dnl WARN - вывода по умолчанию в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а define(`confCHECK_RELAY_GREYLIST', `WARN GREYLIST:confGREYLIST_BLOCKED_OPTIONAL')dnl dnl dnl действия WARN, GREYLIST:XX можно указывать через пробел dnl dnl списки хостов и сетей для опционального greylisting'а можно указывать dnl в виде A записей и номеров сетей в виде CIDR в файле CONFDIR/access-relay-greylist dnl dnl confCHECK_RELAY_GREYLIST используется только при использовании dnl confGREYLIST, равном `OPTIONAL' dnl dnl ############################################## dnl dnl пассивная проверка операционной системы хоста отправителя dnl dnl ВНИМАНИЕ! для использования пассивной проверки операционной системы dnl хоста отправителя нужен работающий в режиме демона p0f и собранная dnl динамически загружаемая библиотека exim-p0f3-dlfunc.so (см. ниже) dnl dnl NO - не использовать пассивную проверку ОС хоста отправителя dnl YES - не использовать пассивную проверку ОС хоста отправителя dnl DEBUG - выводить в файл протокола название ОС хоста отправителя dnl вне зависимости от действий в фильтре define(`confCHECK_ACCESS_RELAY_OS', `NO')dnl dnl dnl в файле access-relay-os можно указать необходимое действие для данной ОС в виде: dnl ОС : действие : сообщение : сообщение 2 dnl dnl где dnl ОС - операционная система в виде полного названия, маски или dnl регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl возможные названия ОС можно почерпнуть из файла p0f.fp из состава p0f dnl dnl возможные действия: dnl ok - исключение из проверки для указанной ОС dnl warn - вывод предупреждения в файл протокола и добавление в письмо поля заголовка dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl в полях действия и сообщений можно использовать вычисляемые выражения dnl т. о. можно возвращать разные действия для одной и той же ОС например dnl в зависимости от принадлежности хоста отправителя списку доверенных dnl сетей или от использования шифрования SMTP клиентом dnl dnl пример: dnl \N^Windows.*$\N : warn greylist=10 ${if eq{$tls_cipher}{}{pause=15 reject=1}{pause=5}} : $acl_c_sender_host_os OS detected on ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] dnl dnl для использования данного механизма нужно установить p0f и настроить работу в режиме демона: dnl dnl http://lcamtuf.coredump.cx/p0f.shtml dnl http://lcamtuf.coredump.cx/p0f3/releases/ dnl http://lcamtuf.coredump.cx/p0f3/releases/p0f-3.08b.tgz dnl http://lcamtuf.coredump.cx/p0f3/releases/p0f-latest.tgz dnl dnl для FreeBSD: dnl cd /usr/ports/net-mgmt/p0f && make install clean dnl dnl для RedHat/CentOS/Fedora: dnl https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/source/tree/Packages/p/p0f-3.09b-2.fc26.src.rpm dnl ftp://ftp.funet.fi/pub/Linux/mirrors/fedora/linux/development/rawhide/Everything/source/tree/Packages/p/p0f-3.09b-2.fc26.src.rpm dnl dnl отдельно нужно собрать exim-p0f3-dlfunc и скопировать файл exim-p0f3-dlfunc.so в каталог /usr/local/libexec/exim dnl dnl http://dist.epipe.com/exim/ dnl http://dist.epipe.com/exim/exim-p0f3-dlfunc-0.1.README.txt dnl http://dist.epipe.com/exim/exim-p0f3-dlfunc-0.1.tar.gz dnl dnl для сборки динамически загружаемой библиотеки потребутся исходные тексты exim dnl dnl пример для сборки exim из порта FreeBSD: dnl dnl fetch http://dist.epipe.com/exim/exim-p0f3-dlfunc-0.1.tar.gz dnl tar -xzf exim-p0f3-dlfunc-0.1.tar.gz dnl cd exim-p0f3-dlfunc-0.1 dnl CPPFLAGS="-I`ls -1d /usr/ports/mail/exim/work/exim-4.*/build-FreeBSD-*`" ./configure --libdir=`ls -1d /usr/ports/mail/exim/work/exim-4.*/build-FreeBSD-*`/ dnl make dnl cp -p .libs/exim-p0f3-dlfunc.so /usr/local/libexec/exim/ dnl cd .. dnl dnl пример для сборки exim из src rpm под CentOS: dnl dnl wget http://dist.epipe.com/exim/exim-p0f3-dlfunc-0.1.tar.gz dnl tar -xzf exim-p0f3-dlfunc-0.1.tar.gz dnl cd exim-p0f3-dlfunc-0.1 dnl CPPFLAGS="-I`ls -1d /usr/src/redhat/BUILD/exim-4.*/build-Linux-* | tail -n 1`" ./configure --libdir=`ls -1d /usr/src/redhat/BUILD/exim-4.*/build-Linux-* | tail -n 1`/ dnl make dnl cp -p .libs/exim-p0f3-dlfunc.so /usr/local/libexec/exim/ dnl cd .. dnl dnl путь по умолчанию к файлу сокета p0f: define(`confCHECK_ACCESS_OS_P0F_SOCKET', `/var/run/p0f.sock')dnl dnl dnl т. к. p0f может слушать лишь на одном интерфейсе, то может понадобиться dnl запуск нескольких экземпляров p0f с настройкой работы на разных dnl интерфейсах и использованием разных файлов сокетов. dnl в этом случае нужно указать зависимость файла сокета от IP адреса интерфейса, на который пришло соединение от SMTP клиента: dnl define(`confCHECK_ACCESS_OS_P0F_SOCKET', `${if eq{$received_ip_address}{1.2.3.4}{/var/run/p0f_em1.sock}{/var/run/p0f.sock}}')dnl dnl dnl исключения из пассивной проверки операционной системы хоста отправителя: dnl AUTH - исключение для аутентифицированных отправителей dnl HOSTS - исключение для хостов из confCHECK_ACCESS_RELAY_OS_SKIP_HOSTS define(`confCHECK_ACCESS_RELAY_OS_SKIP', `AUTH HOSTS')dnl dnl dnl исключения из пассивной проверки операционной системы хоста отправителя для хостов из списка: define(`confCHECK_ACCESS_RELAY_OS_SKIP_HOSTS', `+relay_from_hosts')dnl dnl dnl ################################################################## dnl ENVELOPE dnl ################################################################## dnl dnl встроенная проверка HELO dnl NO - не проводить проверку dnl YES - вывода в лог файл предупреждения define(`confVERIFY_HELO', `NO')dnl dnl dnl ############################################## dnl dnl проверка HELO в виде адреса нашего интерфейса, нашего имени хоста, наших доменов dnl NO - не проводить проверку dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывода в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_HELO_OWN', `WARN')dnl dnl dnl ############################################## dnl dnl проверка HELO в черном списке dnl NO - не проводить проверку dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврат клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl define(`confCHECK_ACCESS_HELO', `WARN')dnl dnl dnl действия PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел с dnl другими действиями dnl dnl черный список HELO находится в файле confCONFDIR/access-helo в виде: dnl helo : action : message : log_message dnl dnl возможные значения для action: dnl ok - исключение из проверки для указанного helo dnl warn - вывод в лог файл предупреждения dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl если action отсутствует, то будет использовано значение из confCHECK_ACCESS_HELO dnl dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl пример: dnl [127.0.0.1] : deny : Invalid greeting used dnl localhost : deny : Invalid greeting used dnl [194.183.174.249] : deny : Invalid greeting used dnl domain.tld : deny : Invalid greeting used dnl \N^.+\.localhost\N : deny : Invalid greeting used dnl localhost.localdomain : deny : Invalid greeting used dnl compuserv.com : deny : Invalid greeting used dnl microsoft.com : deny : Invalid greeting used dnl QRJATIDY : deny : Invalid greeting used : helo blacklisted dnl QRJATYDI : deny : Invalid greeting used dnl dnl \N^[^\.]+\N : deny : Invalid greeting used : HELO without point dnl \N^\.$\N : deny : Invalid greeting used : HELO with only point dnl \N\.\.\N : deny : Invalid greeting used : HELO with double point dnl \N^\.\N : deny : Invalid greeting used : HELO begins with point dnl \N^[^\.]+\.$\N : deny : Invalid greeting used : HELO ends with point dnl \N^<.*>$\N : deny : Invalid greeting used dnl \N^<.+$\N : deny : Invalid greeting used dnl \N^.+>$\N : deny : Invalid greeting used dnl \N^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$\N : deny : Invalid greeting used : HELO used IP address dnl \N^.*\@.*$\N : deny : Invalid greeting used : @ found in HELO/EHLO dnl *.in-addr.arpa : deny : Invalid greeting used dnl \N^.+\.in-addr\.arpa\..+$\N : deny : Invalid greeting used dnl dnl для следующих проверок необходимо, чтобы helo_allow_chars содержал символы _|:/ dnl \N^.*_.*$\N : deny : Access denied. Underscores in HELO are not permitted by RFC2821. Fix your broken mail server and try again dnl \N^.*\|.*$\N : deny : Pipe found in HELO/EHLO dnl \N^.*http://.*$\N : deny : HTTP url found in HELO/EHLO dnl dnl ############################################## dnl dnl проверка соответствия HELO и PTR записи хоста отправителя dnl данная проверка может использовать в случаях, когда в HELO указано dnl имя хоста из определенного домена, и при этом PTR запись хоста dnl отправителя должна быть из этого же (или другого, но определенного) dnl домена dnl NO - не проводить проверку dnl YES - проводить проверку dnl define(`confCHECK_HELO_FORGED', `NO')dnl dnl dnl соответствие HELO и PTR записей хостов отправителей описано в файле confCONFDIR/access-helo-forged в виде: dnl : : : dnl dnl helo_regexp - регулярное выражение, применяемое к HELO dnl hostname_regexp - регулярное выражение, которому должна dnl соответствовать PTR запись хоста отправителя при dnl соответствии HELO первому регуляному выражению dnl action - действие в случае несоответствия PTR записи dnl хоста отправителя второму регуляному выражению dnl возможные значения: dnl drop - отвергнуть сообщение и оборвать соединение dnl deny - отвергнуть сообщение dnl reject - синоним deny dnl defer - вернуть временную ошибку dnl warn - выдать предупреждение в лог файл dnl quarantine- принять письмо с сохранением в карантин dnl без доставки получателям dnl pause=XX- пауза XX секунд dnl greylistXX- добавить XX баллов к счетчику dnl опционального greylisting'а dnl reject=XX- добавить XX баллов к счетчику dnl опционального reject'а dnl action_tempfail - действие в случае проблем с резолвингом PTR dnl записи хоста отправителя, возможные значения: dnl defer - вернуть клиенту 4xx dnl pass - принять сообщение dnl warn - выдать предупреждение в лог файл dnl hostname_regexp - регулярное выражение, которому должна dnl соответстовать PTR запись хоста отправителя, dnl если HELO соответствует первому регулярному dnl выражению dnl регулярное выражение обязательно указыватеся без dnl в начале и в конце dnl dnl пример: dnl \N^(.+\.)*compuserve\.com$\N : deny : defer : ^(.+\.)*compuserve\.com$ dnl \N^(.+\.)*hotmail\.com$\N : deny : defer : ^(.+\.)*hotmail\.com$ dnl \N^(.+\.)*galaradio\.com$\N : warn : pass : ^(.+\.)*galaradio\.com$ dnl dnl исключения указываются в файле confCONFDIR/skip_helo_forged_check в виде: dnl <адрес_хоста_отправителя> : dnl dnl в качестве адреса хоста отправителя может быть указана A запись хоста dnl или сеть в виде CIDR dnl в качестве regexp указывается регулярное выражение, которому должно dnl соответствовать HELO сообщений данного хоста отправителя dnl регулярное выражение обязательно указыватеся без \N в начале и в конце dnl dnl пример: dnl 66.218.64.0/19 : ^(.+\.)*yahoo\.com$ dnl 213.180.200.0/24 : ^(.+\.)*yandex\.ru$ dnl 66.220.144.0/20 : ^mx-out\.facebook\.com$ dnl dnl ############################################## dnl dnl проверка FQDN хоста отправителя в HELO по следующему алгоритму: dnl 1. поизводится получение A записи аргумента команды HELO dnl 2. полученная A запись сравнивается с A записью рилея dnl 3. если A записи равны, проверка оканчивается успешно dnl 4. если A записи не равны, сравниваются доменные части HELO и PTR записи рилея dnl 5. если они не равны, сообщение считается не прошедшим проверку dnl 6. если доменные части HELO и PTR записи рилея равны, то сравниваются номера dnl сетей класса C полученной ранее A записи HELO и A записи рилея dnl 7. если номера сетей равны (A запись HELO и A запись рилея находятся в одной dnl сети класса C), то проверка оканчивается успешно dnl 8. в противном случае сообщение считается не прошедшим проверку dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl DEFER - возврата клиенту кода 451 dnl WARN - вывода в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_HELO_FQDN_FORGED', `NO')dnl define(`confCHECK_HELO_FQDN_DEFER', `NO')dnl define(`confCHECK_HELO_FQDN_NOT_RESOLVABLE', `NO')dnl dnl в confCHECK_HELO_FQDN_FORGED, confCHECK_HELO_FQDN_DEFER и dnl confCHECK_HELO_FQDN_NOT_RESOLVABLE могут быть указаны несколько значений, dnl разделеные пробелом dnl dnl исключеня из проверки FQDN в HELO (список) dnl AUTH - не проводить проверку аутентифицированных отправителей dnl RELAY_FROM - не проводить проверку исходящих сообщений dnl HOST_LIST - не проводить проверку сообщений, получаемых с определенного списка хостов dnl (список хостов/сетей находится в файле skip_helo_fqdn_check) dnl REGEXP - не проводить проверку сообщений, HELO которых описано в виде регулярного dnl выражения в файле skip_helo_forged_check define(`confCHECK_HELO_FQDN_SKIP', `AUTH RELAY_FROM')dnl dnl dnl при значении REGEXP в confCHECK_HELO_FQDN_SKIP исключения указываются dnl в файле confCONFDIR/skip_helo_forged_check в виде: dnl <адрес_хоста_отправителя> : dnl dnl в качестве адреса хоста отправителя может быть указана A запись хоста dnl или сеть в виде CIDR dnl в качестве regexp указывается регулярное выражение, которому должно dnl соответствовать HELO сообщений данного хоста отправителя dnl регулярное выражение обязательно указыватеся без \N в начале и в конце dnl dnl пример: dnl 66.218.64.0/19 : ^(.+\.)*yahoo\.com$ dnl 213.180.200.0/24 : ^(.+\.)*yandex\.ru$ dnl 66.220.144.0/20 : ^mx-out\.facebook\.com$ dnl dnl ############################################## dnl dnl проверка резолвинга домена верхнего уровня аргумента команды HELO dnl NO - не проверять резолвинг домена верхнего уровня команды HELO dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврат клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_HELO_TOP_LEVEL', `NO')dnl dnl dnl из проверки исключаются известные домены: define(`confCHECK_HELO_TOP_LEVEL_SKIP', `aaa:aarp:abb:abbott:abogado:ac:academy:accenture:accountant:accountants:aco:active:actor:ad:ads:adult:ae:aeg:aero:af:afl:ag:agency:ai:aig:airforce:airtel:al:allfinanz:alsace:am:amica:amsterdam:an:android:ao:apartments:app:apple:aq:aquarelle:ar:aramco:archi:army:arpa:arte:as:asia:associates:at:attorney:au:auction:audi:audio:author:auto:autos:aw:ax:axa:az:azure:ba:band:bank:bar:barcelona:barclaycard:barclays:bargains:bauhaus:bayern:bb:bbc:bbva:bcn:bd:be:beats:beer:bentley:berlin:best:bet:bf:bg:bh:bharti:bi:bible:bid:bike:bing:bingo:bio:biz:bj:black:blackfriday:bloomberg:blue:bm:bms:bmw:bn:bnl:bnpparibas:bo:boats:boehringer:bom:bond:boo:book:boots:bostik:bot:boutique:br:bradesco:bridgestone:broadway:broker:brother:brussels:bs:bt:budapest:bugatti:build:builders:business:buy:buzz:bv:bw:by:bz:bzh:ca:cab:cafe:cal:call:camera:camp:cancerresearch:canon:capetown:capital:car:caravan:cards:care:career:careers:cars:cartier:casa:cash:casino:cat:catering:cba:cbn:cc:cd:ceb:center:ceo:cern:cf:cfa:cfd:cg:ch:chanel:channel:chat:cheap:chloe:christmas:chrome:church:ci:cipriani:circle:cisco:citic:city:cityeats:ck:cl:claims:cleaning:click:clinic:clothing:cloud:club:clubmed:cm:cn:co:coach:codes:coffee:college:cologne:com:commbank:community:company:computer:comsec:condos:construction:consulting:contractors:cooking:cool:coop:corsica:country:coupons:courses:cr:credit:creditcard:creditunion:cricket:crown:crs:cruises:csc:cu:cuisinella:cv:cw:cx:cy:cymru:cyou:cz:dabur:dad:dance:date:dating:datsun:day:dclk:de:deals:degree:delivery:dell:delta:democrat:dental:dentist:desi:design:dev:diamonds:diet:digital:direct:directory:discount:dj:dk:dm:dnp:do:docs:dog:doha:domains:doosan:download:drive:durban:dvag:dz:earth:eat:ec:edu:education:ee:eg:email:emerck:energy:engineer:engineering:enterprises:epson:equipment:er:erni:es:esq:estate:et:eu:eurovision:eus:events:everbank:exchange:expert:exposed:express:fage:fail:fairwinds:faith:family:fan:fans:farm:fashion:fast:feedback:ferrero:fi:film:final:finance:financial:firestone:firmdale:fish:fishing:fit:fitness:fj:fk:flights:florist:flowers:flsmidth:fly:fm:fo:foo:football:forex:forsale:forum:foundation:fr:frl:frogans:fund:furniture:futbol:fyi:ga:gal:gallery:game:garden:gb:gbiz:gd:gdn:ge:gea:gent:genting:gf:gg:ggee:gh:gi:gift:gifts:gives:giving:gl:glass:gle:global:globo:gm:gmail:gmo:gmx:gn:gold:goldpoint:golf:goo:goog:google:gop:got:gov:gp:gq:gr:grainger:graphics:gratis:green:gripe:group:gs:gt:gu:gucci:guge:guide:guitars:guru:gw:gy:hamburg:hangout:haus:healthcare:help:here:hermes:hiphop:hitachi:hiv:hk:hm:hn:hockey:holdings:holiday:homedepot:homes:honda:horse:host:hosting:hoteles:hotmail:house:how:hr:hsbc:ht:hu:hyundai:ibm:icbc:ice:icu:id:ie:ifm:iinet:il:im:immo:immobilien:in:industries:infiniti:info:ing:ink:institute:insurance:insure:int:international:investments:io:ipiranga:iq:ir:irish:is:ist:istanbul:it:itau:iwc:jaguar:java:jcb:je:jetzt:jewelry:jlc:jll:jm:jo:jobs:joburg:jot:joy:jp:jprs:juegos:kaufen:kddi:ke:kg:kh:ki:kia:kim:kinder:kitchen:kiwi:km:kn:koeln:komatsu:kp:kr:krd:kred:kw:ky:kyoto:kz:la:lacaixa:lamborghini:lancaster:land:landrover:lasalle:lat:latrobe:law:lawyer:lb:lc:lds:lease:leclerc:legal:lexus:lgbt:li:liaison:lidl:life:lifestyle:lighting:like:limited:limo:linde:link:live:lixil:lk:loan:loans:lol:london:lotte:lotto:love:lr:ls:lt:ltd:ltda:lu:lupin:luxe:luxury:lv:ly:ma:madrid:maif:maison:man:management:mango:market:marketing:markets:marriott:mba:mc:md:me:med:media:meet:melbourne:meme:memorial:men:menu:meo:mg:mh:miami:microsoft:mil:mini:mk:ml:mm:mma:mn:mo:mobi:moda:moe:moi:mom:monash:money:montblanc:mormon:mortgage:moscow:motorcycles:mov:movie:movistar:mp:mq:mr:ms:mt:mtn:mtpc:mtr:mu:museum:mutuelle:mv:mw:mx:my:mz:na:nadex:nagoya:name:navy:nc:ne:nec:net:netbank:network:neustar:new:news:nexus:nf:ng:ngo:nhk:ni:nico:ninja:nissan:nl:no:nokia:norton:nowruz:np:nr:nra:nrw:ntt:nu:nyc:nz:obi:office:okinawa:om:omega:one:ong:onl:online:ooo:oracle:orange:org:organic:osaka:otsuka:ovh:pa:page:panerai:paris:pars:partners:parts:party:pe:pet:pf:pg:ph:pharmacy:philips:photo:photography:photos:physio:piaget:pics:pictet:pictures:pin:ping:pink:pizza:pk:pl:place:play:playstation:plumbing:plus:pm:pn:pohl:poker:porn:post:pr:praxi:press:pro:prod:productions:prof:properties:property:protection:ps:pt:pub:pw:py:qa:qpon:quebec:racing:re:read:realtor:realty:recipes:red:redstone:redumbrella:rehab:reise:reisen:reit:ren:rent:rentals:repair:report:republican:rest:restaurant:review:reviews:rewiew:rich:ricoh:rio:rip:ro:rocher:rocks:rodeo:room:rs:rsvp:ru:ruhr:run:rw:rwe:ryukyu:sa:saarland:safe:sakura:sale:salon:samsung:sandvik:sandvikcoromant:sanofi:sap:sapo:sarl:saxo:sb:sbs:sc:sca:scb:schmidt:scholarships:school:schule:schwarz:science:scor:scot:sd:se:seat:security:seek:sener:services:seven:sew:sex:sexy:sfr:sg:sh:sharp:shia:shiksha:shoes:show:shriram:si:singles:site:sj:sk:ski:sky:skype:sl:sm:smile:sn:sncf:so:soccer:social:software:sohu:solar:solutions:sony:soy:space:spiegel:spreadbetting:sr:srl:st:stada:starhub:statoil:stc:stcgroup:stockholm:studio:study:style:su:suck:sucks:supplies:supply:support:surf:surgery:suzuki:sv:swatch:swiss:sx:sy:sydney:symantec:systems:sz:tab:taipei:tatamotors:tatar:tattoo:tax:taxi:tc:tci:td:team:tech:technology:tel:telefonica:temasek:tennis:tf:tg:th:thd:theater:theatre:tickets:tienda:tips:tires:tirol:tj:tk:tl:tm:tn:to:today:tokyo:tools:top:toray:toshiba:tours:town:toyota:toys:tp:tr:trade:trading:training:travel:travelers:trust:trv:tt:tui:tv:tw:tz:ua:ubs:ug:uk:university:uno:uol:us:uy:uz:va:vacations:vana:vc:ve:vegas:ventures:verisign:versicherung:vet:vg:vi:viajes:video:villas:vin:vip:virgin:vision:vista:vistaprint:viva:vlaanderen:vn:vodka:vote:voting:voto:voyage:vu:wales:walter:wang:watch:webcam:website:wed:wedding:weir:wf:whoswho:wien:wiki:williamhill:win:windows:wine:wme:work:works:world:ws:wtc:wtf:xbox:xerox:xin:xn--3ds443g:xn--4gbrim:xn--6frz82g:xn--6qq986b3xl:xn--80adxhks:xn--80ao21a:xn--80asehdb:xn--80aswg:xn--90a3ac:xn--c1avg:xn--czr694b:xn--fiq228c5hs:xn--i1b6b1a6a2e:xn--j1amh:xn--mgbaam7a8h:xn--ngbc5azd:xn--nqv7f:xn--p1ai:xn--q9jyb4c:xn--wgbl6a:xn--ygbi2ammx:xperia:xxx:xyz:yachts:yamaxun:yandex:ye:yodobashi:yoga:yokohama:youtube:yt:yu:za:zara:zero:zip:zm:zone:zuerich:zw')dnl dnl получить свежий список TLD можно следующей командой: dnl wget http://data.iana.org/TLD/tlds-alpha-by-domain.txt -O - | grep -v -e '--' | grep -v '^ *#' | sort | tr '[:upper:]' '[:lower:]' | perl -p -e 's/\n/:/' dnl dnl действие при defer'ах резолвера dnl NO - не игнорировать defer'ы резолвера dnl YES - игнорировать defer'ы резолвера define(`confCHECK_HELO_TOP_LEVEL_DEFER_OK', `YES')dnl dnl dnl ############################################## dnl dnl проверка A записей домена отправителя dnl (несуществующие домены из зон .net и .com могут иметь A запись 64.94.110.11) dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO dnl define(`confCHECK_ACCESS_MAIL_DOMAIN_A', `YES')dnl dnl dnl черный список А записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-a dnl в виде: dnl a_record : действие : сообщение dnl dnl при значении YES переменной confIPv6 в файле CONFDIR/access-mail-domain-a dnl кроме A записей доменов можно указывать AAAA записи в двойных кавычках dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-MX dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl если в файле CONFDIR/access-mail-domain-a будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_MAIL_DOMAIN_A dnl поле "сообщение" может отсутствовать dnl dnl пример: dnl # dnl # http://www.imperialviolet.org/dnsfix.html dnl # dnl 64.94.110.11 : deny : 5.1.8 Just coz VerSign says your domain exists doesnt mean it really does. dnl 194.205.62.122 : deny : 5.1.8 194.205.62.122 - A record for nonexistent domains from .AC and .CC zones dnl 216.220.34.101 : deny : 5.1.8 216.220.34.101 - A record for nonexistent domains from .BZ zone dnl 206.253.214.102 : deny : 5.1.8 206.253.214.102 - A record for nonexistent domains from .CC zone dnl 159.226.7.162 : deny : 5.1.8 159.226.7.162 - A record for nonexistent domains from .CN zone dnl 219.88.106.80 : deny : 5.1.8 219.88.106.80 - A record for nonexistent domains from .CX zone dnl 202.128.12.163 : deny : 5.1.8 202.128.12.163 - A record for nonexistent domains from .MP zone dnl 195.7.77.20 : deny : 5.1.8 195.7.77.20 - A record for nonexistent domains from .MUSEUM zone dnl 64.55.105.9 : deny : 5.1.8 64.55.105.9 - A record for nonexistent domains from .NU zone dnl 212.181.91.6 : deny : 5.1.8 212.181.91.6 - A record for nonexistent domains from .NU zone dnl 203.119.4.6 : deny : 5.1.8 203.119.4.6 - A record for nonexistent domains from .PH zone dnl 216.98.141.250 : deny : 5.1.8 216.98.141.250 - A record for nonexistent domains from .PW zone dnl 65.125.231.178 : deny : 5.1.8 65.125.231.178 - A record for nonexistent domains from .PW zone dnl 194.205.62.62 : deny : 5.1.8 194.205.62.62 - A record for nonexistent domains from .SH zone dnl 146.101.245.154 : deny : 5.1.8 146.101.245.154 - A record for nonexistent domains from .TD zone dnl 195.20.32.83 : deny : 5.1.8 195.20.32.83 - A record for nonexistent domains from .TK zone dnl 195.20.32.86 : deny : 5.1.8 195.20.32.86 - A record for nonexistent domains from .TK zone dnl 194.205.62.42 : deny : 5.1.8 194.205.62.42 - A record for nonexistent domains from .TM zone dnl 203.73.24.11 : deny : 5.1.8 203.73.24.11 - A record for nonexistent domains from .TW zone dnl 216.35.187.246 : deny : 5.1.8 216.35.187.246 - A record for nonexistent domains from .WS zone dnl dnl ############################################## dnl dnl проверка MX записей домена отправителя dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_MAIL_DOMAIN_MX', `NO')dnl dnl dnl черный список MX записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-mx dnl в виде: dnl ptr_record : действие : сообщение dnl a_record : действие : сообщение dnl NoMX : действие : сообщение dnl dnl при значении YES переменной confIPv6 в файле CONFDIR/access-mail-domain-mx dnl кроме A записей доменов можно указывать AAAA записи в двойных кавычках dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-MX dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl если в файле CONFDIR/access-mail-domain-mx будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_MAIL_DOMAIN_MX dnl поле "сообщение" может отсутствовать dnl dnl пример: dnl x9.bph.com : deny : bogus MX record dnl 127.0.0.0/8 : deny : bogus MX record dnl NoMX : warn pause=20 greylist=10 : Sender domain does not have any MX records dnl dnl ############################################## dnl dnl проверка NS записей домена отправителя dnl dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_MAIL_DOMAIN_NS', `NO')dnl dnl dnl черный список NS записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-ns dnl в виде: dnl ptr_record : действие : сообщение dnl a_record : действие : сообщение dnl dnl при значении YES переменной confIPv6 в файле CONFDIR/access-mail-domain-ns dnl кроме A записей доменов можно указывать AAAA записи в двойных кавычках dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-NS dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl если в файле CONFDIR/access-mail-domain-ns будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_MAIL_DOMAIN_NS dnl поле "сообщение" может отсутствовать dnl dnl пример: dnl ns1.pegas-dns.com : greylist=10 : Too many domains with suspicious SPF records are hosted on $acl_m_key dnl ns2.pegas-dns.com : greylist=10 : Too many domains with suspicious SPF records are hosted on $acl_m_key dnl 91.222.65.12 : greylist=10 : Too many domains with suspicious SPF records are hosted on $acl_m_key dnl dnl ############################################## dnl dnl проверка TXT записи домена отправителя dnl dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_MAIL_DOMAIN_TXT', `NO')dnl dnl dnl черный список TXT записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-txt dnl в виде: dnl txt_record : действие : сообщение SMTP клиенту : сообщение в лог файл dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-TXT dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl поля "сообщение SMTP клиенту" и "сообщение в лог файл" могут отсутствовать dnl если в файле CONFDIR/access-mail-domain-txt будет отсутствовать и поле "действие", dnl то будет выполнено действие по умолчанию из переменной confCHECK_ACCESS_MAIL_DOMAIN_TXT dnl dnl пример: dnl \N^v=spf.*/2\s\-all$\N : deny : Suspicious SPF record dnl dnl ############################################## dnl dnl проверка SPF записи домена отправителя dnl dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_MAIL_DOMAIN_SPF', `NO')dnl dnl dnl черный список SPF записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-spf dnl в виде: dnl spf_record : действие : сообщение SMTP клиенту : сообщение в лог файл dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Mail-SPF dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL dnl submit_sqlite - занесение записи о хосте в базу SQLite dnl submit_rbl - занесение записи о хосте в DNSBL dnl dnl поля "сообщение SMTP клиенту" и "сообщение в лог файл" могут отсутствовать dnl если в файле CONFDIR/access-mail-domain-txt будет отсутствовать и поле "действие", dnl то будет выполнено действие по умолчанию из переменной confCHECK_ACCESS_MAIL_DOMAIN_SPF dnl dnl пример: dnl \N^v=spf.*/2\s\-all$\N : deny : Suspicious SPF record dnl dnl ############################################## dnl dnl встречная проверка адреса отправителя dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения и добавление поля X-Warn-Sender-Verify dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl REJECT - возврата клиенту кода 5xx define(`confVERIFY_SENDER', `REJECT')dnl dnl dnl считать встречную проверку законченной неудачно только если 5xx получен на этапе RCPT To define(`confVERIFY_SENDER_FAILED_ONLY_ON_RCPT_TO_STAGE', `YES')dnl dnl dnl исключения из встречной проверки адреса отправителя dnl NO - не делать исключений dnl AUTH - исключать аутентифицированных отправителей dnl RELAY - исключать рилеи, перечисленные в CONFDIR/skip_verify_sender_relay dnl MAIL - исключать адреса отправителей, перечисленные в CONFDIR/skip_verify_sender_mail dnl RCPT - исключать адреса получателей, перечисленные в CONFDIR/skip_verify_sender_rcpt dnl SPF_PASS - делать исключение, если проверка соответствия SPF записи выполнена успешно define(`confVERIFY_SENDER_SKIP', `RELAY AUTH MAIL RCPT')dnl dnl dnl величина таймаута при проверке отправителя define(`confVERIFY_SENDER_TIMEOUT', `120s')dnl dnl dnl дополнительные параметры, используемые при встречной проверке отправителя define(`confVERIFY_SENDER_PARAMETERS', `')dnl dnl define(`confVERIFY_SENDER_PARAMETERS', `postmaster_mailfrom=postmaster@${qualify_domain}')dnl dnl dnl файл с перечисленными адресами/доменами получателей, для которых при verify sender надо использовать defer=ok define(`confVERIFY_SENDER_DEFER_OK_RCPT', `')dnl dnl пример: dnl define(`confVERIFY_SENDER_DEFER_OK_RCPT', `CONFDIR/verify_sender_defer_ok_rcpt')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl my.domain.com : user : info : admin dnl my.another.domain.com : !user : * dnl dnl файл с перечисленными доменами/адресами отправителей, для которых при verify sender надо использовать defer=ok define(`confVERIFY_SENDER_DEFER_OK_MAIL', `')dnl dnl пример: dnl define(`confVERIFY_SENDER_DEFER_OK_MAIL', `CONFDIR/verify_sender_defer_ok_mail')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl sender.domain.com : user : info : admin dnl dnl игнорирование временных ошибок при встречной проверке отправителя при приеме писем, отправленных из PHP функции mail dnl NO - не игноировать defer'ы при встречной проверке отправителя при приеме писем от PHP функции mail dnl YES - игноировать defer'ы при встречной проверке отправителя при приеме писем от PHP функции mail define(`confVERIFY_SENDER_DEFER_OK_PHP', `NO') dnl исключение из встречной проверки производится, если: dnl - для доменной части адреса отправителя не прописаны MX записи dnl - A запись домена отправителя совпадает с IP адресом хоста отправителя dnl - локальная часть адреса отправителя равна www, apache или nobody dnl dnl список локальных частей адресов отправителей можно дополнять, при этом необходимо использовать символ pipe в качестве разделителя define(`confVERIFY_SENDER_DEFER_OK_PHP_SENDER_LOCAL_PARTS', `www|www-data|apache|nobody|root|anonymous') dnl dnl домены получателей, для которых будет применятся игнорирование dnl временных ошибок при встречной проверке отправителя при приеме dnl писем, отправленных из PHP функции mail: define(`confVERIFY_SENDER_DEFER_OK_PHP_DOMAINS', `+local_domains') dnl при использовании данной функции на транзитном рилее, принимающем всю dnl входящую почту получателей и пересылающем ее далее, целесообразно dnl дополнять значение переменной confVERIFY_SENDER_DEFER_OK_PHP_DOMAINS dnl списком рилеемых доменов: dnl define(`confVERIFY_SENDER_DEFER_OK_PHP_DOMAINS', `+local_domains : +relay_to_domains') dnl dnl dnl ############################################## dnl dnl проверка получателя в relay_to_domains dnl dnl величина таймаута при проверке получателя в relay_to_domains define(`confVERIFY_RECIPIENT_TIMEOUT', `120s')dnl dnl dnl файл с перечисленными адресами/доменами получателей, для которых при verify recipient надо использовать defer=ok define(`confVERIFY_RECIPIENT_DEFER_OK_RCPT', `')dnl dnl пример: dnl define(`confVERIFY_RECIPIENT_DEFER_OK_RCPT', `CONFDIR/verify_recipient_defer_ok_rcpt')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl my.domain.com : user : info : admin dnl my.another.domain.com : !user : * dnl dnl файл с перечисленными доменами/адресами получателей, для которых при verify recipient надо использовать defer=ok define(`confVERIFY_RECIPIENT_DEFER_OK_MAIL', `')dnl dnl пример: dnl define(`confVERIFY_RECIPIENT_DEFER_OK_MAIL', `CONFDIR/verify_recipient_defer_ok_mail')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl sender.domain.com : user : info : admin dnl dnl ############################################## dnl dnl проверка получателей для исходящих писем на этапе приема письма от отправителя dnl NO - не производить проверку получателя dnl DOMAIN - проверять существование домена dnl RCPT - проверять существование получателя define(`confVERIFY_RECIPIENT', `DOMAIN')dnl dnl при невозможности проверить существование домена получателя и/или адреса получателя письмо будет принято dnl dnl ############################################## dnl dnl указание списка адресов, письма для которых не подвергаются антивирусной проверке dnl NO - не указывается список dnl YES - использовать список адресов из файла CONFDIR/recipients_antivirus_haters define(`confRECIPIENTS_ANTIVIRUS_HATERS', `NO')dnl dnl dnl ############################################## dnl dnl указание списка адресов, письма для которых не подвергаются проверкам dnl NO - не указывается список (по умолчанию проверкам не подвергаются dnl ящики postmaster и abuse локальных доменов) dnl YES - использовать список адресов из файла CONFDIR/recipients_spam_friends define(`confRECIPIENTS_SPAM_FRIENDS', `NO')dnl dnl dnl адреса в файле CONFDIR/recipients_spam_friends указываются в виде: dnl domain0 : maibox00 : mailbox01 : mailbox02 dnl domain1 : maibox10 : mailbox11 dnl список адресов по умолчанию можно указать, используя "*" в качестве домена dnl пример: dnl domain.tld : abuse dnl our.domain.com : postmaster : abuse : the_boss dnl other.domain.com : !spam_hater : * dnl * : postmaster : abuse dnl dnl dnl указание списка адресов, письма для которых подвергаются проверкам, dnl даже если среди получателей этого письма есть spam friend'ы dnl dnl NO - не указывается список dnl YES - использовать список адресов из файла CONFDIR/recipients_spam_haters define(`confRECIPIENTS_SPAM_HATERS', `NO')dnl dnl dnl адреса в файле CONFDIR/recipients_spam_haters указываются в виде: dnl domain0 : maibox00 : mailbox01 : mailbox02 dnl domain1 : maibox10 : mailbox11 dnl список адресов по умолчанию можно указать, используя "*" в качестве домена dnl пример: dnl domain.tld : abuse dnl our.domain.com : !postmaster : !abuse : !the_boss : * dnl other.domain.com : spam_hater dnl * : !postmaster : !abuse : * dnl dnl ############################################## dnl dnl проверка приема/передачи почты с только входящих адресов dnl почта с таких адресов не принимается dnl сообщения об ошибках для таких адресов не принимаются dnl NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_RCPT_INCOMING_ONLY', `NO')dnl dnl dnl список только входящих адресов указывается в файле CONFDIR/recipients_incoming_only в виде: dnl domain : addr1 : addr2 : addr3 dnl dnl пример: dnl my.domain.com : support : sales : info dnl dnl ############################################## dnl dnl защита от словарных атак на локальные домены dnl NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_DICT_ATTACK', `NO')dnl dnl максимально допустимое количество несуществующих пользователей define(`confCHECK_DICT_ATTACK_RCPT_FAIL_COUNT', `5')dnl dnl задержка перед выводом последнего сообщения об ошибке и обрыве коннекта define(`confCHECK_DICT_ATTACK_DELAY', `30')dnl dnl dnl ############################################## dnl dnl проверка количества получателей в письмах с MAIL FROM:<> dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_DSN_RCPT_COUNT', `WARN')dnl dnl исключение соощений от локальных пользователей из проверки количества получателей в письмах с MAIL FROM:<> dnl NO - не делать исключение dnl YES - делать исключение define(`confCHECK_DSN_RCPT_COUNT_SKIP_RELAYFROM', `YES')dnl dnl dnl ############################################## dnl dnl проверка адресов хостов отправителя на принадлежность к relay_from_hosts, dnl если в MAIL FROM или RCPT TO указан внутренний домен dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_FAKE_INTERNAL', `WARN')dnl dnl список доменов и отдельных адресов, счиющихся внутренними, указан в файле domains-internal dnl dnl ############################################## dnl dnl проверка адресов хостов отправителя на принадлежность к relay_from_hosts, dnl если в MAIL FROM и RCPT TO указаны одинаковые адреса из локальных доменов dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_FAKE_LOCAL', `WARN')dnl dnl dnl исключение из проверки dnl NO - не делать исключений (по умолчанию делаются исключения для хостов из +relay_from_hosts) dnl AUTH - исключения для аутентифицированных отправителей dnl SPF_PASS - исключения для хостов, успешно прошедших проверку SPF записи dnl TRUSTED_HOSTS - исключения для хостов из trusted сетей define(`confCHECK_FAKE_LOCAL_SKIP', `AUTH TRUSTED_HOSTS')dnl dnl dnl домены, подвергаемые вышеуказанно проверке define(`confCHECK_FAKE_LOCAL_DOMAINS', `+local_domains')dnl dnl define(`confCHECK_FAKE_LOCAL_DOMAINS', `+local_domains : +relay_to_domains')dnl dnl dnl ############################################## dnl dnl проверка адреса получателя в black list'ах dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl REJECT_ALL - отказ в приеме письма для всех получателей dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl DEFER - возврата клиенту кода 451 dnl FAKEREJECT - возврата клиенту кода 5xx с одновременной доставкой сообщения dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_RCPT', `NO')dnl dnl dnl черный список получателей находится в файле CONFDIR/access-rcpt в виде: dnl sender_address : действие : сообщение dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения с данным rcpt to dnl deny - отвергать сообщения с данным rcpt to dnl reject - синоним deny dnl reject_all - отказ в приеме письма для всех получателей dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl noquarantine - не дополнять действие deny (и reject) действием quarantine в dnl случае использования персональных карантинов dnl defer - возврат клиенту временной ошибки 4xx dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl fakereject - возврата клиенту кода 5xx с одновременной доставкой сообщения dnl warn - добавлять в заголовки сообщения поле X-Warn-Recipient dnl текст сообщения об ошибке может быть указан через двоеточие dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl если в файле CONFDIR/access-rcpt будет отсутствовать поле "действие", dnl то будует выполнено действие по умолчанию из переменно confCHECK_ACCESS_RCPT dnl поле "сообщение" может отсутствовать dnl dnl пример: dnl lesya@tcu.kiev.ua : deny : Access denied dnl *@domain.ua : warn greylist=10 dnl dnl ############################################## dnl dnl проверка адреса отправителя в black list'ах dnl NO - не проводить проверку dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврата клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_MAIL', `NO')dnl dnl dnl черный список отправителей находится в файле CONFDIR/access-mail dnl в виде: dnl sender_address : действие : сообщение dnl dnl в качестве "действия" могут выступать: dnl ok - принимать сообщения с данным mail from dnl warn - выдача предупреждения в лог файл и добавление в dnl заголовки сообщения поля X-Warn-Sender dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl если в файле CONFDIR/access-mail будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_MAIL dnl поле "сообщение" может отсутствовать dnl dnl пример: dnl lesya@tcu.kiev.ua : deny : Access denied dnl *@realdeals4u.net : deny dnl shadowcrew@ziplip.com : deny dnl postmaster@domain.ua : ok dnl abuse@domain.ua : warn dnl admin@domain.ua : ok dnl test@domain.ua : warn pause=20 greylist=4 : Sender domain blacklisted dnl *@domain.ua : reject : Sender domain blacklisted dnl \N.*\@.*\d.*\d.*\d.*\d.*\d\N: warn pause=20 greylist=4 : Too many digits in the sender domain dnl dnl ############################################## dnl dnl проверка комбинации адреса отправителя и получателя dnl NO - не проводить проверку dnl REJECT - отвергнуть сообщение dnl REJECT_ALL - отвергнуть сообщение и не доставлять его и остальным получателям dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl QUARANTINE_OTHER - при отказе в приеме письма текущему получателю и dnl наличии других получателей письмо доставляется в карантин без доставки dnl этим остальным получателям dnl DEFER - возврат клиенту временной ошибки dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO dnl define(`confCHECK_ACCESS_COMPAT', `NO')dnl dnl dnl место хранения списков доступа dnl TEXT - хранение списков доступа в access-compat dnl DBM - хранение списков доступа в dbm файле dnl SQLITE - хранение списков доступа в БД SQLite dnl MYSQL - хранение списков доступа в БД MySQL define(`confCHECK_ACCESS_COMPAT_BACKEND', `TEXT')dnl dnl dnl при TEXT в confCHECK_ACCESS_COMPAT_BACKEND: dnl dnl комбинации адресов отправителей и получателей указываются в файле CONFDIR/access-compat dnl в виде: dnl sender_mailbox@sender.domain<@>rcpt_mailbox@rcpt.domain : действие : сообщение dnl dnl в качестве "действия" могут быть использованы: dnl ok - принимать сообщения с данной парой mail from и rcpt to dnl whitelist - исключить из проверок пары адресов отправителя и получателя dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Compat dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl reject_all - отказ в приеме письма для всех получателей dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl quarantine_other - при отказе в приеме письма текущему получателю при наличии других получателей dnl письмо доставляется в карантин без доставки этим другим получателям dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат временной ошибки отправителю dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl если в файле CONFDIR/access-compat будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_COMPAT dnl поле "сообщение" может отсутствовать dnl dnl в адресе отправителя в левой части допустимо использование масок: dnl *@sender.domain<@>rcpt_mailbox@rcpt.domain : deny : Access denied dnl dnl допустимо использование регулярных выражений: dnl \N^<@>(hostmaster|ftpmaster)@rcpt\.domain$\N : deny : Null sender rejected. Thist is incoming address only. dnl dnl если доставка производится в unix mailbox'ы, то возможно указание dnl только почтового ящика в качестве адреса получателя, если домен dnl получателя входит в список локальных доменов dnl dnl примеры: dnl <@>hostmaster@domain.tld : deny : Null sender rejected. Thist is incoming address only. dnl a@b.c<@>hostmaster@domain.tld : warn dnl *@b.c<@>hostmaster@domain.tld : drop dnl *<@>hostmaster@domain.tld : warn dnl \N^<@>.+@domain.tld\N : deny dnl \N^a@b.c<@>.+@domain.tld\N : warn dnl \N^.+@b.c<@>.+@domain.tld\N : defer dnl \N^.+<@>.+@domain.tld\N : warn dnl *@sender.domain<@>user1 : reject dnl dnl при DBM в confCHECK_ACCESS_COMPAT_BACKEND: dnl dnl ключи записи в DBM файле и значение записи такие же, как для TEXT файлов dnl исключением является возможность в поле действия указать время жизни записи в виде expires="время в unixtime" dnl это поле может использоваться для автоматически формируемых временных персональных whitelist'ов dnl dnl путь к DBM файлу define(`confCHECK_ACCESS_COMPAT_DBM_FILE', `confSPOOLDIR/db/access-compat.dbm')dnl dnl ключ записи DBM файла указывается в виде: dnl адрес_отправителя<@>адрес_получателя dnl значение записи DBM файла указывается в виде: dnl expires="время в unixtime" action="действие" message="сообщение smtp клиенту" log_message="сообщение в файл протокола" dnl поле expires может отсуствовать, оно может использоваться для автоматически формируемых временных white lists dnl dnl при SQLITE в confCHECK_ACCESS_COMPAT_BACKEND: dnl dnl путь к файлу sqlite define(`confCHECK_ACCESS_COMPAT_SQLITE_FILE', `confSPOOLDIR/db/access_list.db')dnl dnl запрос к БД SQLite define(`confCHECK_ACCESS_COMPAT_SQLITE_QUERY', `SELECT CONCAT(CONCAT(action, ":"), message) FROM access_list WHERE recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl второй запрос к БД SQLite (опциональный) dnl define(`confCHECK_ACCESS_COMPAT_SQLITE_QUERY2', `SELECT CONCAT(CONCAT(action, ":"), message) FROM access_list WHERE recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address_local_part@}"')dnl dnl dnl при MYSQL в confCHECK_ACCESS_COMPAT_BACKEND: dnl dnl запрос к БД MySQL define(`confCHECK_ACCESS_COMPAT_MYSQL_QUERY', `SELECT CONCAT(CONCAT(action, ":"), message) FROM access_list WHERE recipient="${quote_mysql:$local_part@$domain}" AND sender="${quote_mysql:$sender_address}"')dnl dnl второй запрос к БД MySQL (опциональный) dnl define(`confCHECK_ACCESS_COMPAT_MYSQL_QUERY2', `SELECT CONCAT(CONCAT(action, ":"), message) FROM access_list WHERE recipient="${quote_mysql:$local_part@$domain}" AND sender="${quote_mysql:$sender_address_local_part@}"')dnl dnl опционально могут выполняться также запросы с confCHECK_ACCESS_COMPAT_MYSQL_QUERY3 по confCHECK_ACCESS_COMPAT_MYSQL_QUERY6 dnl каждый следующий запрос выполняется только в том случае, если все предыдущие запросы не вернули результат в явном виде dnl dnl ############################################## dnl dnl Проверка комбинации адреса хоста отправителя, адресов отправителя и получателя dnl dnl NO - не проводить проверку dnl REJECT - возврат клиенту кода 5xx dnl REJECT_ALL - отказ в приеме письма для всех получателей dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl QUARANTINE_OTHER - при отказе в приеме письма текущему получателю и наличии других получателей dnl письмо доставляется в карантин без доставки этим остальным получателям dnl DEFER - возврат клиенту кода 451 dnl WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_ACCESS_COMPAT_RELAY', `NO')dnl dnl dnl место хранения списков доступа dnl TEXT - хранение списков доступа в access-compat-relay dnl DBM - хранение списков доступа в dbm файле dnl SQLITE - хранение списков доступа в БД SQLite dnl MYSQL - хранение списков доступа в БД MySQL define(`confCHECK_ACCESS_COMPAT_RELAY_BACKEND', `TEXT')dnl dnl dnl при TEXT в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl dnl комбинации адресов отправителей и получателей указываются в файле CONFDIR/access-compat-relay dnl в виде: dnl sender_host_address<@>sender_mailbox@sender.domain<@>rcpt_mailbox@rcpt.domain : действие : сообщение : сообщение в лог файл dnl sender_host_name<@>sender_mailbox@sender.domain<@>rcpt_mailbox@rcpt.domain : действие : сообщение : сообщение в лог файл dnl sender_host_address<@>sender_mailbox@sender.domain<@> : действие : сообщение : сообщение в лог файл dnl dnl в качестве "действия" могут быть использованы: dnl ok - принимать сообщения с данной парой mail from и rcpt to dnl whitelist - исключить из проверок пары адресов отправителя и получателя dnl warn - выдача предупреждения в лог файл и в заголовки письма dnl и добавление в заголовки сообщения поле X-Warn-Compat-Relay dnl текст сообщения об ошибке может быть указан через двоеточие dnl deny или reject - отказ в приеме сообщения dnl reject_all - отказ в приеме письма для всех получателей dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl quarantine_other - при отказе в приеме письма текущему получателю при наличии других получателей dnl письмо доставляется в карантин без доставки этим другим получателям dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат временной ошибки отправителю dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl если в файле CONFDIR/access-compat-relay будет отсутствовать поле "действие", dnl то будет выполнено действие по умолчанию из переменно confCHECK_ACCESS_COMPAT_RELAY dnl поле "сообщение" может отсутствовать dnl dnl допустимо использование регулярных выражений: dnl \N^.+<@><@>(hostmaster|ftpmaster)@rcpt\.domain$\N : deny : Null sender rejected. Thist is incoming address only. dnl dnl если доставка производится в unix mailbox'ы, то возможно указание dnl только почтового ящика в качестве адреса получателя, если домен dnl получателя входит в список локальных доменов dnl dnl при DBM в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl dnl путь к DBM файлу dnl define(`confCHECK_ACCESS_COMPAT_RELAY_DBM_FILE', `confSPOOLDIR/db/access-compat-relay.dbm')dnl dnl ключ записи DBM файла указывается в виде: dnl адрес_отправителя<@>адрес_получателя dnl значение записи DBM файла указывается в виде: dnl expires="время в unixtime" action="действие" message="сообщение smtp клиенту" log_message="сообщение в файл протокола" dnl поле expires может отсуствовать, оно может использоваться для автоматически формируемых временных white lists dnl dnl при SQLITE в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl dnl путь к файлу sqlite define(`confCHECK_ACCESS_COMPAT_RELAY_SQLITE_FILE', `confSPOOLDIR/db/access_list_relay.db')dnl dnl запрос к БД SQLite define(`confCHECK_ACCESS_COMPAT_RELAY_SQLITE_QUERY', `SELECT action FROM access_list WHERE sender_host_address="${quote_sqlite:$sender_host_address}" AND recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl второй запрос к БД SQLite (опциональный) define(`confCHECK_ACCESS_COMPAT_RELAY_SQLITE_QUERY2', `SELECT action FROM access_list WHERE sender_host_name="${quote_sqlite:$sender_host_name}" AND recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl третий запрос к БД SQLite (опциональный) define(`confCHECK_ACCESS_COMPAT_RELAY_SQLITE_QUERY3', `SELECT action FROM access_list WHERE sender_host_address="${quote_sqlite:$sender_host_address}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl четвертый запрос к БД SQLite (опциональный) define(`confCHECK_ACCESS_COMPAT_RELAY_SQLITE_QUERY4', `SELECT action FROM access_list WHERE sender_host_name="${quote_sqlite:$sender_host_name}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl dnl при MYSQL в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl dnl запрос к БД MySQL define(`confCHECK_ACCESS_COMPAT_RELAY_MYSQL_QUERY', `SELECT action FROM access_list WHERE sender_host_address="${quote_mysql:$sender_host_address}" AND recipient="${quote_mysql:$local_part@$domain}" AND sender="${quote_mysql:$sender_address}"')dnl dnl второй запрос к БД MySQL (опциональный) dnl define(`confCHECK_ACCESS_COMPAT_RELAY_MYSQL_QUERY2', `SELECT action FROM access_list WHERE sender_host_name="${quote_mysql:$sender_host_name}" AND recipient="${quote_mysql:$local_part@$domain}" AND sender="${quote_mysql:$sender_address}"')dnl dnl третий запрос к БД MySQL (опциональный) dnl define(`confCHECK_ACCESS_COMPAT_RELAY_MYSQL_QUERY3', `SELECT action FROM access_list WHERE sender_host_address="${quote_mysql:$sender_host_address}" AND sender="${quote_mysql:$sender_address}"')dnl dnl четвертый запрос к БД MySQL (опциональный) dnl define(`confCHECK_ACCESS_COMPAT_RELAY_MYSQL_QUERY4', `SELECT action FROM access_list WHERE sender_host_name="${quote_mysql:$sender_host_name}" AND sender="${quote_mysql:$sender_address}"')dnl dnl dnl ############################################## dnl dnl Проверка комбинации страны хоста отправителя, адресов отправителя и получателя dnl NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_ACCESS_COMPAT_RELAY_COUNTRY', `NO')dnl dnl dnl проверка комбинации страны хоста отправителя и адресов отправителя и dnl получателя является расширением проверки комбинации адреса хоста dnl отправителя, адресов отправителя и получателя. dnl т. е. confCHECK_ACCESS_COMPAT_RELAY_COUNTRY можно использовать только dnl вместе с confCHECK_ACCESS_COMPAT_RELAY. dnl dnl отличием confCHECK_ACCESS_COMPAT_RELAY_COUNTRY от dnl confCHECK_ACCESS_COMPAT_RELAY является лишь то, что вместе адреса dnl хоста отправителя или имени хоста отправителя можно указывать страну dnl хоста отправителя в виде двубуквенного кода. dnl dnl при этом запрос в access-compay-relay с комбинацией страны хоста и dnl адресов отправителя и получателя производится только в случае, если в dnl данном файле не найдены комбинации адреса хоста отправителя с dnl адресами отправителя и получателя или имени хоста отправителя с dnl адресами отправителя и получателя. dnl dnl в файле CONFDIR/access-compat-relay можно указать необходимые dnl действия для комбинации страны хоста отправителя, адреса dnl отправителя и адреса получателя в виде: dnl NN<@>sender_mailbox@sender.domain<@>rcpt_mailbox@rcpt.domain : действие : сообщение : сообщение в лог файл dnl dnl где dnl NN - двубуквенный код страны dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение в лог файл - сообщение в лог файл MTA (может отсутствовать) dnl dnl возможные значения для действия такие же, как при проверке кобминации dnl хоста отправителя и адресов отправителя и получателя (переменная dnl confCHECK_ACCESS_COMPAT_RELAY). dnl dnl ответ SMTP клиенту будет использован в случае указания reject/deny dnl или defer в качестве действия. если текст ответа не будет указан, dnl будет использован текст сообщения об ошибке по умолчанию dnl dnl если действие не будет указано, будет использоваться действие, dnl указанное в переменной confCHECK_ACCESS_COMPAT_RELAY dnl dnl пример: dnl CN<@>sender@ukr.net<@>recipient@local.domain.tld : ok dnl \N^CN<@>.+@ukr.net<@>.+@local\.domain\.tld$\N : warn pause=10 greylist=10 : Message with ukr.net sender address domain from China dnl \N^CN<@>.+@ukr.net<@>$\N : deny : Access denied : Message with ukr.net sender address domain from China dnl dnl в примере ко всем письмам из домена ukr.net, отправленным из Китая для пользователей домена local.domain.tld, будут применены пауза и "серые списки". dnl прием писем из домена ukr.net, отправленных из Китая для пользователей других доменов, будет отвергнут. dnl исключение сделано для пары адресов отправителя и получателя sender@ukr.net и recipient@local.domain.tld dnl dnl механизм определения страны по IP адресу можно указать в переменной confIP2COUNTRY_BACKEND dnl dnl при SQLITE в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl запрос к БД SQLite define(`confCHECK_ACCESS_COMPAT_RELAY_COUNTRY_SQLITE_QUERY', `SELECT action FROM access_list WHERE country="$acl_m_sender_host_address_country" AND recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address}"')dnl dnl второй запрос к БД SQLite (опциональный) define(`confCHECK_ACCESS_COMPAT_RELAY_COUNTRY_SQLITE_QUERY2', `SELECT action FROM access_list WHERE country="$acl_m_sender_host_address_country" AND sender="${quote_sqlite:$sender_address}"')dnl dnl dnl при MYSQL в confCHECK_ACCESS_COMPAT_RELAY_BACKEND: dnl запрос к БД MySQL define(`confCHECK_ACCESS_COMPAT_RELAY_COUNTRY_MYSQL_QUERY', `SELECT action FROM access_list WHERE country="$acl_m_sender_host_address_country" AND recipient="${quote_mysql:$local_part@$domain}" AND sender="${quote_mysql:$sender_address}"')dnl dnl второй запрос к БД MySQL (опциональный) define(`confCHECK_ACCESS_COMPAT_RELAY_COUNTRY_MYSQL_QUERY2', `SELECT action FROM access_list WHERE country="$acl_m_sender_host_address_country" AND sender="${quote_mysql:$sender_address}"')dnl dnl dnl ############################################## dnl dnl использование автоматического белого списка: dnl NO - не использовать автоматический белый список dnl DBM - хранить данные автоматического белого списка в dbm файле dnl SQLITE - хранить данные автоматического белого списка в БД SQLite dnl MYSQL - хранить данные автоматического белого списка в БД MySQL dnl MEMCACHED - хранить данные автоматического белого списка в memcached dnl REDIS - хранить данные автоматического белого списка в redis define(`confAWL', `NO')dnl dnl dnl домены отправителей, на основании писем от которых будет формироваться белый список define(`confAWL_SENDER_DOMAINS', `+local_domains')dnl dnl в ряде случаев (например, для транзитных рилеев, которые одновременно являются смартхостами) dnl можно указывать необходимость формирования белых списков и на основании писем от рилеемых доменов dnl define(`confAWL_SENDER_DOMAINS', `+local_domains : +relay_to_domains')dnl dnl dnl период жизни записи в кеше белого списка (в мин): define(`confAWL_PERIOD', `60*24*2')dnl dnl dnl префикс записей при использовании MEMCACHED и REDIS в качестве dnl значений переменной confAWL: define(`confAWL_RECORD_PREFIX', `awl:')dnl dnl dnl разделитель полей в ключе записи при использовании DBM, MEMCACHED и dnl REDIS в качестве значений переменной confAWL: define(`confAWL_FIELD_DELIMITER', `<@>')dnl dnl dnl при DBM в confAWL: dnl dnl путь к DBM файлу define(`confAWL_DBM_FILE', `confSPOOLDIR/db/awl.dbm')dnl dnl dnl ключ записи в AWL файле такой же, как в access-compat dnl значением записи является время жизни записи dnl dnl при SQLITE в confAWL: dnl dnl путь к SQLITE файлу define(`confAWL_SQLITE_FILE', `confSPOOLDIR/db/awl.db')dnl dnl define(`confAWL_SQLITE_CHECK', `SELECT expires FROM awl WHERE recipient="${quote_sqlite:${lc:$local_part@$domain}}" AND sender="${quote_sqlite:${lc:$sender_address}}" AND expires > $tod_epoch;')dnl define(`confAWL_SQLITE_SELECT', `SELECT expires FROM awl WHERE recipient="${quote_sqlite:${lc:$sender_address}}" AND sender="${quote_sqlite:${lc:$local_part@$domain}}";')dnl define(`confAWL_SQLITE_INSERT', `INSERT INTO awl (recipient, sender, expires) VALUES ("${quote_sqlite:${lc:$sender_address}}", "${quote_sqlite:${lc:$local_part@$domain}}", $tod_epoch+confAWL_PERIOD*60);')dnl define(`confAWL_SQLITE_UPDATE', `UPDATE awl SET expires = $tod_epoch+confAWL_PERIOD*60 WHERE recipient="${quote_sqlite:${lc:$sender_address}}" AND sender="${quote_sqlite:${lc:$local_part@$domain}}";')dnl define(`confAWL_SQLITE_DELETE', `DELETE FROM awl WHERE expires < strftime(\"%s\",\"now\");')dnl dnl dnl при MYSQL в confAWL: dnl define(`confAWL_MYSQL_CHECK', `SELECT UNIX_TIMESTAMP(expires) FROM awl WHERE recipient="${quote_mysql:${lc:$local_part@$domain}}" AND sender="${quote_mysql:${lc:$sender_address}}" AND expires > NOW()')dnl define(`confAWL_MYSQL_SELECT', `SELECT UNIX_TIMESTAMP(expires) FROM awl WHERE recipient="${quote_mysql:${lc:$sender_address}}" AND sender="${quote_mysql:${lc:$local_part@$domain}}"')dnl define(`confAWL_MYSQL_INSERT', `INSERT INTO awl (recipient, sender, expires) VALUES ("${quote_mysql:${lc:$sender_address}}", "${quote_mysql:${lc:$local_part@$domain}}", ADDTIME(NOW(), SEC_TO_TIME(confAWL_PERIOD*60)))')dnl define(`confAWL_MYSQL_UPDATE', `UPDATE awl SET expires = ADDTIME(NOW(), SEC_TO_TIME(confAWL_PERIOD*60)) WHERE recipient="${quote_mysql:${lc:$sender_address}}" AND sender="${quote_mysql:${lc:$local_part@$domain}}"')dnl define(`confAWL_MYSQL_DELETE', `DELETE FROM awl WHERE expires < NOW()')dnl dnl dnl ################################################################## dnl HEADER dnl ################################################################## dnl dnl проверка соответсвия расширения файла аттачмента CLSID'у dnl http://www.exim.org/pipermail/exim-users/Week-of-Mon-20040105/064659.html dnl http://www.geocities.com/floydian_99/invisible.html dnl http://www.exim.org/pipermail/exim-users/Week-of-Mon-20040105/064696.html dnl http://exim.got-there.com/forums/viewtopic.php?t=463 dnl доступно с exiscan-acl-4.30-16 dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_CLSID', `NO')dnl dnl dnl ############################################## dnl dnl проверка имен прикрепленных файлов dnl dnl NO - не проводить проверку имен прикрепленных файлов dnl YES - проводить проверку имен прикрепленных файлов define(`confCHECK_MIME_FILENAME', `NO')dnl dnl dnl список шаблонов имен прикрепленных файлов находится в файле CONFDIR/access-mime-filename dnl в виде: dnl filename : действие : сообщение : сообщение 2 dnl dnl где dnl filename - имя прикрепленного файла в виде полного имени, wildcard dnl или регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl в качестве "действия" могут выступать: dnl ok - исключить имя файла из проверки dnl warn - выдача предупреждения в лог файл и добавление в dnl заголовки сообщения поля X-Warn-Attachment dnl текст сообщения об ошибке может быть указан через dnl двоеточие (см. выше "сообщение2") dnl deny или reject - отказ в приеме сообщения dnl fakereject - фиктивный отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl исключение из проверки имен прикрепленных файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl POSTMASTER_ABUSE - не проводить проверку для postmaster/abuse define(`confCHECK_MIME_FILENAME_SKIP', `AUTH RELAY_FROM POSTMASTER_ABUSE')dnl dnl dnl dnl проверка типов прикрепленных файлов (используетя как расширение проверки имен прикрепленных файлов) dnl dnl NO - не проводить проверку типов прикрепленных файлов dnl YES - проводить проверку типов прикрепленных файлов define(`confCHECK_MIME_CONTENT_TYPE', `NO')dnl dnl dnl список шаблонов типов прикрепленных файлов находится в файле CONFDIR/access-mime-content-type dnl в виде: dnl content-type : действие : сообщение : сообщение 2 dnl dnl где dnl content-type - тип прикрепленного файла в виде полного значения, wildcard dnl или регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl в качестве "действия" могут выступать: dnl ok - исключить имя файла из проверки dnl warn - выдача предупреждения в лог файл и добавление в dnl заголовки сообщения поля X-Warn-Attachment dnl текст сообщения об ошибке может быть указан через dnl двоеточие (см. выше "сообщение2") dnl deny или reject - отказ в приеме сообщения dnl fakereject - фиктивный отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl исключение из проверки типов прикрепленных файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl POSTMASTER_ABUSE - не проводить проверку для postmaster/abuse define(`confCHECK_MIME_CONTENT_TYPE_SKIP', `AUTH RELAY_FROM POSTMASTER_ABUSE')dnl dnl dnl dnl максимальный размер проверяемого архива, kB define(`confCHECK_MIME_FILENAME_MAX_ARC_SIZE', `2048')dnl dnl dnl dnl проверять имена файлов внутри 7z архивов dnl NO - не проводить проверку имен файлов внутри 7z архивов dnl YES - проводить проверку имен файлов внутри 7z архивов define(`confCHECK_MIME_FILENAME_7Z', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_7Z_EXT', `7z')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов 7z архива dnl define(`confCHECK_MIME_FILENAME_UN7Z_CMD', `/usr/local/bin/7z l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов 7z архива define(`confCHECK_MIME_FILENAME_UN7Z_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "------------------- ----- ------------ ------------ ------------------------" dnl и dnl "------------------- ----- ------------ ------------ ------------------------" dnl dnl dnl проверять имена файлов внутри zip архивов dnl NO - не проводить проверку имен файлов внутри zip архивов dnl YES - проводить проверку имен файлов внутри zip архивов define(`confCHECK_MIME_FILENAME_ZIP', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_ZIP_EXT', `(zip|z)')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE', `')dnl dnl define(`confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE', `application/(octet-stream|zip|x-zip-compressed)')dnl dnl dnl командная строка для получения списка файлов zip архива dnl define(`confCHECK_MIME_FILENAME_UNZIP_CMD', `/usr/local/bin/unzip -l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов zip архива define(`confCHECK_MIME_FILENAME_UNZIP_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "--------- ---------- ----- ----" dnl и dnl "--------- ---------- ----- ----" dnl dnl dnl проверять имена файлов внутри rar архивов dnl NO - не проводить проверку имен файлов внутри rar архивов dnl YES - проводить проверку имен файлов внутри rar архивов define(`confCHECK_MIME_FILENAME_RAR', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_RAR_EXT', `rar')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE', `')dnl dnl define(`confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE', `application/(octet-stream|rar|x-rar-compressed)')dnl dnl dnl командная строка для получения списка файлов rar архива dnl define(`confCHECK_MIME_FILENAME_UNRAR_CMD', `/usr/local/bin/unrar l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов rar архива define(`confCHECK_MIME_FILENAME_UNRAR_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "----------- --------- ---------- ----- ----" dnl и dnl "----------- --------- ---------- ----- ----" dnl dnl dnl проверять имена файлов внутри arj архивов dnl NO - не проводить проверку имен файлов внутри arj архивов dnl YES - проводить проверку имен файлов внутри arj архивов define(`confCHECK_MIME_FILENAME_ARJ', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_ARJ_EXT', `arj')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов arj архива dnl define(`confCHECK_MIME_FILENAME_UNARJ_CMD', `/usr/local/bin/unarj l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов arj архива define(`confCHECK_MIME_FILENAME_UNARJ_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "------------ ---------- ---------- ----- ----------------- -------- -----------" dnl и dnl "------------ ---------- ---------- ----- -----------------" dnl dnl dnl проверять имена файлов внутри ace архивов dnl NO - не проводить проверку имен файлов внутри ace архивов dnl YES - проводить проверку имен файлов внутри ace архивов define(`confCHECK_MIME_FILENAME_ACE', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_ACE_EXT', `ace')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов ace архива dnl define(`confCHECK_MIME_FILENAME_UNACE_CMD', `/usr/local/bin/unace l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов ace архива define(`confCHECK_MIME_FILENAME_UNACE_REGEXP', `\N(?:.*\n)*(?:Date.+File\n)((?:.*\n)*)(?:listed: .+\)\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "Date #Time #Packed #Size #Ratio#File" dnl и dnl "listed: 1 files, totaling 31.619 bytes (compressed 11.996)" dnl dnl dnl проверять имена файлов внутри gz архивов dnl NO - не проводить проверку имен файлов внутри gz архивов dnl YES - проводить проверку имен файлов внутри gz архивов define(`confCHECK_MIME_FILENAME_GZ', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_GZ_EXT', `gz')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов gz архива dnl define(`confCHECK_MIME_FILENAME_UNGZ_CMD', `/usr/bin/file')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов gz архива dnl define(`confCHECK_MIME_FILENAME_UNGZ_REGEXP', `\N^(?:.+gzip compressed data, was ")(.+)(?:", last modified:.+)\N')dnl dnl данное регулярное выражение сохраняет в $1 имя файла, находящееся между dnl "xxx.gz: gzip compressed data, was "" dnl и dnl "", last modified: Thu Mar 10 14:27:21 2016, max speed, from FAT filesystem (MS-DOS, OS/2, NT)" dnl dnl dnl проверять имена файлов внутри tar.gz (tgz) архивов dnl NO - не проводить проверку имен файлов внутри tar.gz (tgz) архивов dnl YES - проводить проверку имен файлов внутри tar.gz (tgz) архивов define(`confCHECK_MIME_FILENAME_TGZ', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_TGZ_EXT', `(tgz|tar\.gz)')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов tar.gz (tgz) архива dnl define(`confCHECK_MIME_FILENAME_UNTGZ_CMD', `/usr/bin/tar tzf')dnl dnl dnl dnl проверять имена файлов внутри tar.bz2 (tbz2) архивов dnl NO - не проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов dnl YES - проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов define(`confCHECK_MIME_FILENAME_TBZ2', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_TBZ2_EXT', `(tbz2|tar\.bz2)')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов tar.bz2 (tbz2) архива dnl define(`confCHECK_MIME_FILENAME_UNTBZ2_CMD', `/usr/bin/tar tyf')dnl dnl dnl dnl проверять имена файлов внутри tar.xz (txz) архивов dnl NO - не проводить проверку имен файлов внутри tar.xz (txz) архивов dnl YES - проводить проверку имен файлов внутри tar.xz (txz) архивов define(`confCHECK_MIME_FILENAME_TXZ', `NO')dnl dnl dnl список расширений файлов define(`confCHECK_MIME_FILENAME_TXZ_EXT', `(txz|tar\.xz)')dnl dnl dnl список типов файлов define(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов tar.xz (txz) архива dnl define(`confCHECK_MIME_FILENAME_UNTXZ_CMD', `/usr/bin/tar tJf')dnl dnl dnl dnl по регулярным выражениям из CONFDIR/access-mime-filename будет dnl проверяться сразу весь список файлов архива с суффиксом в виде dnl разделителя "|" и расширения имени файла архива dnl dnl пример регулярного выражения для проверки имен файлов внутри архивов: dnl \N^(?i)(.+\n)*.+\.(ade|adp|bas|bat|btm|cab|chm|cmd|com|cpl|dat|dll|exe|hlp|hta|inf|ins|isp|js|jse|jsp|lnk|mdb|mde|msc|msi|msp|mst|ocx|pcd|pif|prf|reg|scr|shs|sys|url|vb|vbe|vbs|wsc|wsf|wsh|wsp)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn deny : Attachment with suspicious extension found in archive ($mime_filename) dnl dnl пример регулярного выражения для проверки наличия архивов внутри других архивов: dnl \N^(?i)(.+\n)*.+\.(rar|zip|7z|tgz|tbz2|txz)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn : Archive found in archive ($mime_filename) dnl dnl ############################################## dnl dnl проверка расширений прикрепленных файлов (устарело, см. confCHECK_MIME_FILENAME) dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx dnl FAKEREJECT - возврата клиенту кода 5xx с одновременной доставкой сообщения define(`confCHECK_FILE_EXT', `NO')dnl dnl dnl список блокируемых расширений файлов (список, значения указываются через двоеточие) define(`confCHECK_FILE_EXT_LIST', `com:exe:bat:cmd:wsh:wsf:wsp:lnk:scr:pif:js:jse:vbs:vbe:hta:dll:hlp:chm:shs:cpl')dnl dnl define(`confCHECK_FILE_EXT_LIST', `exe:com:bat:cmd:vbs:pl:bas:js:java:reg:shs:pif:scr:dll:ssh:chm:hlp:lnk:html:htm:shtml:shtm')dnl dnl define(`confCHECK_FILE_EXT_LIST', `com:exe:bat:cmd:wsh:wsf:wsp:lnk:scr:pif:js :jse:vbs:vbe:hta:dll:hlp:chm:shs:cpl:vba:btm:msi:msc:css:sct:bas:msp:mst:pcd :url:ins:isp:vb:wsc:shb') dnl dnl исключение из проверки расширений файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl WHITE_LIST_SENDERS - не проводить проверку для сообщений из white_list_senders define(`confCHECK_FILE_EXT_SKIP', `AUTH RELAY_FROM WHITE_LIST_RELAYS')dnl dnl dnl при использовании WARN или FAKEREJECT можно в системном фильтре блокировать доставку сообщений dnl и при этом сохранять их в отдельном каталоге dnl dnl ############################################## dnl dnl проверка двойных расширений прикрепленных файлов (устарело, см. confCHECK_MIME_FILENAME) dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx dnl FAKEREJECT - возврата клиенту кода 5xx с одновременной доставкой сообщения define(`confCHECK_DOUBLE_EXT', `NO')dnl dnl dnl список блокируемых расширений файлов (список, значения указываются через двоеточие) dnl define(`confCHECK_FILE_EXT_LIST', `com:exe:bat:cmd:lnk:scr:pif:vbs:js:dll:hlp:chm:shs')dnl dnl define(`confCHECK_FILE_EXT_LIST', `exe:com:bat:cmd:vbs:pl:bas:js:java:reg:shs:pif:scr:dll:ssh:chm:hlp:lnk:html:htm:shtml:shtm')dnl dnl dnl исключение из проверки расширений файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl WHITE_LIST_SENDERS - не проводить проверку для сообщений из white_list_senders dnl ACCESS_FILENAMES - исключать из проверки имена файлов, перечисленные в CONFDIR/access-double-ext define(`confCHECK_DOUBLE_EXT_SKIP', `AUTH RELAY_FROM')dnl dnl dnl при использовании WARN или FAKEREJECT можно в системном фильтре блокировать доставку сообщений dnl и при этом сохранять их в отдельном каталоге dnl dnl ############################################## dnl dnl проверка boundary в multipart собщениях dnl доступно с exiscan-acl-4.30-16 dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx dnl EMPTY - проверка на существование boundary dnl LONG - проверка длины boundary dnl допустимые комбинации: dnl `NO' dnl `WARN EMPTY' dnl `WARN LONG' dnl `WARN EMPTY LONG' dnl `REJECT EMPTY' dnl `REJECT LONG' dnl `REJECT EMPTY LONG' define(`confCHECK_BOUNDARY', `NO')dnl dnl максимальная длина boundary define(`confCHECK_BOUNDARY_MAX_LENGTH', `70')dnl dnl dnl ############################################## dnl dnl использовать механизм определения страны по IP адресу dnl NO - не использовать механизм определения страны по IP адресу dnl YES - использовать механизм определения страны по IP адресу define(`confIP2COUNTRY', `NO')dnl dnl dnl при использовании фильтрации писем по стране хоста отправителя dnl (переменная confCHECK_ACCESS_RELAY_COUNTRY), комбинации страны хоста dnl отправителя и адресов отправителя и получателя (переменная dnl confCHECK_ACCESS_COMPAT_RELAY_COUNTRY), а также при указании в dnl заголовках письма информации о странах, через которые прошло письмо dnl (перемення confRELAY_COUNTRIES) значение confIP2COUNTRY автоматически dnl устанавливается равным 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 WIP-API - определение страны по WIPMANIA API (http://www.wipmania.com/ru/api/) dnl PTRTLD - определение страны по IP адресу с на основании TLD из PTR записи define(`confIP2COUNTRY_BACKEND', `DNSBL PTRTLD')dnl dnl в качестве значения confIP2COUNTRY_BACKEND можно указывать несколько механизмов dnl dnl ############################################## dnl dnl указание в заголовках письма информации о странах, через которые прошло письмо dnl изначально код был основан на примерах Mike Cardwell, но потом был существенно переработан dnl http://www.exim.org/mail-archives/exim-users/Week-of-Mon-20070212/msg00116.html dnl dnl NO - не вставлять в заголовки письма информации о странах, через которые прошло письмо dnl YES - вставлять в заголовки письма информации о странах, через которые прошло письмо define(`confRELAY_COUNTRIES', `NO')dnl dnl dnl механизм определения страны по IP адресу можно указать в переменной confIP2COUNTRY_BACKEND dnl dnl ############################################## dnl dnl добавление поля Date dnl по умолчанию начиная с версии 4.30 поле Date добавляется только в локально dnl полученные сообщения (не по SMTP) dnl NO - ну добавлять поле Date dnl YES - добавлять поле Date во все сообщения dnl ALL - добавлять поле Date во все сообщения dnl RELAY - добавлять поле Date во все сообщения из рилеемых сетей dnl AUTH - добавлять поле Date во все сообщения от аутентифицированных отправителей define(`confDATE_HEADER_ADD', `ALL')dnl dnl dnl ############################################## dnl dnl добавление поля Message-Id dnl по умолчанию начиная с версии 4.30 поле Message-Id добавляется только в локально dnl полученные сообщения (не по SMTP) dnl NO - ну добавлять поле Message-Id dnl YES - добавлять поле Message-Id во все сообщения dnl ALL - добавлять поле Message-Id во все сообщения dnl RELAY - добавлять поле Message-Id во все сообщения из рилеемых сетей dnl AUTH - добавлять поле Message-Id во все сообщения от аутентифицированных отправителей define(`confMESSAGE_ID_HEADER_ADD', `RELAY AUTH')dnl dnl доменная часть поля Message-Id dnl по умолчанию используется $primary_hostname define(`confMESSAGE_ID_HEADER_DOMAIN', `')dnl dnl dnl ############################################## dnl dnl проверка поля Message-Id dnl NO - не проводить проверку dnl EMPTY:WARN - вывода в лог файл предупреждения dnl при пустом Message-Id dnl EMPTY:REJECT - возврата клиенту кода 5xx dnl при пустом Message-Id dnl EMPTY:SUBMIT_GREYLIST=XX - занесение хоста в greylist на XX минут dnl при пустом Message-Id dnl EMPTY:GREYLIST=XX - синоним для EMPTY:SUBMIT_GREYLIST=XX dnl EMPTY:SUBMIT_MYSQL=XX - занесение хоста в базу MySQL на XX минут dnl при пустом Message-Id dnl (доступно в enterprise версии) dnl EMPTY:SUBMIT_SQLITE=XX - занесение хоста в базу SQLite на XX минут dnl при пустом Message-Id dnl (доступно в enterprise версии) dnl EMPTY:SUBMIT_RBL=XX - занесение хоста в RBL на XX минут dnl при пустом Message-Id dnl (доступно в enterprise версии) dnl OWN:WARN - вывода в лог файл предупреждения, dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl OWN:REJECT - возврата клиенту кода 5xx, dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl OWN:SUBMIT_GREYLIST=XX - занесение хоста в greylist на XX минут dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl OWN:GREYLIST=XX - синоним для OWN:SUBMIT_GREYLIST=XX dnl OWN:SUBMIT_MYSQL=XX - занесение хоста в базу MySQL на XX минут dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl (доступно в enterprise версии) dnl OWN:SUBMIT_SQLITE=XX - занесение хоста в базу SQLite на XX минут dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl (доступно в enterprise версии) dnl OWN:SUBMIT_RBL=XX - занесение хоста в RBL на XX минут dnl если Message-Id содержит $qualify_domain dnl или message_id_header_domain dnl (доступно в enterprise версии) dnl LOCAL:WARN - вывода в лог файл предупреждения, dnl если Message-Id содержит локальный домен dnl LOCAL:REJECT - возврата клиенту кода 5xx, dnl если Message-Id содержит локальный домен dnl LOCAL:SUBMIT_GREYLIST=XX - занесение хоста в greylist на XX минут dnl если Message-Id содержит локальный домен dnl LOCAL:GREYLIST=XX - синоним для LOCAL:SUBMIT_GREYLIST=XX dnl LOCAL:SUBMIT_MYSQL=XX - занесение хоста в базу MySQL на XX минут dnl если Message-Id содержит локальный домен dnl (доступно в enterprise версии) dnl LOCAL:SUBMIT_SQLITE=XX - занесение хоста в базу SQLite на XX минут dnl если Message-Id содержит локальный домен dnl (доступно в enterprise версии) dnl LOCAL:SUBMIT_RBL=XX - занесение хоста в RBL на XX минут dnl если Message-Id содержит локальный домен dnl (доступно в enterprise версии) dnl define(`confCHECK_MESSAGE_ID', `WARN')dnl dnl dnl время жизни записи в сером списке может отсутствовать dnl dnl значение GREYLIST может использоваться одновременно с WARN или REJECT, dnl резделяя их точкой с запятой: dnl EMPTY:WARN;GREYLIST=10080 dnl dnl несколько значений могут быть указаны через пробел dnl define(`confCHECK_MESSAGE_ID', `EMPTY:REJECT OWN:REJECT LOCAL:WARN')dnl dnl dnl значение `WARN' приравнивается к dnl `EMPTY:WARN OWN:WARN LOCAL:WARN' dnl значение `REJECT' приравнивается к dnl `EMPTY:REJECT OWN:REJECT LOCAL:REJECT' dnl dnl ################################################################## dnl TRANSPORTS dnl ################################################################## dnl dnl списки хостов и сетей, указываемых в параметре ignore_target_hosts роутера dnslookup dnl в будущем DNSLOOKUP_IGNORE_TARGET_HOSTS будет упразднен в пользу confDNSLOOKUP_IGNORE_TARGET_HOSTS define(`DNSLOOKUP_IGNORE_TARGET_HOSTS', `') dnl dnl в значении параметра ignore_target_hosts также перечисляются сети из +private_networks и dnl исключаются сети и хосты из +relay_from_hosts dnl таким образом с помощью DNSLOOKUP_IGNORE_TARGET_HOSTS можно не только пополнять список dnl игнорируемых хостов, но и делать для него исключения: dnl define(`DNSLOOKUP_IGNORE_TARGET_HOSTS', `\ dnl : !10.0.0.0/24 \ dnl : !10.1.0.0/16 \ dnl ')dnl dnl define(`confDNSLOOKUP_IGNORE_TARGET_HOSTS', `0.0.0.0 DNSLOOKUP_IGNORE_TARGET_HOSTS : !+relay_from_hosts : +private_networks')dnl dnl dnl использовать расширенный список серых и неделегируемых сетей при формировании значения +private_networks: dnl NO - не использовать расширенный список серых и неделегируемых сетей dnl YES - использовать расширенный список серых и неделегируемых сетей define(`confPRIVATE_NETWORKS_EXTENDED', `NO') dnl при использовании значения NO в private_networks войдут лишь сети 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16 dnl при использовании значения YES в private_networks войдут сети, взятые из слудеющего источника: dnl http://www.cymru.com/Documents/secure-bind-template.html dnl dnl dnl использование отдельного dnslookup6 роутера для отсылки писем по IPv6 с отдельными ограничениями dnl NO не использовать отдельный dnslookup6 роутера для отсылки писем по IPv6 dnl YES использовать отдельный dnslookup6 роутера для отсылки писем по IPv6 define(`confDNSLOOKUP6_ENABLE', `NO')dnl dnl dnl списки хостов и сетей, указываемых в параметре ignore_target_hosts роутера dnslookup6 define(`confDNSLOOKUP6_IGNORE_TARGET_HOSTS', `<; 0.0.0.0/0 ; !+relay_from_hosts ; +private_networks6')dnl dnl с помощью DNSLOOKUP6_IGNORE_TARGET_HOSTS можно не только пополнять список dnl игнорируемых хостов, но и делать для него исключения: dnl define(`confDNSLOOKUP6_IGNORE_TARGET_HOSTS', `<; 0.0.0.0/0 ; ::1 ; fc00::/16 ; !+relay_from_hosts ; +private_networks6')dnl dnl dnl использовать расширенный список серых и неделегируемых сетей при формировании значения +private_networks: dnl NO - не использовать расширенный список серых и неделегируемых сетей dnl YES - использовать расширенный список серых и неделегируемых сетей define(`confPRIVATE_NETWORKS6_EXTENDED', `NO') dnl при использовании значения NO в private_networks6 войдут лишь сети dnl 2001:db8::/32;fc00::/7;fd00::/7;fe80::/10;fec0::/10 dnl (см. https://ru.wikipedia.org/wiki/IPv6 и https://www.freebsd.org/doc/handbook/network-ipv6.html) dnl при использовании значения YES в private_networks войдут сети из файла CONFDIR/hosts6-private dnl dnl dnl ################################################################## dnl BODY dnl ################################################################## dnl dnl при помещении вирусов в карантин (значение `WARN' для вышеописанных опций) сохранять ли dnl зараженные сообщения в резервных копиях писем: dnl NO - не создавать резервные копии зараженных сообщений dnl YES - создавать резервные копии зараженных сообщений define(`confANTIVIRUS_SAVE_BACKUP', `NO')dnl dnl dnl ############################################## dnl dnl использование фильтрации по содержимому писем dnl NO - не использовать фильтрацию dnl SPAMASSASSIN - использовать SPAMASSASSIN (встроенная в exim интеграция через EXISCAN) dnl SPAMD - использовать SPAMASSASSIN (интеграция через dlfunc) dnl DSPAM - использовать DSPAM (интеграция через dlfunc) dnl KAS3 - использовать Kaspersky Anti-Spam 3.x (интеграция через dlfunc) dnl SO2 - использовать Spamooborona 2.x (интеграция через dlfunc) dnl DCC - использовать Distributed Checksum Clearinghouses dnl RSPAMD - использовать RSPAMD (интеграция через dlfunc) define(`confCONTENT_SCANNING', `NO')dnl dnl dnl исключения из проверки (список) dnl NO - не делать исключений из проверки dnl AUTH - не проводить проверку аутентифицированных отправителей dnl RELAY_FROM - не проводить проверку исходящих сообщений define(`confCONTENT_SCANNING_SKIP', `AUTH RELAY_FROM')dnl dnl dnl ограничение размера проверяемых сообщений dnl NO - не ограничивать размер проверяемых сообщений dnl размер - указать максимальный размер проверяемых сообщений define(`confCONTENT_SCANNING_MAX_MSG_SIZE', `256k')dnl dnl dnl типа карантина dnl SYSTEM - использовать общесистемный каратин dnl PERSONAL - использовать персональные карантины define(`confCONTENT_SCANNING_QUARANTINE', `SYSTEM')dnl dnl dnl папка для доставки писем в персональные карантины define(`confCONTENT_SCANNING_PERSONAL_QUARANTINE_FOLDER', `.spam')dnl dnl dnl командная строка для запуска LDA при доставке письма в персональный карантин: define(`confVIRT_MDIR_PIPE_PERSONAL_QUARANTINE', `/usr/local/libexec/dovecot/deliver -d $local_part@$domain -m spam')dnl dnl dnl игнорирование доставки с помощью procmail писем, предназначенных для доставки в персональный карантин define(`confVIRT_MDIR_PROCMAIL_IGNORE_PERSONAL_QUARANTINE', `YES') dnl dnl игнорирование доставки с помощью пользовательских фильтров exim писем, предназначенных для доставки в персональный карантин define(`confVIRT_MDIR_FILTERS_IGNORE_PERSONAL_QUARANTINE', `YES') dnl dnl доставка в персональные карантины отвергнутых писем define(`confCONTENT_SCANNING_PERSONAL_QUARANTINE_REJECTED_MESSAGES', `YES') dnl dnl доставка в общесистемный карантин отвергнутых писем, адресованных получателям из рилеемых доменов, при использовании персональных карантинов для получателей из локальных доменов define(`confCONTENT_SCANNING_QUARANTINE_RELAYED_REJECTED_MESSAGES', `YES') dnl dnl имя хоста, используемое в полях заголовков, добавляемых на основании dnl результатов работы контент сканеров и антивирусов dnl define(`confCONTENT_SCANNING_HOSTNAME', `$primary_hostname')dnl define(`confCONTENT_SCANNING_HOSTNAME', `$smtp_active_hostname')dnl dnl dnl ############################################## dnl dnl ВНИМАНИЕ!!! dnl при использовании интеграции с SpamAssassin необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl величина score, при которой производится действие confSPAMASSASSIN_ACTION вместо пометки сообщения define(`confSPAMASSASSIN_ACTION_SCORE', `10')dnl dnl dnl команда получения названия и версии демона spamassassin define(`confSPAMASSASSIN_NAME_VERSION', `spamd -V 2>/dev/null | head -n 1 | perl -p -e "chomp"') define(`confSPAMASSASSIN_NAME_VERSION_DEFAULT', `SpamAssassin Server') dnl dnl параметры подключения к spamd define(`confSPAMASSASSIN_SPAMD_ADDRESS', `127.0.0.1 783') dnl dnl пользователь по умолчанию, от имени которого будут выполняться dnl запросы к spamd define(`confSPAMASSASSIN_USER', `spamd')dnl dnl dnl имя файла, в котором указаны пользователи, от имени которых будут dnl выполняться запросы к spamd, в зависимости от адреса получателя dnl NO - не использовать файл с именами пользователей для dnl запросов к spamd dnl YES - использовать файл sa-users с именами пользователей dnl для запросов к spamd dnl имя_файла - использовать альтернативный файл с именами dnl пользователей для запросов к spamd define(`confSPAMASSASSIN_USERS_FILE', `NO')dnl dnl dnl пример: dnl define(`confSPAMASSASSIN_USERS_FILE', `CONFDIR/sa-users')dnl dnl dnl в файле допустимы шаблоны. имя получателя без домена указывается в dnl виде %1 dnl dnl пользователи в файле указываются в виде: dnl recipient@address : nospam dnl recipient@domain.tld : spamd2 dnl *@another-domain.tld : spamd_user_%1 dnl * : spamd dnl dnl если в письме несколько получателей и для них будут указаны разные dnl пользователи, то будет использовано значение confSPAMASSASSIN_USER dnl dnl действие в случае отсутствия ответа от spamd либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confSPAMASSASSIN_DEFER_OK', `YES') dnl dnl действие для писем, набравших confSPAMASSASSIN_ACTION_SCORE баллов dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl SUBMIT_GREYLIST_SPAM_CERTAINLY=XX - занесение хоста в greylist_relays на XX минут, dnl если письмо идентифицировано как certainly-spam dnl (только в enterprise версии) dnl SUBMIT_GREYLIST_SPAM_CUSTOM=XX - занесение хоста в greylist_relays на XX минут, dnl если письмо идентифицировано как шаблонное спамовое письмо dnl (только в enterprise версии) dnl SUBMIT_GREYLIST_SPAM_RAZOR=XX - занесение хоста в greylist_relays на XX минут, dnl если письмо залистено в razor dnl (только в enterprise версии) dnl SUBMIT_MYSQL_SPAM_CERTAINLY - внесение в базу MySQL информации о certainly-spam письме dnl (только в enterprise версии) dnl SUBMIT_MYSQL_SPAM_CUSTOM - внесение в базу MySQL информации о шаблонном письме dnl (только в enterprise версии) dnl SUBMIT_MYSQL_SPAM_RAZOR - внесение в базу MySQL информации о залистинном в razor письме dnl (только в enterprise версии) dnl SUBMIT_SQLITE_SPAM_CERTAINLY - внесение в базу SQLITE информации о certainly-spam письме dnl (только в enterprise версии) dnl SUBMIT_SQLITE_SPAM_CUSTOM - внесение в базу SQLITE информации о шаблонном письме dnl (только в enterprise версии) dnl SUBMIT_SQLITE_SPAM_RAZOR - внесение в базу SQLITE информации о залистинном в razor письме dnl (только в enterprise версии) define(`confSPAMASSASSIN_ACTION', `REJECT QUARANTINE')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT, DROP и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl действия SUBMIT_* могут использоваться вместе с REJECT, DROP и DISCARD dnl dnl значение по умолчанию времени жизни записи о хосте в кеше greylisting'а в минутах define(`confSPAMASSASSIN_GREYLIST_PERIOD', `eval(24*60)')dnl dnl dnl месторасположение общесистемного каратнина: dnl сохранение всех писем в одном каталоге в простых текстовых файлах: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `/usr/local/mail/sa/${tod_zulu}-${message_id}')dnl dnl сохранение всех писем в подкаталогах одного каталога в простых текстовых файлах, имя подкаталога состоит из даты: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `/usr/local/mail/sa/${substr_1_8:${tod_zulu}}/${tod_zulu}-${message_id}')dnl dnl сохранение в mailbox'е: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `/var/mail/sa-quarantine')dnl dnl сохранение в mailbox'е в зависимости от текущей даты: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `/var/mail/sa-quarantine-${substr_1_8:${tod_zulu}}')dnl dnl доставка в maildir: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `confVIRT_MDIR_ROOT/domain.tld/admin/spam-quarantine/')dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `confVIRT_MDIR_ROOT/localhost/admin/.spam.certainly-spam/')dnl dnl dnl месторасположение каратнина для писем, не получивших максимальную dnl оценку bayes фильтра: dnl define(`confSPAMASSASSIN_QUARANTINE_DIR_LEARN', `/usr/local/mail/sa-learn/${tod_zulu}-${message_id}')dnl dnl define(`confSPAMASSASSIN_QUARANTINE_DIR_LEARN', `confVIRT_MDIR_ROOT/localhost/admin/.spam.certainly-spam-learn/')dnl dnl правила формирования confSPAMASSASSIN_QUARANTINE_DIR_LEARN такие же, dnl как и для confSPAMASSASSIN_QUARANTINE_DIR dnl dnl действие для старых заголовков (X-Spam-Status, X-Spam-Flag, X-Spam-Score, X-Spam-Report) dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confSPAMASSASSIN_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки spamassassin define(`confSPAMASSASSIN_HEADERS', `X-Spam-Checker-Version:X-Spam-Info:X-Spam-Score:X-Spam-Status:X-Spam-Report:X-Spam-Flag:X-Spam-Level:X-Spam-Action:X-Spam-Original-Recipients')dnl define(`confSPAMASSASSIN_HEADERS', confSPAMASSASSIN_HEADERS`:X-Spam-DSPAM-Result:X-Spam-DSPAM-Processed:X-Spam-DSPAM-Confidence:X-Spam-DSPAM-Improbability:X-Spam-DSPAM-Probability:X-Spam-DSPAM-Signature:X-Spam-DSPAM-Factors')dnl dnl dnl имя файла, в котором указаны индивидуальные баллы для пометки и отвержения сообщений dnl в зависимости от адреса получателя dnl NO - не использовать индивидуальные баллы dnl имя_файла - имя файла с индивидуальных баллов define(`confSPAMASSASSIN_SCORE_FILE', `NO')dnl dnl dnl пример: dnl define(`confSPAMASSASSIN_SCORE_FILE', `CONFDIR/sa-scores')dnl dnl dnl баллы в файле указываются в виде: dnl recipient@address : балл_для_пометки : балл_для_отказа_в_приеме_письма dnl dnl в адресах допустимы шаблоны dnl баллы должны быть целыми числами dnl в качестве балла для пометки можно использовать символ "*" (звездочку) dnl в этом случае сообщение будет помечено как спам, если оно наберет количество dnl баллов, указанное в настройках SpamAssassin dnl в качестве балла для отвержения можно использовать символ "*" (звездочку) dnl в этом случае сообщение будет отвергнуто, если наберет confSPAMASSASSIN_ACTION_SCORE баллов dnl dnl пример: dnl vasya@pupkin.org : * : 10 dnl *@pupkin.org : 7 : 15 dnl *@local.domain : * : * dnl * : 6 : 10 dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl ############################################## dnl dnl ВНИМАНИЕ!!! dnl при использовании интеграции с DSPAM необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl команда получения названия и версии демона spamassassin dnl define(`confDSPAM_NAME_VERSION', `echo quit | nc localhost 24 | head -n 1 | grep -i dspam | perl -p -e "s/^\d+\s+//;s/\s*ready\s*//i"') dnl define(`confDSPAM_NAME_VERSION', `echo quit | socat -v STDIN GOPEN:/var/run/dspam.sock 2>&1 | grep -i dspam | perl -p -e "s/^< \d+\s+//;s/\s*ready.+//i"') define(`confDSPAM_NAME_VERSION_DEFAULT', `DSPAM Server') dnl dnl параметры подключения к DSPAM define(`confDSPAM_ADDRESS', `127.0.0.1 24') dnl define(`confDSPAM_ADDRESS', `/var/run/dspam.sock') define(`confDSPAM_IDENT', `ident@localhost') dnl dnl пользователь, от имени которого выполняются запросы к dspam define(`confDSPAM_USER', `mailnull')dnl dnl dnl действие в случае отсутствия ответа от dspam либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confDSPAM_DEFER_OK', `YES') dnl dnl действие для писем, опознанных как SPAM dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение зараженного письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) define(`confDSPAM_ACTION', `NO')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl dnl значение по умолчанию времени жизни записи о хосте в кеше greylisting'а в минутах define(`confDSPAM_GREYLIST_PERIOD', `eval(24*60)')dnl dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl действие для старых заголовков dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confDSPAM_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки DSPAM define(`confDSPAM_HEADERS', `:X-DSPAM-Info:X-DSPAM-Version:X-Daemon-Classification:X-DSPAM-Result:X-DSPAM-Processed:X-DSPAM-Confidence:X-DSPAM-Improbability:X-DSPAM-Probability:X-DSPAM-Signature:X-DSPAM-Factors') dnl dnl ############################################## dnl dnl Поддержка Kaspersky Anti-Spam 3.x dnl dnl ВНИМАНИЕ!!! dnl при использовании интеграции с kas3 необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl команда получения названия и версии демона KAS3 dnl define(`confKAS3_NAME_VERSION', `rpm -q kas-3 | perl -p -e "s/\n//"') dnl define(`confKAS3_NAME_VERSION', `rpm -q kas-3 | perl -p -e "s/kas-3-/SMTP-Filter Version /;s/\.(\d+)-\d+$/ \[\$1\]/;s/\n//"') dnl define(`confKAS3_NAME_VERSION', `pkg_info -I kas\* | perl -p -e "s/\s+.+\n//"') dnl define(`confKAS3_NAME_VERSION', `pkg_info -I kas\* | perl -p -e "s/\s+.+//;s/kas-3-/SMTP-Filter Version /;s/\.(\d+)$/ \[\$1\]/;s/\n//"') define(`confKAS3_NAME_VERSION_DEFAULT', `SMTP-Filter Version 3') dnl dnl параметры подключения к KAS3 define(`confKAS3_ADDRESS', `tcp:127.0.0.1:2277') dnl dnl действие в случае отсутствия ответа от KAS3 либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confKAS3_DEFER_OK', `YES') dnl dnl действие для писем, опознанных как SPAM dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) define(`confKAS3_ACTION', `NO')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl действие для старых заголовков dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confKAS3_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки KAS3 define(`confKAS3_HEADERS', `:X-SpamTest-Categories:X-SpamTest-Envelope-From:X-SpamTest-Group-ID:X-SpamTest-Info:X-SpamTest-Info:X-SpamTest-Info:X-SpamTest-Method:X-SpamTest-Rate:X-SpamTest-SPF:X-SpamTest-Status:X-SpamTest-Status-Extended:X-SpamTest-Version') dnl dnl ############################################## dnl dnl Поддержка Spamooborona 2.x dnl dnl ВНИМАНИЕ!!! dnl при использовании интеграции с spamooborona2 необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl команда получения названия и версии демона SO2 dnl define(`confSO2_NAME_VERSION', `rpm -q spamooborona_daemon | perl -p -e "s/\n//"') dnl define(`confSO2_NAME_VERSION', `rpm -q spamooborona_daemon | perl -p -e "s/\w+(_\w)?-/Spamoborona /;s/\n//"') dnl define(`confSO2_NAME_VERSION', `pkg_info -I spamooborona_daemon\* | perl -p -e "s/\s+.+\n//"') dnl define(`confSO2_NAME_VERSION', `pkg_info -I spamooborona_daemon\* | perl -p -e "s/\s+.+//;s/\w+(_\w)?-/Spamoborona /;s/\n//"') define(`confSO2_NAME_VERSION_DEFAULT', `Spamoborona 2') dnl dnl параметры подключения к SO2 dnl define(`confSO2_ADDRESS', `127.0.0.1 2525') define(`confSO2_ADDRESS', `/var/run/sp-daemon.sock') dnl dnl действие в случае отсутствия ответа от SO2 либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confSO2_DEFER_OK', `YES') dnl dnl действие для писем, опознанных как SPAM dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) define(`confSO2_ACTION', `NO')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl dnl значение по умолчанию времени жизни записи о хосте в кеше greylisting'а в минутах define(`confSO2_GREYLIST_PERIOD', `eval(24*60)')dnl dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl действие для старых заголовков dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confSO2_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки SO2 define(`confSO2_HEADERS', `:X-Spam-Yversion:X-SO-Flag:X-Spam-Ystatus') dnl dnl ############################################## dnl dnl Поддержка Distributed Checksum Clearinghouses dnl dnl ВНИМАНИЕ!!! dnl при использовании dcc необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl команда получения названия и версии демона DCC dnl define(`confDCC_NAME_VERSION', `rpm -q dcc | perl -p -e "s/\n//"') dnl define(`confDCC_NAME_VERSION', `pkg_info -I dcc\* | perl -p -e "s/\s+.+\n//"') define(`confDCC_NAME_VERSION_DEFAULT', `Distributed Checksum Clearinghouses Interface Daemon') dnl dnl параметры подключения к DCC Interface Daemon dnl define(`confDCC_ADDRESS', `127.0.0.1 55744') dnl define(`confDCC_ADDRESS', `/usr/local/dcc/dccifd') define(`confDCC_ADDRESS', `/usr/local/dcc/dccifd') dnl dnl действие в случае отсутствия ответа от DCC либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confDCC_DEFER_OK', `YES') dnl dnl действие для писем, опознанных как SPAM dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) define(`confDCC_ACTION', `NO')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl действие для старых заголовков dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confDCC_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки DCC define(`confDCC_HEADERS', `:X-DCC-URT-Metrics') dnl dnl ############################################## dnl dnl Поддержка RSPAMD dnl dnl ВНИМАНИЕ!!! dnl при использовании интеграции с rspamd необходимо включить использование dnl системного фильтра (см. параметр confSYSTEM_FILTER) dnl dnl команда получения названия и версии демона RSPAMD dnl define(`confRSPAMD_NAME_VERSION', `pkg_info -I rspamd\* | perl -p -e "s/^(rspamd-\S+).+\$/\$1/;s/\n//;"') define(`confRSPAMD_NAME_VERSION_DEFAULT', `rspamd --help | grep -i rspamd | grep version | perl -p -e "s/^\s+//;s/\n//;"') dnl dnl параметры подключения к RSPAMD define(`confRSPAMD_ADDRESS', `127.0.0.1 11333') dnl dnl действие в случае отсутствия ответа от RSPAMD либо возврата кода ошибки dnl NO - возвращать клиенту 4xx dnl YES - продолжать обработку письма define(`confRSPAMD_DEFER_OK', `YES') dnl dnl действие для писем, опознанных как SPAM dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl DROP - отказ в приеме сообщения с обрывом соединения dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT) define(`confRSPAMD_ACTION', `NO')dnl dnl если не будут указаны действия REJECT, DROP или DISCARD, то письмо будет просто помечено dnl действие QUARANTINE можно указывать вместо с REJECT и DISCARD через пробел dnl действия QUARANTINE_MAILLIST и DISCARD_MAILLIST можно указывать вместе с REJECT и DROP dnl dnl сообщение полностью исключается из проверки, если в значении $acl_m_wl_flag_msg dnl поля white_list_relays, white_list_senders или white_list_compat равны 1 dnl и поле spam_hater не равно 1 dnl dnl действие для старых заголовков dnl RENAME - переименование старых заголовков (в конец имени добавляется -Old) dnl REMOVE - удаление старых заголовков dnl NOTHING - оставлять заголовки без изменений define(`confRSPAMD_OLD_HEADERS', `RENAME')dnl dnl dnl заголовки RSPAMD define(`confRSPAMD_HEADERS', `:X-Spam-Action:X-Rspamd-Info:X-Rspamd-Version:X-Rspamd-Protocol-Version:X-Rspamd-Urls:X-Rspamd-Status:X-Rspamd-Score:X-Rspamd-Report') dnl dnl ############################################## dnl dnl проверка ошибок MIME dnl NO - не проводить проверку ошибок MIME dnl YES - проводить проверку ошибок MIME define(`confCHECK_MIME_ERRORS', `NO')dnl dnl dnl действия для разных уровней ошибок: dnl WARN - вывод предупреждения в лог файл и добавление поля в заголовки письма dnl REJECT - отказ в приеме письма (возврат клиенту кода 5xx) dnl DENY - синоним для REJECT dnl FAKEREJECT - доставка письма получателю с возвратом клиенту кода 5xx dnl DISCARD - прием письма без доставки получателю dnl QUARANTINE - вывод в лог файл предупреждения и помещение письма в карантин dnl QUARANTINE_MAILLIST - сохранение в карантине писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT или FAKEREJECT) dnl DISCARD_MAILLIST - игнорирование писем из списков рассылки вместо отказа в приеме письма dnl (используется только одновременно с REJECT или FAKEREJECT) dnl dnl для каждого из трех уровней ошибок (1, 2 и >2) действия описываются отдельно define(`confCHECK_MIME_ERRORS_1', `WARN')dnl define(`confCHECK_MIME_ERRORS_2', `WARN')dnl define(`confCHECK_MIME_ERRORS_3', `WARN')dnl dnl dnl какой механизм проверки ошибок MIME использовать: dnl MIME_ANOMALY - проверка в acl_smtp_mime dnl OLD_DEMIME - проверка в acl_smtp_data (depricated, используется для совместимости, dnl необходима сборка exim с WITH_OLD_DEMIME) define(`confCHECK_MIME_ERRORS_BACKEND', `MIME_ANOMALY')dnl dnl dnl ################################################################## dnl SYSTEM FILTER dnl ################################################################## dnl dnl использование системного фильтра dnl define(`confSYSTEM_FILTER', `CONFDIR/system_filter')dnl define(`confSYSTEM_FILTER', `')dnl dnl dnl пользователь, от имени которого работает системный фильтр define(`confSYSTEM_FILTER_USER', confEXIM_USER)dnl dnl dnl каталог, в котором сохраняются письма с предупреждениями define(`confSYSTEM_FILTER_WARNINGS_DIR', `/var/spool/quarantine/warnings')dnl dnl время жизни писем с предупреждениями define(`confSYSTEM_FILTER_WARNINGS_AGE', `30')dnl dnl каталог, в котором сохраняются письма, помещенные в карантин define(`confSYSTEM_FILTER_QUARANTINE_DIR', `/var/spool/quarantine/quarantine')dnl dnl время жизни писем с предупреждениями define(`confSYSTEM_FILTER_QUARANTINE_AGE', `30')dnl dnl dnl ############################################## dnl dnl использовать резервное копирование почты dnl NO - не использовать резервное копирование почты dnl ROUTER_REDIRECT - резервное копирование почты средствами роутеров dnl путем доставки по указанному адресу dnl ROUTER_ACCEPT - резервное копирование почты средствами роутеров dnl путем доставки в указанный maildir dnl SYSTEM_FILTER - резервное копирование почты средствами системного фильтра dnl REMOTE_SMTP - маршрутизация копий локальных писем на удаленный dnl SMTP сервер без перезаписи адреса получателя define(`confMAIL_BACKUP', `NO')dnl dnl dnl при define(`confMAIL_BACKUP', `ROUTER_REDIRECT'): dnl почтовый адрес, на который будут доставляться резервные копии писем при использовании роутеров dnl адрес может быть нелокальным dnl пример: dnl define(`confMAIL_BACKUP_ADDR', `backup@local.domain.tld')dnl dnl dnl при define(`confMAIL_BACKUP', `ROUTER_ACCEPT'): dnl путь к mailbox/maildir, в который будут доставляться резервные копии писем при использовании роутеров dnl пример: dnl define(`confMAIL_BACKUP_PATH', `confVIRT_MDIR_ROOT/localhost/admin/.backup.$tod_logfile/')dnl dnl dnl при define(`confMAIL_BACKUP', `SYSTEM_FILTER') в системный фильтр будет включен файл dnl confCONFDIR`/site/system_filter_backup' dnl dnl при define(`confMAIL_BACKUP', `REMOTE_SMTP'): dnl dnl список доменов, при доставке писем которых будет выполняться маршрутизация на удаленный SMTP хост: define(`confMAIL_BACKUP_REMOTE_SMTP_DOMAIN_LIST', `+local_domains')dnl dnl define(`confMAIL_BACKUP_REMOTE_SMTP_DOMAIN_LIST', `!$qualify_domain : +local_domains')dnl dnl dnl адрес хоста, на который будут маршрутизироваться копии локально доставляемых писем: dnl define(`confMAIL_BACKUP_REMOTE_SMTP_HOST', `backup.relay.domain.tld')dnl dnl dnl ################################################################## dnl Antiviruses dnl ################################################################## dnl dnl о параметрах подключения отдельных антивирусов можно прочесть "5. ИСПОЛЬЗОВАНИЕ АНТИВИРУСОВ" файла m4/README dnl dnl путь к каталогу антивирусного карантина define(`confQUARANTINE_DIR', `/var/spool/quarantine/infected')dnl dnl dnl путь к maildir'у антивирусного карантина dnl пример для dovecot: dnl define(`confQUARANTINE_MAILDIR',`confVIRT_MDIR_ROOT/domain.ltd/admin/.quarantine._AV_NAME.${sg{$malware_name}{\N[\.\s]\N}{_}}/') dnl идентификатор _AV_NAME будет заменен на название антивируса dnl конструкция ${sq необходима для замены точек, используемых dovecot'ом как разделитель dnl в именами maildir'ов, и пробельных символов на символ подчеркивания dnl dnl если существуют обе переменные confQUARANTINE_DIR и confQUARANTINE_MAILDIR, dnl то в качестве антивирусного карантина используется maildir из переменной dnl confQUARANTINE_MAILDIR dnl dnl время жизни зараженных писем в карантине в днях define(`confQUARANTINE_AGE', `30')dnl dnl после удаления старых инфицированных писем для каждого вида вируса оставляется один образец dnl dnl максимальное количество вирусов в карантине dnl define(`confQUARANTINE_MAX_COUNT', `1000')dnl dnl при удалении инфицированных писем оставляется одно самое старое и остальные - самые свежие dnl dnl время жизни непроверенных писем в confSPOOLDIR/scan в днях define(`confSPOOL_SCAN_AGE', `7')dnl dnl dnl ################################################################## dnl Antiviruses: настройка антивирусных квитанций dnl ################################################################## dnl dnl отсылка антивирусных квитанций: dnl NO - не отсылать антивирусные квитанции dnl RCPT - отсылать квитанции получателям зараженных сообщений dnl POSTMASTER - отсылать квитанции администратору почтовой/антивирусной системы define(`confAV_NOTIFY', `NO')dnl dnl значения RCPT и POSTMASTER можно указывать вместе, разделяя их пробелом dnl dnl исключения из отсылки антивирусных квитанций: dnl NO - не делать исключений, отсылать квитанции всем получателям dnl YES - отсылать квитанции лишь тем получателям, которые не указаны dnl в CONFDIR/skip_avir_notify_rcpt define(`confAV_NOTIFY_SKIP_RCPT', `YES')dnl dnl в CONFDIR/skip_avir_notify_rcpt исключения указываются в виде: dnl rcpt.domain: user1 : user2 dnl domain2: user2.1 : user2.2 : !* dnl * : * dnl dnl адрес администратора, получающего антивирусных квитанций: define(`confAV_ADMIN', `"AntiVirus Admin "')dnl dnl этот же адрес будет указан в квитанции, как адрес, на который получатель dnl зараженного письма может послать запрос на получение письма из карантина dnl dnl адрес, от имени которого будут отсылаться антивирусные квитанции: define(`confAV_NOTIFY_FROM', `"AntiVirus Daemon "')dnl dnl dnl тема антивирусной квитанции: define(`confAV_NOTIFY_SUBJECT', `VIRUS HAS BEEN FOUND!')dnl dnl при необходимости в теме можно использовать тему зараженного сообщения dnl пример: define(`confAV_NOTIFY_SUBJECT', `Warning: virus has been found in message with subject \"$h_Subject:\"')dnl dnl dnl ################################################################## dnl dnl You didn't come here to make the choice. You've already made it. dnl You're here to try to understand why you made it. dnl dnl ##################################################################