|
Bog BOS: exim: старые материалы
|
Последнее изменение файла: 2010.03.04
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: exim: старые материалы
Основной материал по exim,
а в этой статье описываются:
Принимает почту из внешнего мира раздает на
внутренние сервера для раскладки их по ящикам. Локальных ящиков не имеет.
- создать группу exim и пользователя exim по аналогии с mail
- распаковать дистрибутив
- exim может использовать различные библиотеки DBM, но лучше если это будет
Berkeley BD 3 без режима эмуляции ndbm (USE_DB в OS/Makefile-Linux) во
избежание путаницы с неверной версией ndbm.h, к тому же она использует
один файл на базу данных
- скопировать src/EDITME в Local/Makefile и отредактировать его:
- BIN_DIRECTORY=/usr/exim/bin
- CONFIGURE_FILE=/usr/exim/configure
- EXIM_USER=exim
- EXIM_GROUP=exim
- SPOOL_DIRECTORY=/var/spool/exim
- включить все маршрутизаторы, кроме iplookup
- включить все транспорты
- нестандартные форматы локальных почтовых ящиков не включать
- включить средства просмотра: dbm, lsearch, dsearch, dnsdb,
whoson (требуется whoson.h, которого нет),
mysql (требуется библиотека mysqlclient в /usr/local/mysql)
- собирать eximon.bin
- включить все механизмы аутентификации (?)
- включить поддержку TLS (через OpenSSL), необходима отдельная настройка,
иначе лучше выключить
- не надо документации в формате info
- LOG_FILE_PATH=syslog:/var/log/exim/%s (директорию надо создать с правами для пользователя exim вручную)
- ротация журналов предполагается с помощью внешних средств (logrotate),
но настройки можно оставить
- встроенный perl не нужен
- PAM не нужен (?)
- RADIUS не нужен
- tcpwrapper нужен (добавить EXTRALIBS_EXIM=-lwrap)
- MAX_NAMED_LIST=16 (достаточно? лучше 32)
- MAXINTERFACES=500 (зачем-то собирается информация обо всех интерфейсах
и складывается в таблицу фиксированного размера; такое число не каждому
понадобится ;)
- PID_FILE_PATH=/var/run/exim.pid (в RH Linux в /var/lock предназначен для других вещей)
- SUPPORT_MOVE_FROZEN_MESSAGES=yes
- скопировать exim_monitor/EDITME в Local/eximon.conf и отредактировать его:
- пока оставил все по умолчанию
- make
- make install (если была старая версия, то конфигурация не замещается,
старые версии утилит переименовываются; в общем, лучше посмотреть,
что получилось)
- /usr/exim/bin: exim-4.01-2 (и символьная ссылка exim), eximon, eximon.bin,
exim_dumpdb, exim_fixdb, exim_tidydb, exinext, exiwhat, exim_dbmbuild,
exicyclog, exigrep, eximstats, exiqsumm, exim_lock, exim_checkaccess
- /usr/exim/configure (тут же поставить ему права root:exim, 0640)
- создает /var/spool/exim (молча!)
- документация не копируется (даже exim(8))
- настройка /usr/exim/configure
- primary_hostname = (имя хоста полезно задать явно, если хост имеет
множество интерфейсов)
- domainlist local_domains = (здесь нет почтовых ящиков)
- domainlist relay_to_domains =
- domainlist our_domain_with_mail = (список доменов, для которых
мы принимаем почту)
- domainlist our_domain_without_mail = (список наших доменов,
у которых нет почты)
- hostlist relay_from_hosts = 127.0.0.1
- hostlist modems_pool = (список блоков адресов)
- hostlist local_network = (список блоков адресов)
- localpartlist forward_deol = (список локальных форвардов)
- localpartlist alias_deol = (список алиасов)
- localpartlist forward_deol_out = (список форвардов наружу)
- acl_smtp_rcpt = rcpt (acl_check_rcpt оставить как образец)
- qualify_domain = deol.ru
- never_users = root
- #host_lookup = * (не надо, иначе невозможно получать почту с адресов,
сервер которых возвращает "SERV FAILED")
- rfc1413_hosts = (какой ident в наше время?)
- rfc1413_query_timeout = 0s
- ignore_bounce_errors_after = 7d (надо успеть посмотреть что там)
- timeout_frozen_after = 14d
- accept_8bitmime = true
- acl_smtp_auth = auth
- acl_smtp_data = check_data
- acl_smtp_etrn = etrn
- acl_smtp_expn = expn
- acl_smtp_vrfy = vrfy
- admin_groups = exim
- auth_advertise_hosts =
- check_log_inodes = 10
- check_log_space = 10M
- check_spool_inodes = 1000
- check_spool_space = 100M
- delay_warning = 8h:24h:48h
- #dns_again_means_nonexist =
- freeze_tell = свой адрес (извещения о замороженных письмах на время отладки)
- helo_accept_junk_hosts = * (спамеров фильтруется мало, а раздолбаев -
много)
- #helo_try_verify_hosts = * (верификацию rDNS надо делать позже)
- host_reject_connection = (это невежливо)
- hostlist dialup_hosts = /usr/exim/dialup_hosts
- hostlist unwelcome_hosts = /usr/exim/unwelcome_hosts
- hostlist open_relay_hosts = /usr/exim/open_relay_hosts
- local_interfaces = 127.0.0.1.25 : основной-ip-адрес.25 : запасной-канал.25
(чтобы не проверял виртуальные интерфейсы)
- log_selector = +incoming_interface +incoming_port +delivery_size +smtp_confirmation +smtp_protocol_error +smtp_syntax_error +received_recipients +sender_on_delivery -retry_defer
- message_body_visible = 30000
- message_size_limit = 10M
- move_frozen_messages = true (только после отладки!, в 4.0.3 пропал!)
- recipients_max = 100
- recipients_max_reject = true
- smtp_accept_max = 100
- smtp_accept_max_per_connection = 100
- smtp_accept_max_per_host = 10
- smtp_accept_reserve = 5
- smtp_connect_backlog = 50
- smtp_enforce_sync = false (глупая проверка - спамеров попадается мало,
а суетливых администраторов много)
- smtp_ratelimit_hosts = *
- smtp_ratelimit_mail = 2,0.5s,1.05,4m (65 секунд задержки на сотом)
- smtp_ratelimit_rcpt = 4,0.25s,1.03,4m (5 секунд задержки на сотом)
- smtp_reserve_hosts = +local_network : +modems_pool
- system_filter = ???
- system_filter_directory_transport = ???
- system_filter_file_transport = ???
- system_filter_pipe_transport = ???
- system_filter_reply_transport = ???
- секция acl
- auth:
- rcpt:
# на эти адреса принимать все
accept local_parts = postmaster : abuse : spam-trap
domains = +local_domains : +relay_to_domains : +our_domain_with_mail : +our_domain_without_mail
# адреса вида no@no.no и otvet@po.telefonu
deny senders = /usr/exim/unwelcome_senders
message = Spam is bad. Dont do it. (uws)
# рассылки, не принимающие отлупов
deny senders = /usr/exim/unaccept_senders
message = Sorry, we dont accept mail from $sender_address, because they dont accept mail from us!
# с некоторых хостов надо принимать почту даже при отсутствии rDNS
# некоторые клиенты хотят получать все письма
deny !hosts = /usr/exim/double_check_exclusion
!recipients = /usr/exim/friendly_to_double_check_error
!verify = reverse_host_lookup
message = Your mail server $sender_fullhost has DNS error.\nPlease consult with Your Internet Service Provider.
# не принимать почту с диалап и приравненных к ним
# некоторые клиенты хотят получать все письма
deny hosts = +dialup_hosts
!recipients = /usr/exim/friendly_to_dialup_hosts
message = Sorry, but we dont accept mail from dialup and so on. Please, use mail server of Your ISP
# не принимать почту с открытых релеев
# некоторые клиенты хотят получать все письма
deny hosts = +open_relay_hosts
!recipients = /usr/exim/friendly_to_open_relay_hosts
message = Sorry, but we dont accept mail from open relay.
# эти мне просто не нравятся (сетки спамеров, разработчиков спам софта и др.)
# некоторые клиенты хотят получать все письма
deny hosts = +unwelcome_hosts
!recipients = /usr/exim/friendly_to_unwelcome_hosts
message = We dont accept mail from this host.
# проверка существования почтового ящика
deny domains = deol.ru : company.ru
!local_parts = +forward_deol : +forward_deol_out : +alias_deol : lsearch;/var/spool/exim/mailboxlist.deol
message = User unknown
deny domains = +our_domain_without_mail
message = User unknown
# прием локальной почты не через SMTP)
accept hosts = :
#deny local_parts = ^.*[/|] # ^.*[@%!/|] кажется слишком суровым:
# сюда попадает X.400 (/), UUCP (!) и всякие почтовые офисы (%)
# проверка валидности адреса отправителя
require verify = sender
# обработка только своей почты
accept domains = +relay_to_domains : +our_domain_with_mail
accept hosts = +relay_from_hosts : +modems_pool : +local_network
deny message = There are no open relay here!
- check_data:
- accept senders = (список отправителей, почту которых не проверять)
- deny condition = ${if match {$message_body}{<iframe src=3Dcid:.+TVqQAAMAAAAEAAAA}{yes}{no}}
message = virus Klez ?
- множество "deny condition = ${if match {имя-переменной}{регулярное-выражение}{yes}{no}}" и "message = текст-сообщения", переменные:
- $message_body
- $message_body_end
- $header_Received
- $header_Subject
- etrn:
- expn:
- vrfy:
- маршрутизаторы:
- входящая почта пересылается на pop-сервер
pop:
driver = accept
domains = +our_domain_with_mail
transport = smtp_to_pop
no_more
- исходящая почта
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 127.0.0.0/8
no_more
- user_forward: закоментировать полностью
- транспорты
- секция retry: для каждого внутреннего сервера добавить правило:
имя-хоста refused F,2w,5m
- тестируем работоспособность: /usr/exim/bin/exim -bV
- тестируем маршрутизацию: /usr/exim/bin/exim -bt адрес
- тестируем отправку почты по SMTP: /usr/exim/bin/exim -v адрес
(надо ввести поля From:, To:, Subject:, пустую строку, тело письма, ^D)
- обеспечение автоматического запуска:
- сделать /etc/sysconfig/exim из /etc/sysconfig/sendmail
- сделать /etc/rc.d/init.d/exim из /etc/rc.d/init.d/sendmail
(только reload сделать через HUP)
- насоздавать символьных ссылок rc0.d/K30exim, rc1.d/K30exim,
rc2.d/S80exim, rc3.d/S80exim, rc4.d/S80exim, rc5.d/S80exim
rc6.d/K30exim
- дырка в ipchains
- дырка в IOS ACL внешнем
- дырка в IOS ACL для клиентов
- замена DNS MX
- подождать 3 дня и закрыть старый сервер
- обеспечение регулярного получения списка почтовых ящиков домена
через SSH (/var/spool/exim/mailboxlist.имя-домена
- !замена sendmail
Существенные изменения из ChangeLog и NewStuff, кроме исправлений ошибок:
- 4.71
- встроенная поддержка DKIM
- поддержка DCC с помощью dccifd
- переменные $spam_score, $spam_bar и $spam_report доступны в момент отправки
- новый оператор расширения ${randint:...} порождает случайное целое (не является криптографически сильным)
- 4.68
- опция client_condition в аутентификаторах позволяет пропустить неподходящий аутентификатор
- ключ "-Mvc ид-сообщения" выводит сообщение на stdout
- опция /noupdate в условии ACL ratelimit (статистика не обновляется)
- переменная $max_received_linelength
- модификаторы списка хостов: +ignore_defer и +include_defer
- опция queue_only_load_latch (true), если нет и queue_only_load, то загрузка перевычисляется
по каждому сообщению в соединении
- новый ACL smtp_notquit_acl для сессий, не выдавших QUIT (для сбора статистики);
переменная $smtp_notquit_reason содержит причину завершения
- для просмотров MySQL и PostgreSQL можно задать индивидуальные параметры для каждого сервера
- опция message_body_newlines
- 4.67
- селектор отладочной печати smtp_no_mail (отсутствие команды MAIL в соединении)
- новые суффиксы в списке dnslists: '==' и '=&' (вызывают выдачу всех значений
вместо любого подходящего
- гибкое управление параметрами GnuTLS
- опция disable_fsync (требуется ENABLE_DISABLE_FSYNC во время компиляции)
- переменная $smtp_count_at_connection_start
- no_pipelining
- переменные $sending_ip_address и $sending_port
- вычисление helo_data в транспорте smtp происходит после соединения
- оператор ${rfc2047d: декодирует строку из формата RFC 2047
- селектор отладочной печати pid (вставляет номер текущего процесса в журнал)
- control = no_delay_flush и control = no_callout_flush (по умолчанию буфер теперь
сбрасывается)
- итераторы forany и forall при вычислении
- глобальная опция dsn_from позволяет управлять значением "From:" в генерируемых сообщениях
- опция hosts_avoid_pipelining транспорта smtp
- ключ -I утилиты exigrep (по умолчанию поиск вне зависимости от регистра)
- ключ -v утилиты exigrep инвертирует результат поиска
- модификатор ACL continue (для использования побочного эффекта вычисления)
- разделителем списка можут быть любой символ меньший 0x1f и 0xff
- опция host_find_failed в маршрутизаторе manualroute может иметь значение ignore
- 4.66
- опция disable_ipv6
- переменная $reply_address теперь содержит недекодированный заголовок
- число ACL переменных увеличено до 20
- переменные аутентификаторов переименованы в $auth1, $auth2, $auth3
- опция /no_tell для control=freeze
- селектор отладочной печати sender_verify_fail
- dns_check_names_pattern по умолчанию отныне позволяет символы "/"
в именах (для PTR)
- опция client_ignore_invalid_base64 в аутентификаторе plaintext
- транспорт autoreply добавляет заголовок References:
- опция authenticated_sender_force в транспорте smtp
- ${time_eval для преобразования времени в секунды
- control=allow_auth_unadvertised
- модификатор ACL add_header (предлагается отказаться от message в warn)
- в правилах секции retry можно использовать mail_4xx,
data_4xx, lost_connection, tls_required
- ключи exicyclog: -l, -k
- ${readsocket поддерживает TCP/IP сокеты в формате "inet:хост:порт"
- опция lockfile_mode определяет права (0600) доступа к файлам блокировки,
создаваемым транспортом appendfile
- опция maildirfolder_create_regex транспорта appendfile
- eximstats собирает статистику про SpamAssassin
- опция filter_prepend_home маршрутизатора redirect
- новая секция ACL acl_not_smtp_start (нельзя использовать для отбрасывания
сообщения - только для управления control=suppress_local_fixups)
- код ошибки SMTP можно устанавливать, в начале сообщения в модификаторе
message: "nnn [n.n.n] текст сообщения"; опция forbid_smtp_code в маршрутизаторе
- модификатор message можно использовать в командах accept и discard
- параметр referrals=[no]follow просмотрщика LDAP
- ключи exipick: --freeze, --thaw, --reverse, --random, --size, --sort,
--unsorted, --not
- переменные ACL могут иметь произвольные имена, начинающиеся с
"acl_c" (переменные соединения) или "acl_m" (переменные сообщения);
шестой символ должен быть цифра или "_"
- модификатор ACL log_reject_target указывает журнал
- аутентификатор dovecot
- переменная $message_headers_raw
- в DNSBL можно указывать 2 имени через запятую: второе используется для фильтрации,
а первое для извлечения текста сообщения из DNS ресурса TXT
- опция server_condition у всех аутентификаторов
- опции командной строки: -Mset, -bem
- опция address_retry_include_sender в транспорте smtp
- PCRE 6.7
- операторы and, or, xor, not и shift в ${eval
- переменная $interface_address переименована в $received_ip_address
- переменная $interface_port переименована в $received_port
- 4.60
- селектор отладочной печати acl_warn_skipped
- check_rfc2047_length
- 4.54
- изменился алгоритм обработки сочетания helo_try_verify_hosts и "verify = helo"
- поддержка Yahoo DomainKeys
- изменился формат файла gnutls-param, теперь его можно создавать вручную
утилитой certtool (если exim считает, что в файле лежит мусор, то он
перезаписывает его в новом формате)
- вызов внешних функций (EXPAND_DLFUNC=yes при компиляции;
вызов - ${dlfunc; запрет в маршрутизаторе - forbid_filter_dlfunc=true)
- переменная $received_time
- CRL для SSL
- тип ACL acl_not_smtp_mime для сканирования MIME в не-SMTP сообщениях
- возможность переопределить макро ("==" вместо "=" )
- опции маршрутизатора sieve_useraddress и sieve_subaddress для передачи фильтру
- переменная $message_linecount (в заголовке и теле; см. $body_linecount)
- поддержка Client SMTP Authorization (verify=csa, $csa_status, dns_csa_use_reverse,
dns_csa_search_limit,)
- control = fakedefer
- eximstats -xls -show_rt -show_dt
- PCRE 6.2
- control = submission/name= позволяет подставлять значение в заголовок Sender:
- control = fakereject
- условие ratelimit (в отличие от smtp_ratelimit_* действует на все соединения
от хоста)
- поддержка SPF ($spf_result)
${lookup {john@company.com} spf{192.168.0.1}}
- auto_thaw не применяется к замороженным отлупам
- поддержка BATV (${prvs, ${prvscheck)
- опции, управляющие попытками привязаться к занятому кем-то порту:
daemon_startup_retries = 9; daemon_startup_sleep = 30s
- ${if match_ip
- селектор отладочной печати "+all" теперь не включает "+memory"
- опция success_on_redirect команды verify
- поддержка SQLite (${lookup sqlite; ${quote_sqlite; sqlite_lock_timeout;
LOOKUP_SQLITE=yes при сборке)
- переменная $message_id переименована в $message_exim_id
- расширение IGNOREQUOTA протокола LMTP: опция ignore_quota транспорта lmtp
и опция lmtp_ignore_quota транспорта smtp
- можно задавать номер порта вместе с именем или IP адресом
(host1.tld::1225, dom1.tld/mx::1225) в
списках хостов (маршрутизаторы manualroute, queryprogram;
опции hosts и fallback_hosts транспорта smtp)
- оператор "%" в ${eval:}
- новое условие verify = not_blind
- новое условие control = suppress_local_fixups
- селектор отладочной печати unknown_in_list
- переменная $smtp_command
- модификатор H в секции повторений (аналогично G, но вносит элемент случайности)
- 4.50
- опция сборки - CONFIGURE_GROUP
- опция /retain_sender для ACL control=submission
- значение address_data после верификации отправителя доступно в
$sender_address_data
- опции маршрутизатора redirect: forbid_sieve_filter, forbid_exim_filter
- опция connect=время callout
- переменные $sender_verify_failure, $recipient_verify_failure
- ключ запуска -dd (отладка сервера)
- новые типы записей в механизме поиска dnsdb: zns, mxh (имена без приоритетов)
- механизм поиска dnsdb может обрабатывать список доменов или адресов
- расширение ACL dnslists: может обрабатывать список доменов или адресов
- селектор журнала: queue_time_overall
- переменная $smtp_active_hostname
- опция hosts_max_try_hardlimit для транспорта smtp
- переменная $host_lookup_deferred
- ${quote_local_part (для обработки имён пользователеё, содержащих пробелы)
- 4.44
- опция maxwait для callout
- опция never_mail для транспорта autoreply
- опция mua_wrapper (режим отсылки писем из командной строки на
smarthost, без складывания в очередь и прочих излишеств)
- опция mx_fail_domains, srv_fail_domains для маршрутизатора dnslookup
- ACL warn может добавлять заголовок в начале или после всех Received:
- опция rcpt_4xx в правилах повторения отправки (как в форме rcpt_4xx,
так и для конкретных кодов ошибки: rcpt_43x или rcpt_432)
- опция postmaster_mailfrom=xxx для callout
- опция mailfrom=xxx для callout (verify=header_sender)
- ${str2b64:
- аутентификатор cyrus_sasl
- опция tls_on_connect_ports
- опция acl_smtp_predata
- модификатор ACL control = submission
- отдельные правила повторения для отдельных отправителей (например,
пустого)
- control = enforce_sync, control = no_enforce_sync
- control = caseful_local_part, control = caselower_local_part
- hosts_connection_nolog (не записывать в журнал сообщения о соединении
с указанных хостов)
- ACL для QUIT (acl_smtp_quit, только accept или warn)
- mailbox_size и mailbox_filecount для appendfile
- ACL: control = no_multiline_responses
- 4.40
- утилита exipick
- опция domainlist_cache
- опция use_postmaster для callout
- PCRE 5.0
- $recipients доступен в ACL до получения DATA
- ${base62d:
- $body_zerocount, $recipient_data, $sender_data
- операторы сравнения строк lt, lti, le, lei, gt, gti, ge, gei
- элемент +ignore_unknown в список хостов
- селектор журнала: outgoing_port
- 4.34
- $recipient_data, $sender_data
- /ignore=список-ip для @mx_any, @mx_primary, @mx_secondary
- условия подстановки match_domain, match_address, match_local_part
- опция smtp_active_hostname
- тип поиска iplsearch
- селектор журнала ident_timeout, tls_certificate_verified
- опция tls_require_ciphers
- exinext -C -D
- _cache в именованных списках
- ${time_interval:xxxxx}
- селектор журнала queue_time и deliver_time
- опция use_sender для callout
- PCRE 4.5
- утилита exipick
- опция tls_crl
- ${eval10 (рассматривать все числа как десятичные)
- опция qualify_domain для маршрутизатора redirect
- опция write_rejectlog
- селектор журнала +return_path_on_delivery
- host_lookup_order (bydns:byaddr)
- ${quote_local_part
- exigrep -t
- $received_count
- условия timeout_A, timeout_MX, timeout_connect_A,
timeout_connect_MX в правилах повтора
- расширена опция port для транспорта smtp
- модификатор ACL logwrite
- $local_user_uid, $local_user_gid
- опция транспортов transport_filter_timeout
- From:, Date:, Message-Id: генерируются только для локальных
сообщений
- smtp_max_synprot_errors (3)
- $mailstore_basename
- 4.24
- PCRE 4.4
- опция tcp_nodelay
- оператор eqi (сравнение независимо от регистра)
- bounce_return_body и bounce_return_size_limit
- isip, isip4, isip6 в ${if
- $acl_xx передаются из ACL в маршрутизаторы и транспорты
- тип поиска nwildlsearch (wildlsearch, но без вычисления
строк для ключей в файле)
- селектор журнала smtp_incomplete_transaction
- опция tls_remember_esmtp
- dnslists = a.b.c!=n.n.n.n
- eximstats -nt
- headers_charset
- RFC 3028
- операция & (битовая маска) для dnslists
- опция hosts_avoid_esmtp транспорта smtp
- ключ /MX в маршрутизаторы manualroute и query program
- добавляется заголовок Auto-Submitted: в порождаемые сообщения
- опция транспортов rcpt_include_affixes
- опция queue_only_override
- опция syslog_duplication
- аутентификация saslauthd
- опция extra_local_interface
- опция process_log_path
- 4.20
- переход на PCRE 4.2
- при использовании поискового механизма PostgreSQL возможно указывать
команды insert, update и delete - в качестве результата возвращается
число затронутых строк
- новый ACL: acl_smtp_helo
- опции syslog_facility и syslog_processname
- новое действие discard в ACL
- 4.14
- доступ к PostgreSQL с помощью Unix сокетов
- smtp_max_unknown_commands позволяет задавать число непонятных
команд, вызывающих разрыв соединения (по умолчанию - 3; раньше было 5)
(чем отличается от smtp_accept_max_nonmail?)
- условный пропуск частей конфигурационного файла с помощью
.ifdef, .ifndef, .elifdef, .elifndef, .else и .endif; в качестве
условия используется имя макро (несколько имен макро - OR)
- в ACL для MAIL, RCPT и DATA разрешается использоваит проверку
"verify = sender"
- при использовании поискового механизма MySQL возможно указывать
команды insert, update и delete - в качестве результата возвращается
число затронутых строк
- новое условие маршрутизатора: address_test; устанавливается при
запуске с ключом -bt
- новая опция сервера аутентификации: server_advertise_condition;
если установлена в 0 (no, false), то данный механизм аутентификации
не афишируется и не воспринимается
- опция authenticated_sender транспорта smtp позволяет использовать его
в режиме LMTP для отравки сообщений в субфолдеры Cyrus IMAP
- новая операция вычисления строк: ${rfc2047:строка} - MIME-кодирование
(только ISO-8859-1)
- новая операция вычисления строк: ${from_utf8:строка} - преобразование
из UTF8 в ISO-8859-1; непонятные символы преобразуются в подчеркивания
- слегка изменился алгоритм образования Message-ID
- ключ -bnq подавляет дополнение неполных адресов в локальных сообщениях
- селектор отладки +expand позволяет отлаживать вычисление строк
- переход на PCRE 4.0
- новая операция вычисления строк: ${hex2b64:строка} - преобразует
шестнадцатеричную строку в base64
- переменная $tod_zulu содержит время (UTC) в формате ISO 8601:
20030221154023Z
- новая операция вычисления строк: ${strlen:строка}
- новая операция вычисления строк: ${stat:строка} - выполняет системный
вызов stat() и возвращает результат в виде последовательности
имя=значение (mode, smode, inode, device, links, uid, gid, size,
atime, mtime, ctime)
- переменные для передачи информации между этапами обработки ACL
и модификатор ACL set для их установки (при установке символ "$"
опускается)
- от $acl_c0 до $acl_c9 существуют на время соединения
- от $acl_m0 до $acl_m9 существуют на время обработки сообщения
(сбрасываются по командам MAIL, RSET, EHLO, HELO и при установке
TLS)
- опция pipelining_advertise_hosts позволяет задать список хостов,
которым сообщается о возможности PIPELINING (по умолчанию - "*")
- опция allow_uit8_domains прозволяет использовать utf8 в именах доменов
(dns_check_names_pattern надо тоже поменять или отменить)
- новые команды вычисления строк: $rh_... и $rheader_... аналогичны
$h_... и $header_..., но не удаляет передние и задние пробелы
- опция smtp_accept_max_nonmail_hosts позволяет задать список хостов,
для которых действует ограничение smtp_accept_max_nonmail
- селектор журнализации host_lookup_failed (по умолчанию включен)
позволяет отменить выдачу в журнал сообщений о невозможности
определить имя хоста по адресу или адрес по имени
- опция header_maxsize позволяет задать максимальный размер заголовка
(по умолчанию - HEADER_MAXSIZE, т.е. 1МБ)
- опция header_line_maxsize позволяет задать максимальную длину
отдельной строки заголовка (после слияния строк продолжения)
- 4.11
- опция smtp_return_error_details позволяет exim выдавать подробное
сообщение клиенту
- квалификатор verify = sender/callout/check_postmaster
позволяет проверить наличие не только адреса отправителя, но и адреса
postmaster в домене отправителя
- длинные сообщения (например, от message в ACL) автоматически
режутся на строчки
- ${quote_ldap: разделился на ${quote_ldap: и ${quote_ldap_dn:
- переменная $ldap_dn
- изменились правила использования hosts_max_try в smtp-транспорте
- опция quota_directory для транспорта appendfile
- макрорасширения применяются к физическим, а не логическим строчкам
как ранее, до обработки комментариев и .include; теперь макро
может использоваться внутри вложений
- команды AUTH и STARTTLS воспринмаются только, если их возможность
была продекларирована в ответе на EHLO
- новые поля отладочной печати: timestamp и pid
- новая утилита exiqgrep (exim -bpu | grep)
- оператор вычисления контрольной суммы "${sha1:" в дополнение к
"${md5:" (пароль - 40 шестнадцатеричных символов) и ${sha1}
в crypteq
- поддержка GnuTLS как альтернативы OpenSSL
- транспорт pipe может объявить все ошибки временными ("temp_errors = *")
- транспорт lmtp может отправлять сообщения на Unix сокеты
- новый тип подстановки: ${readsocket{имя-сокета}{строка-запроса}[{timeout}{\n}{сообщение-об-ошибке}]}; опция forbid_filter_readsocket для маршрутизатора
redirect
- можно задавать пустой errors_to в маршрутизаторах (сгенерированное
сообщение об ошибке выбрасывается)
- опция disable_logging для маршрутизаторов и транспортов
- аутентификация для NTLM (SPA) сервера в дополнение к клиенту
- опция smtp_accept_max_nonmail позволяет задавать максимальное число
неправильных команд в сессии (по умолчанию - 10, не учитываются
RSET, HELO/EHLO, STARTTLS)
- кеширование проверки методом callout (имя БД - callout);
изменился формат
verify=sender/callout=список-параметров, который поглотил
/callout_defer_ok
(параметр defer_ok) и /check_postmaster (параметр postmaster);
в качестве параметра можно задавать размер timeout и no_cache;
добавлены
опции callout_negative_expire (2h) и callout_positive_expire (24h),
callout_domain_negative_expire (3h) и callout_domain_positive_expire
(7d); параметр random позволяет проверить (и кешировать
результат) не принимает ли удаленный сервер любой адрес;
опция callout_random_local_part позволяет задать формат
"случайного" адреса
- log_file_path теперь позволяет задавать метапеременную %D, которая
замещается на текущую дату в формате yyyymmdd (переключение на
новые файлы происходит в полночь; panic не переименовывается);
введена переменная $tod_logfile
- добавлена новая форма hash, length, nhash, and substr, которая
позволяет предварительно вычислять параметры (например,
${substr{3}{4}{abcdcdef}} вместо ${substr_3_4:abcdef}
- переход на Berkeley DB 4.1
- опции randomize и no_randomize для manualroute
- операция ${hmac{тип-хеширования}{секрет}{text}}, где тип-хеширования
может быть md5 или sha1, позволяет получить трудноподделываемую
контрольную сумму
- опция log_timezone позволяет записывать часовой пояс в журналы;
переменная $tod_zone содержит смещение часового пояса;
exigrep, eximstats, eximon обрабатывают новый формат
- переменная $load_average содержит значение средней загрузки,
умноженное на 1000
- новая опция router_home_directory
- опция message_id_header_domain позволяет задавать доменную часть
Message-Id, если он отсутствует во входном сообщении
(ранее и по умолчанию - имя хоста)
- изменился способ определения IP-адреса в manualroute и queryprogram
- поправлен достававший меня глюк с $dnslists_text в журнале
- переменные $rcpt_defer_count (число получателей, вызвавших 4xx)
и $rcpt_fail_count (число получателей, вызвавших 5xx)
- селектор rejected_header опции log_selector позволяет отключать
вывод заголовков отвергнутого письма в журнал
- опция маршрутизатора cannot_route_message позволяет задать текст
сообщения об ошибке ("Unrouteable address")
- новое действие drop в ACL аналогично deny, но закрывает соединение
после сообщения об ошибке
- новое действие defer в ACL вызывает выдачу сообщения класса 4xx
- модификатор delay в ACL вызывает задержку перед проверкой
- модификатор "control = freeze" в ACL вызывает "заморозку" входного
сообщения
- модификатор "control = queue_only" в ACL помещает сообщение в очередь
вместо его немедленной обработки
- добавлена переменная $host_data
- новые опции ACL: acl_smtp_connect, acl_smtp_mail, acl_smtp_starttls,
acl_not_smtp (для сообщений, передаваемых в неинтерактивном
режиме)
- добавлена переменная $authentication_failed (в дополнение к
$sender_host_authenticated)
- расширен API local_scan()
- новый поисковый механизм: wildlsearch - последовательно просматривает
файл как lsearch, но ключ интерпретируется как шаблон (* - подстрока,
^ - регулярное выражение)
- ключ в lsearch может содержать маскированнные пробелы и другие
специальные символы
- новый поисковый механизм: passwd - возвращает строку из /etc/passwd
- новая переменная $tls_certificate_verified
- ${eval:выражение} позволяет производить простые арифметические
вычисления при вычислении строк: 4 арифметических действия над
целыми числами (десятичные и шестнадцатеричные) и скобки
- 4.10
- добавлена переменная $rcpt_count, которая содержит число полученных
команд RCPT (отличается от $recipients_count!)
- добавлена переменная $pid
- опция message_logs (по умолчанию - true) позволяет отключить запись
отдельных журналов сообщений в msglog
- переменная $acl_verify_message содержит текст, заданный модификатором
message в ACL
- 4.05
- tls_tempfail_tryclear = true
- условие condition в ACL не равное 0/1, true/false или yes/no вызывает
теперь временное откладывание сообщения (defer) вместо отбрасывания
- 4.03
- включение в dnslists строк "+include_unknown", "+exclude_unknown" (по
умолчанию), "+defer_unknown" позволяет гибче настраивать поведение
exim в случае ошибок (timeout) DNS BL
- опция local_scan_timeout (по умолчанию - 5 минут)
- ключ -tls-on-connect позволяет обслуживать устаревших клиентов, не
умеющих выдавать STARTTLS (предполагается использование выделенного
порта вместо SMTP и запуск exim из inetd/xinetd)
- поддержка демона pwcheck (библиотека Cyrus SASL),
позволяющего процессам без полномочий root
проверять пароли из /etc/shadow (для команды AUTH)
- 4.02
- helo_allow_chars = "_" (позволяет расширить список разрешенных в HELO/EHLO символов)
- 4.01
- квалификатор verify = sender/no_details в ACL
- ключ -oP позволяет явно задать имя файла, в который записывается pid
|
Bog BOS: exim: старые материалы
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru