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(confOS, `OpenBSD', `define(`confCONFDIR', `/etc/exim')')dnl ifelse(confOS, `NetBSD', `define(`confCONFDIR', `/usr/pkg/etc/exim')')dnl ifelse(confOS, `SunOS', `define(`confCONFDIR', `/opt/csw/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, `SunOS', `define(`confPERIODIC', `/opt/csw/etc/exim')')dnl dnl dnl имя почтового домена по умолчанию dnl значение, которое будет использовано, как имя домена по умолчанию. dnl усли не задано, то используется FQDN. dnl пример: dnl define(`confQUALIFY_DOMAIN',`your.mail.domain')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 define(`confEXIM_USER', `mailnull')dnl ifelse(confOS, `FreeBSD', `define(`confEXIM_USER', `mailnull')')dnl ifelse(confOS, `Linux', `define(`confEXIM_USER', `exim')')dnl ifelse(confOS, `OpenBSD', `define(`confEXIM_USER', `_exim')')dnl ifelse(confOS, `NetBSD', `define(`confEXIM_USER', `mail')')dnl ifelse(confOS, `SunOS', `define(`confEXIM_USER', `exim')')dnl dnl dnl группа, с правами которой запускается exim define(`confEXIM_GROUP', `mail')dnl ifelse(confOS, `FreeBSD', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `Linux', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `OpenBSD', `define(`confEXIM_GROUP', `_exim')')dnl ifelse(confOS, `NetBSD', `define(`confEXIM_GROUP', `mail')')dnl ifelse(confOS, `SunOS', `define(`confEXIM_GROUP', `mail')')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/24 dnl при использовании значения YES в private_networks войдут сети, взятые из слудеющего источника: dnl http://www.cymru.com/Documents/secure-bind-template.html 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, confCHECK_OPEN_PROXY dnl dnl путь к каталогу для динамически загружаемой библиотеки с пользовательскими функциями: define(`confDLFUNC_PATH', `/usr/local/libexec/exim') dnl dnl ################################################################## dnl FEATURES dnl ################################################################## dnl dnl описание параметров доступа к БД MySQL dnl define(`confMYSQL', `127.0.0.1/mail/exim/xxxxxxxx') 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 использование списка подозрительных хостов в SQLite dnl (только в enterprise версии) dnl NO - не использовать список dnl YES - использовать список define(`confSQLITE_DANGEROUS', `NO')dnl dnl dnl путь к файлу данных SQLite со списком подозрительных хостов define(`confSQLITE_DANGEROUS_CACHE', `/var/spool/exim/db/dangerous.db')dnl dnl confSQLITE_DANGEROUS_CACHE может совпадать с confSQLITE 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 ################################################################## dnl dnl использование ratelimit'ов dnl NO - не использовать ratelimit'ы dnl HOST - использовать ratelimit'ы по хостам отправителей define(`confRATELIMIT', `NO') 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 err_perm, err_temp; см. exiscan-acl-spec.txt, dnl 8. Sender Policy Framework (SPF) support) dnl http://duncanthrax.net/exiscan-acl/exiscan-acl-spec.txt 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|err_temp : 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 *|err_temp : 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 сокета при использовании 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 ############################################## 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 проверка наличия угловых скобок в командах MAIL FROM и RCPT TO dnl dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_ANGLE_BRACKETS', `WARN PAUSE=20')dnl dnl dnl действия WARN, PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел 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'ы в /var/vmail/$domain dnl с MDIR_USER и MDIR_VIRTUAL можно указывать через пробел: dnl FILTERS - использование .forward в качестве фильтров dnl PROCMAIL - использование .procmailrc в качестве фильтров dnl PIPE - использование внешнего LDA dnl CYRUS - доставка в cyrus-imapd maildir dnl DBMAIL_PIPE - доставка в dbmail через pipe dnl DBMAIL_LMTP - доставка в dbmail через 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', `/var/vmail/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 SINGLE_FILE - хранение списка пользователей в файле типа passwd dnl DOMAINS_FILES - хранение списка пользователей в отдельных файлах для каждого домена dnl MYSQL - хранение списка пользователей в БД MySQL dnl SQLITE - хранение списка пользователей в БД MySQL dnl LDAP - хранение списка пользователей в БД LDAP define(`confVIRT_MDIR_USERLIST', `DOMAINS_FILES')dnl dnl dnl путь к файлу типа passwd (если confVIRT_MDIR_USERLIST содержит SINGLE_FILE) define(`confVIRT_MDIR_USERLIST_SINGLE', `/usr/local/etc/passwd.imap')dnl dnl dnl путь к отдельным файлам для каждого домена (если confVIRT_MDIR_USERLIST содержит DOMAINS_FILES) dnl определяется как confVIRT_MDIR_DOMAIN_SETTINGS/${domain}/passwd 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 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 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', `/var/vmail/$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', `/var/vmail/${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', `/var/vmail/AD/$address_data/')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 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 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 define(`confVIRT_MDIR_QUOTA', `NO')dnl define(`confVIRT_MDIR_QUOTA_DIR_REGEX', `^(?:cur|new|\.(?!Trash).*)$')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_VIRT и PIPE в confDELIVERY_TO: dnl dnl командная строка для запуска LDA: define(`confVIRT_MDIR_PIPE', `/usr/local/libexec/dovecot/deliver -d $local_part@$domain')dnl dnl dnl LDA будет запущен от имени пользователя, указанного в confVIRT_MDIR_USER, и от имени группы, указанной в confVIRT_MDIR_GROUP dnl dnl dnl при наличии CYRUS в confDELIVERY_TO: dnl dnl путь к mbpath (используется для проверки наличия пользователя): dnl define(`confCYRUS_MBPATH_PATH', `/usr/lib/cyrus-imapd/mbpath')dnl define(`confCYRUS_MBPATH_PATH', `/usr/local/cyrus/bin/mbpath')dnl dnl dnl путь к LMTP сокету: dnl define(`confCYRUS_LMTP_SOCKET', `/var/lib/imap/socket/lmtp')dnl define(`confCYRUS_LMTP_SOCKET', `/var/imap/socket/lmtp')dnl dnl dnl пользователь, от имени которого выполняется cyrus-imapd: define(`confCYRUS_USER', `cyrus')dnl dnl dnl максимальное количество адресов, письма которым могут быть доставлены вместе за один запуск транспорта: define(`confCYRUS_BATCH_MAX', `20')dnl dnl dnl при наличии DBMAIL_PIPE в confDELIVERY_TO: dnl путь к dbmail-smtp: define(`confDBMAIL_SMTP_PATH', `/usr/local/sbin/dbmail-smtp')dnl dnl пользователь, от имени которого выполняется dbmail-smtp dnl define(`confDBMAIL_SMTP_USER', `dbmail')dnl define(`confDBMAIL_SMTP_USER', `mailnull')dnl dnl dnl при наличии DBMAIL_LMTP в confDELIVERY_TO: dnl LMTP хост: define(`confDBMAIL_LMTP_HOST', `localhost')dnl dnl LMTP порт: dnl define(`confDBMAIL_LMTP_PORT', `lmtp')dnl define(`confDBMAIL_LMTP_PORT', `24')dnl dnl dnl dbmail backend: dnl MYSQL - использовать хранилище учетной информации и почты в MySQL dnl PGSQL - использовать хранилище учетной информации и почты в PgSQL define(`confDBMAIL_BACKEND', `MYSQL')dnl 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 ############################################## 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 использование mailertable для выбора транспорта и маршрута для проверки существования почтовых адресов dnl NO - не использовать mailertable для проверки существования почтовых адресов dnl YES - использовать mailertable для проверки существования почтовых адресов define(`confMAILERTABLE_CALLOUTTABLE', `NO')dnl dnl dnl запрос к БД MySQL на получение транспорта и маршрута для доставки сообщений define(`confMAILERTABLE_MYSQL', `SELECT transport, route, 25 as port FROM mailertable WHERE domain="${quote_mysql:$domain}"')dnl dnl запрос к БД MySQL на получение транспорта и маршрута для проверки существования почтовых адресов define(`confMAILERTABLE_CALLOUTTABLE_MYSQL', `SELECT transport, route, 25 as port FROM callouttable WHERE domain="${quote_mysql:$domain}"')dnl dnl dnl запрос к БД SQLite на получение транспорта и маршрута для доставки сообщений define(`confMAILERTABLE_SQLITE', `SELECT transport, route, 25 as port FROM mailertable WHERE domain="${quote_sqlite:$domain}"')dnl dnl запрос к БД SQLite на получение транспорта и маршрута для проверки существования почтовых адресов define(`confMAILERTABLE_CALLOUTTABLE_SQLITE', `SELECT transport, route, 25 as port FROM callouttable WHERE domain="${quote_sqlite:$domain}"')dnl dnl dnl маршруты почты прописываются в CONFDIR/mailertable в виде: dnl domain.tld : smtp : host1 : host2 : host3 dnl domain.tld : lmtp NNN : host dnl domain.tld : local : local_mailbox dnl domain.tld : virt : mailbox@virtual_domain dnl domain.tld : uucp-dom : uucp_dom dnl domain.tld|callout : smtp : host1 : host2 : host3 dnl dnl где local - доставка почты домена в локальный mailbox dnl virt - доставка почты домена в mailbox в виртуальном домене dnl uucp-dom - доставка почты домена в uucp mailbox dnl lmtp NNN - доставка почты домена по lmtp по маршруту с использованием порта NNN dnl smtp - доставка почты домена по smtp по маршруту dnl при этом можно вместо имени хоста применить конструкцию mx(domain) dnl при этом в начале configure должен быть подключен файл exim.pl с функцией sortmx: dnl dnl sub sortmx() { dnl if(not defined(@_)) { dnl return(undef); dnl } else { dnl my($mxs) = shift; dnl my(%mx_list, $mx, $prec, $line); dnl foreach $mx (split(/\n/m, $mxs)) { dnl ($prec, $line) = split(/\s+/, $mx); dnl $prec += 20000; dnl $mx_list{$prec} = $line; dnl } dnl if (%mx_list) { dnl my($res); dnl foreach (sort(keys(%mx_list))) { dnl $res .= ':' if ($res); dnl $res .= $mx_list{$_}; dnl } dnl return($res); dnl } else { dnl return('not found'); dnl } dnl } dnl } 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 использование серых списков с кешем в DBM dnl NO - не использовать серые списки dnl YES - использовать серые списки dnl LEARN - использовать серые списки в режиме обучения (аналог 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 тип backend'а для подсистемы серых списков dnl DBM - использовать Berkeley DB dnl SQLITE - использовать SQLite dnl MYSQL - использовать MySQL define(`confGREYLIST_BACKEND', `DBM')dnl dnl dnl пути к файлам кеша серых списков define(`confGREYLIST_DBM_CACHE', `/var/spool/exim/db/greylist.dbm')dnl define(`confGREYLIST_SQLITE_CACHE', `/var/spool/exim/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:$local_part@$domain}" 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:$local_part@$domain}" 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:$local_part@$domain}", "${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:$sender_address}" 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:$sender_address}" AND recipient_address="${quote_sqlite:$local_part@$domain}";')dnl dnl define(`confGREYLIST_SQLITE_SELECT', `\ SELECT * FROM greylist \ WHERE sender_host_address="${quote_sqlite:$sender_host_address}" AND sender_address="${quote_sqlite:$sender_address}" 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 ("$sender_host_address", "${quote_sqlite:$sender_address}", "${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="$sender_host_address" AND sender_address="${quote_sqlite:$sender_address}" 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="$sender_host_address" AND sender_address="${quote_sqlite:$sender_address}" 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="$sender_host_address" OR sender_host_address="0.0.0.0") AND sender_address="${quote_sqlite:$sender_address}" 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 ("$sender_host_address", "${quote_sqlite:$sender_address}", "${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="$sender_host_address" AND sender_address="${quote_sqlite:$sender_address}" 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:$local_part@$domain}" 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:$local_part@$domain}" 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:$local_part@$domain}", "${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:$sender_address}" 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:$sender_address}" 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:$sender_host_address}" AND sender_address="${quote_mysql:$sender_address}" 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 ("$sender_host_address", "${quote_mysql:$sender_address}", "${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="$sender_host_address" AND sender_address="${quote_mysql:$sender_address}" 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="$sender_host_address" AND sender_address="${quote_mysql:$sender_address}" 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="$sender_host_address" OR sender_host_address="0.0.0.0") AND sender_address="${quote_mysql:$sender_address}" 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 ("$sender_host_address", "${quote_mysql:$sender_address}", "${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="$sender_host_address" AND sender_address="${quote_mysql:$sender_address}" 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 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 define(`confGREYLIST_MESSAGE', `Temporary local problem - please try later')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 113.130.15.19|corvax@test.org.ua|test@local.domain 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 пути к файлам динамических серых списков рилеев define(`confGREYLIST_DBM_RELAYS', `/var/spool/exim/db/greylist_relays.dbm')dnl define(`confGREYLIST_SQLITE_RELAYS', `/var/spool/exim/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 локальной сети или от аутентифицированного отправителя dnl NO - не вносить исключающую запись dnl YES - вносить исключающую запись define(`confGREYLIST_ADDR_PRELOAD', `NO') dnl запись вносится в исключения на confGREYLIST_ADDR_PRELOAD_TTL минут define(`confGREYLIST_ADDR_PRELOAD_TTL',`240') 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 dnl поддержка SMTP Auth на сервере dnl NO - не использовать SMTP Auth dnl YES - использовать SMTP Auth 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 использование метода SPA dnl NO - не использовать метод SPA dnl YES - использовать метод SPA define(`confSMTP_AUTH_SPA', `NO')dnl dnl использование метода SPA с проверкой паролей в AD dnl NO - не использовать метод SPA с проверкой паролей в AD dnl YES - использовать метод SPA с проверкой паролей в AD define(`confSMTP_AUTH_SPA_DC', `NO')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 откуда берем пароли 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 сервера define(`confSMTP_AUTH_SOURCE', `PAM')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 запрос 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_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_SPA_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 - использовать список исключений в файле dnl CONFDIR/authplain-enabled при запрете аутентификации без шифрования dnl ENFORCE_ON_SUBMIT - требовать использование SMTP аутентификации при работе через порт 587 dnl define(`confSMTP_AUTH_RESTRICT', `NO')dnl define(`confSMTP_AUTH_RESTRICT', `ENFORCE_ON_SUBMIT')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 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 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 ############################################## dnl dnl проверка рилея отправителя в blacklist'ах dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_RELAY_ACCESS', `WARN')dnl dnl dnl действия WARN, PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел dnl dnl в файле access-relay-blacklist перечисляются A записи хостов и сети в виде CIDR dnl для хостов и сетей, перечисленных в файле access-relay-blacklist, применяется dnl действие, указанное в переменной confCHECK_RELAY_ACCESS dnl dnl в файле access-relay перечисляются A записи хостов, сети в виде CIDR, dnl PTR записи хостов, доменные зоны в виде wildcard или регулярных выражений dnl dnl в файле access-relay можно указать необходимое действие для данного dnl хоста в виде: dnl host : action : message : log_message dnl dnl где dnl host - A запись хоста, сеть в виде CIDR, PTR запись хоста или доменная зона dnl в виде wildcard или регулярного выражения dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl возможные значения для action: dnl ok - исключение из проверки для указанного хоста dnl warn - вывод в лог файл предупреждения dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl submit_mysql - занесение записи о хосте в базу MySQL (только в enterprise версии) dnl submit_sqllite - занесение записи о хосте в базу SQLite (только в enterprise версии) dnl submit_rbl - занесение записи о хосте в DNSBL (только в enterprise версии) dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_RELAY_ACCESS 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 проверка страны рилея отправителя в blacklist'ах dnl NO - не проводить проверку dnl REJECT - возврата по умолчанию клиенту кода 5xx dnl DEFER - возврата по умолчанию клиенту кода 4xx dnl WARN - вывода по умолчанию в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_RELAY_COUNTRY_ACCESS', `NO')dnl dnl dnl действия WARN, PAUSE:XX, GREYLIST:XX, REJECT:XX можно указывать через пробел dnl dnl в файле CONFDIR/access-relay можно указать необходимые действия для страны dnl хоста отправителя в виде: dnl country_NN : action : message : log_message dnl dnl где dnl country_ - просто статический текст dnl NN - двубуквенный код страны dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl возможные значения для action: dnl ok - исключение из проверки для указанного хоста dnl warn - вывод в лог файл предупреждения dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl greylist=X - добавление X баллов к счетчику опционального грейлистинга dnl reject=X - добавление X баллов к счетчику опционального reject'а dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_RELAY_COUNTRY_ACCESS dnl dnl пример: dnl country_CN : defer : message defered. contact postmaster@$qualify_domain dnl country_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 PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_RELAY_DIALUP', `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_RELAY_DIALUP используется только при использовании confCHECK_RELAY_ACCESS 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 встречная проверка open proxy dnl требуется установленный proxycheck (/usr/ports/security/proxycheck) dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_OPEN_PROXY', `NO')dnl dnl путь к файлу кеша define(`confCHECK_OPEN_PROXY_CACHE', `/var/spool/exim/db/proxycheck.db')dnl dnl время жизни записей в кеше в минутах define(`confCHECK_OPEN_PROXY_CACHE_TTL', `1440')dnl dnl тайм-аут define(`confCHECK_OPEN_PROXY_TIMEOUT', `60')dnl dnl в переменной confCHECK_OPEN_PROXY_HOST необходимо указать хост и порт эталонного MTA dnl в переменной confCHECK_OPEN_PROXY_BANNER необходимо указать SMTP баннер эталонного MTA dnl пример: dnl define(`confCHECK_OPEN_PROXY_HOST', `mail.lucky.net:25')dnl dnl define(`confCHECK_OPEN_PROXY_HOST', `220 planka.carrier.kiev.ua ESMTP')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 WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_HELO_OWN', `WARN')dnl dnl dnl ############################################## dnl dnl HELO, состоящих из одной точки, или без точки dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_HELO_MISCONFIGURED', `WARN')dnl dnl dnl ############################################## dnl dnl проверка HELO в виде IP адреса без квадратных скобок dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_HELO_IP', `WARN')dnl dnl dnl ############################################## dnl dnl проверка HELO в черном списке dnl NO - не проводить проверку dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврат клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывод в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl define(`confCHECK_HELO_ACCESS', `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 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_HELO_ACCESS 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 ############################################## dnl dnl проверка соответствия HELO и PTR записи рилея dnl в общем случае используется, когда: dnl HELO заканчивается на название домена, то и PTR запись рилея dnl должна заканчиваться на этот домен dnl NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_HELO_FORGED', `NO')dnl dnl dnl соответствие HELO и PTR записей рилеев описано в файле confCONFDIR/access-helo-forged в виде: dnl : : : dnl dnl helo_regexp - регулярное выражение, применяемое к HELO dnl hostname_regexp - регулярное выражение, которому должна соответствовать PTR dnl запись рилея при соответствии HELO первому регуляному выражению dnl action - действие в случае несоответствия PTR записи рилея второму dnl регуляному выражению dnl возможные значения: dnl warn - выдать предупреждение в лог файл dnl deny - отвергнуть сообщение dnl reject - синоним deny dnl action_if_resolve_tempfail - действие в случае проблем с резолвингом PTR записи рилея dnl регулярное выражение обязательно указыватеся без \N в начале и в конце dnl возможные значения: dnl defer - вернуть клиенту 4xx dnl pass - принять сообщение dnl warn - выдать предупреждение в лог файл 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 запись хоста или сеть в виде CIDR dnl в качестве regexp указывается регулярное выражение, которому должно соответствовать HELO dnl сообщений данного рилея dnl регексп обязательно указыватеся без \N в начале и в конце dnl dnl пример: dnl 66.218.64.0/19 : ^(.+\.)*yahoo\.com$ dnl 213.180.200.0/24 : ^(.+\.)*yandex\.ru$ 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 PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а define(`confCHECK_HELO_FQDN', `NO')dnl dnl в confCHECK_HELO_FQDN могут быть указаны несколько значений, разделеные пробелом dnl dnl исключеня из проверки FQDN в HELO (список) dnl AUTH - не проводить проверку аутентифицированных отправителей dnl RELAY_FROM - не проводить проверку исходящих сообщений dnl HOST_LIST - не проводить проверку сообщений, получаемых с определенного списка хостов dnl (список хостов/сетей находится в файле skip_helo_fqdn_check) define(`confCHECK_HELO_FQDN_SKIP', `AUTH RELAY_FROM')dnl dnl dnl ############################################## dnl dnl проверка резолвинга домена верхнего уровня аргумента команды HELO dnl NO - не проверять резолвинг домена верхнего уровня команды HELO dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврат клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывод в лог файл предупреждения 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', `ac:ad:ae:aero:af:ag:ai:al:am:an:ao:aq:ar:arpa:as:asia:at:au:aw:ax:az:ba:bb:bd:be:bf:bg:bh:bi:biz:bj:bm:bn:bo:br:bs:bt:bv:bw:by:bz:ca:cat:cc:cd:cf:cg:ch:ci:ck:cl:cm:cn:co:com:coop:cr:cu:cv:cx:cy:cz:de:dj:dk:dm:do:dz:ec:edu:ee:eg:er:es:et:eu:fi:fj:fk:fm:fo:fr:ga:gb:gd:ge:gf:gg:gh:gi:gl:gm:gn:gov:gp:gq:gr:gs:gt:gu:gw:gy:hk:hm:hn:hr:ht:hu:id:ie:il:im:in:info:int:io:iq:ir:is:it:je:jm:jo:jobs:jp:ke:kg:kh:ki:km:kn:kp:kr:kw:ky:kz:la:lb:lc:li:lk:lr:ls:lt:lu:lv:ly:ma:mc:md:me:mg:mh:mil:mk:ml:mm:mn:mo:mobi:mp:mq:mr:ms:mt:mu:museum:mv:mw:mx:my:mz:na:name:nc:ne:net:nf:ng:ni:nl:no:np:nr:nu:nz:om:org:pa:pe:pf:pg:ph:pk:pl:pm:pn:pr:pro:ps:pt:pw:py:qa:re:ro:rs:ru:rw:sa:sb:sc:sd:se:sg:sh:si:sj:sk:sl:sm:sn:so:sr:st:su:sv:sy:sz:tc:td:tel:tf:tg:th:tj:tk:tl:tm:tn:to:tp:tr:travel:tt:tv:tw:tz:ua:ug:uk:us:uy:uz:va:vc:ve:vg:vi:vn:vu:wf:ws:ye:yt:yu:za:zm: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_MAIL_DOMAIN_A', `YES')dnl dnl dnl черный список А записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-a dnl в виде: dnl ptr_record : действие : сообщение dnl a_record : действие : сообщение dnl NoMX : действие : сообщение 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_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_MAIL_DOMAIN_MX', `NO')dnl dnl dnl черный список MX записей доменов отправителей находятся в файле CONFDIR/access-mail-domain-mx dnl в виде: dnl ptr_record : действие : сообщение dnl a_record : действие : сообщение dnl NoMX : действие : сообщение 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_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 встречная проверка адреса отправителя dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения (не выводятся для сообщений, попадающих в исключения) dnl WARN_LOG - вывода в лог файл предупреждения (выводятся и для сообщений, попадающих в исключения) dnl REJECT - возврата клиенту кода 5xx dnl REJECT_LOG - возврата клиенту кода 5xx (для сообщений, попадающих в исключения, выводится предупреждения) define(`confVERIFY_SENDER', `REJECT')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 файл с перечисленными адресами/доменами получателей, для которых при 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 игнорирование defer'ов при встречной проверке отправителя при приеме писем от 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|apache|nobody') 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 NO - не проводить проверку dnl YES - проводить проверку define(`confCHECK_RCPT_INVALID', `NO')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl zuper.domain.com : user : info : admin dnl dnl применим для доменов, для которых мы являемся backup MX dnl dnl для доменов с фиксированным набором ящиков можно указать их как исключения в данном списке dnl (предварив каждый знаком "!") и указать последним элементом знак "*": dnl test.kiev.ua : !postmaster : !abuse : * dnl test2.kiev.ua : !postmaster : !abuse : !iam : !alex : * 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 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 записи define(`confCHECK_FAKE_LOCAL_SKIP', `AUTH')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 WARN - вывод в лог файл предупреждения dnl GREYLIST:XX - добавить XX баллов к счетчику опционального грейлистинга dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl DELAY:XX - задержка XX секунд перед ответом на RCPT TO define(`confCHECK_RCPT_ACCESS', `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 defer - возврат клиенту временной ошибки 4xx dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю 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_RCPT_ACCESS 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_MAIL_ACCESS', `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_MAIL_ACCESS 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 - возврата клиенту кода 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_COMPAT', `NO')dnl dnl dnl место хранения списков доступа dnl TEXT - хранение списков доступа в access-compat dnl DBM - хранение списков доступа в dbm файле dnl SQLITE - хранение списков доступа в БД SQLite dnl MYSQL - хранение списков доступа в БД MySQL define(`confCHECK_COMPAT_BACKEND', `TEXT')dnl dnl dnl при TEXT в confCHECK_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_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_COMPAT_BACKEND: dnl dnl ключи записи в DBM файле и значение записи такие же, как для TEXT файлов dnl исключением является возможность в поле действия указать время жизни записи в виде expires="время в unixtime" dnl это поле может использоваться для автоматически формируемых временных персональных whitelist'ов dnl dnl путь к DBM файлу define(`confCHECK_COMPAT_DBM_FILE', `/var/spool/exim/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_COMPAT_BACKEND: dnl dnl путь к файлу sqlite define(`confCHECK_COMPAT_SQLITE_FILE', `/var/spool/exim/db/access_list.db')dnl dnl запрос к БД SQLite define(`confCHECK_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_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_COMPAT_BACKEND: dnl dnl запрос к БД MySQL define(`confCHECK_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_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 dnl ############################################## dnl dnl использование автоматического белого списка (необходимо использование confCHECK_COMPAT): dnl NO - не использовать автоматический белый список dnl DBM - хранить данные автоматического белого списка в dbm файле dnl SQLITE - хранить данные автоматического белого списка в БД SQLite dnl MYSQL - хранить данные автоматического белого списка в БД MySQL 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 при DBM в confAWL: dnl dnl путь к DBM файлу define(`confAWL_DBM_FILE', `/var/spool/exim/db/awl.dbm')dnl dnl dnl ключ записи в AWL файле такой же, как в access-compat dnl значением записи является время жизни записи dnl dnl при SQLITE в confAWL: dnl dnl путь к SQLITE файлу define(`confAWL_SQLITE_FILE', `/var/spool/exim/db/awl.db')dnl dnl define(`confAWL_SQLITE_CHECK', `SELECT expires FROM awl WHERE recipient="${quote_sqlite:$local_part@$domain}" AND sender="${quote_sqlite:$sender_address}" AND expires > $tod_epoch;')dnl define(`confAWL_SQLITE_SELECT', `SELECT expires FROM awl WHERE recipient="${quote_sqlite:$sender_address}" AND sender="${quote_sqlite:$local_part@$domain}" AND expires > $tod_epoch;')dnl define(`confAWL_SQLITE_INSERT', `INSERT INTO awl (recipient, sender, expires) VALUES ("${quote_sqlite:$sender_address}", "${quote_sqlite:$local_part@$domain}", $tod_epoch+60*confAWL_PERIOD);')dnl define(`confAWL_SQLITE_UPDATE', `UPDATE awl SET expires = $tod_epoch+60*confAWL_PERIOD WHERE recipient="${quote_sqlite:$sender_address}" AND sender="${quote_sqlite:$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:$local_part@$domain}" AND sender="${quote_mysql:$sender_address}" AND expires > NOW()')dnl define(`confAWL_MYSQL_SELECT', `SELECT UNIX_TIMESTAMP(expires) FROM awl WHERE recipient="${quote_mysql:$sender_address}" AND sender="${quote_mysql:$local_part@$domain}" AND expires > NOW()')dnl define(`confAWL_MYSQL_INSERT', `INSERT INTO awl (recipient, sender, expires) VALUES ("${quote_mysql:$sender_address}", "${quote_mysql:$local_part@$domain}", ADDTIME(NOW(), SEC_TO_TIME(60*confAWL_PERIOD)))')dnl define(`confAWL_MYSQL_UPDATE', `UPDATE awl SET expires = ADDTIME(NOW(), SEC_TO_TIME(60*confAWL_PERIOD)) WHERE recipient="${quote_mysql:$sender_address}" AND sender="${quote_mysql:$local_part@$domain}"')dnl define(`confAWL_MYSQL_DELETE', `DELETE FROM awl WHERE expires < NOW()')dnl dnl dnl ############################################## dnl dnl проверка наличия почтового ящика и домена получателя в почтовом ящике отправителя dnl пример: dnl MAIL FROM: dnl RCPT TO: dnl NO - не производить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx define(`confCHECK_SENDER_MAILBOX', `NO')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 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 проверка двойных расширений прикрепленных файлов 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 при использовании фильтрации писем по стране отправителя (confCHECK_RELAY_COUNTRY_ACCESS) и dnl при указании в заголовках письма информации о странах, через которые прошло письмо (confRELAY_COUNTRIES) dnl значение confIP2COUNTRY автоматически устанавливается равным YES dnl dnl механизм определения страны по IP адресу dnl DLFUNC - определение страны по IP адресу с помощю dlfunc ip2country dnl при этом необходимо: dnl собрать exim с EXPAND_DLFUNC dnl собрать и установить GeoIP library dnl DNSBL - определение страны по IP адресу с помощю DNSBL zz.countries.nerd.dk dnl PTRTLD - определение страны по IP адресу с на основании TLD из PTR записи 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 во все сообщения 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 во все сообщения 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 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 dnl ################################################################## dnl BODY dnl ################################################################## dnl dnl добавление поля X-Original-Recipients dnl NO - не добавлять поле X-Original-Recipients dnl YES - добавлять поле X-Original-Recipients dnl SKIP_MAILLIST - добавлять поле X-Original-Recipients в письма, полученные не из списков рассылки define(`confADD_X_ORIGINAL_RECIPIENTS', `SKIP_MAILLIST')dnl dnl dnl ################################################################## dnl dnl при помещении вирусов в карантин (значение `WARN' для вышеописанных опций) сохранять ли dnl зараженные сообщения в резервных копиях писем: dnl NO - не создавать резервные копии зараженных сообщений dnl YES - создавать резервные копии зараженных сообщений define(`confANTIVIRUS_SAVE_BACKUP', `NO')dnl dnl dnl ############################################## dnl dnl использование фильтрации по содержимому писем dnl NO - не использовать фильтрацию dnl SPAMASSASSIN - использовать встроенную в exim интеграцию со spamd (SPAMASSASSIN) dnl DLFUNC_SPAMD - использовать интеграцию со spamd (SPAMASSASSIN) в виде dlfunc dnl DSPAM - использовать DSPAM dnl KAS3 - использовать Kaspersky Anti-Spam 3.x dnl SO2 - использовать Spamoborona 2.x 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', `192k')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 ############################################## 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', `/var/vmail/domain.tld/admin/spam-quarantine/')dnl define(`confSPAMASSASSIN_QUARANTINE_DIR', `/var/vmail/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', `/var/vmail/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 значение по умолчанию времени жизни записи о хосте в кеше greylisting'а в минутах dnl define(`confKAS3_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(`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 проверка ошибок 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', `/usr/local/mail')dnl dnl время жизни писем с предупреждениями define(`confSYSTEM_FILTER_WARNINGS_AGE', `30')dnl dnl каталог, в котором сохраняются письма, помещенные в карантин define(`confSYSTEM_FILTER_QUARANTINE_DIR', `/usr/local/mail')dnl dnl время жизни писем с предупреждениями define(`confSYSTEM_FILTER_QUARANTINE_AGE', `30')dnl dnl dnl ############################################## dnl dnl использовать резервное копирование почты dnl NO - не использовать резервное копирование почты dnl ROUTER - резервное копирование почты средствами роутеров dnl SYSTEM_FILTER - резервное копирование почты средствами системного фильтра define(`confMAIL_BACKUP', `NO')dnl dnl dnl при define(`confMAIL_BACKUP', `ROUTER'): dnl почтовый адрес, на который будут доставляться резервные копии писем при использовании роутеров dnl адрес может быть нелокальным dnl пример: dnl define(`confMAIL_BACKUP_ADDR', `backup@local.domain.tld')dnl dnl dnl при define(`confMAIL_BACKUP', `SYSTEM_FILTER') в системный фильтр будет включен файл dnl confCONFDIR`/site/system_filter_backup' dnl dnl ################################################################## dnl Antiviruses dnl ################################################################## dnl dnl о параметрах подключения отдельных антивирусов можно прочесть "5. ИСПОЛЬЗОВАНИЕ АНТИВИРУСОВ" файла m4/README dnl dnl путь к каталогу антивирусного карантина define(`confQUARANTINE_DIR', `/usr/local/viruses')dnl dnl dnl путь к maildir'у антивирусного карантина dnl пример для dovecot: dnl define(`confQUARANTINE_MAILDIR',`/var/vmail/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 время жизни непроверенных писем в /var/spool/exim/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 ##################################################################