8.12.11-0.31 оптимизировано использование K строк macro, arith и dns - HACK(`cfhead') добавлена проверка использования в HELO адресов локальных интерфейсов и доменов (из $w) - HACK(`check_helo') изменены квалификаторы для проверки helo и адресов хостов полей Received - HACK(`check_received') теперь используются квалификаторы ReceivedHelo, ReceivedFrom, ReceivedConnect регулярные выражения из HACK(`precheck_addresses') перенесены в HACK(`cfhead') для публикации анонсов, сообщений об ошибках и недоработках, обсуждения предложений по улучшению функциональности набора конфигурационных файлов создан список рассылки sendmail-conf@mta.org.ua: http://www.mta.org.ua/mailman/listinfo/sendmail-conf 8.12.10-0.30 переделана система задания параметров сборки sendmail.mc используется пара конфигурационного файла по умолчанию и пользовательского конфигурационного файла часть общих параметров выделена в HACK(`cfhead') (выбший `defines') параметры конфигурации проверяются не на непустое значение, а на существование значения и на само значение FEATURE(`delay_checks') подключается с параметром `FRIEND' для работы со SPAM FRIEND и SPAM HATER реализовано создание K строки user, даже если не используется LUSER_RELAY введена переменная confDEMIME_BODY для включения/исключения флага 9 локального mailer'а если получатель один, то его адрес вставляется в поле X-Envelope-To добавлено использование milter'ов: clamav-milter (clamd) amavis-milter (amavisd) relaydelay (greylisting) добавлена поддержка проверки нелокальных получателей с помощью check_mail_address.pl - HACK(`verify_recipient') добавлена проверка резолвинга аргумента команды HELO - HACK(`check_helo_fqdn') переименованы параметр и hack для проверки корректности поля Content-Transfer-Encoding: confCHECK_BROKEN_CHARSET переименован в confCHECK_TRANSFER_ENCODING HACK(`check_broken_charset') переименован в HACK(`check_transfer_encoding') реализована проверка фиктивных локальных сообщений - HACK(`check_fake_local') реализована проверка фиктивных внутренних сообщений - HACK(`check_fake_internal') параметры для relay_based_on_MX, check_helo, check_message_id переделаны в виде списков отвержение писем с локальным доменом в envelope from, если local_part не найдена в passwd, aliases или virtusertable - HACK(`check_fake_local_mail') реализован следующий механизм проверки FQDN в HELO - HACK(`check_helo_fqdn'): 1. поизводится получение A записи аргумента команды HELO 2. полученная A запись сравнивается с A записью рилея 3. если A записи равны, проверка оканчивается успешно 4. если A записи не равны, сравниваются доменные части HELO и PTR записи рилея 5. если они не равны, возвращается сообщение об ошибке 6. если доменные части HELO и PTR записи рилея равны, то сравниваются номера сетей класса C полученной ранее A записи HELO и A записи рилея 7. если номера сетей равны (A запись HELO и A запись рилея находятся в одной сети класса C), то проверка оканчивается успешно 8. в противном случае возвращается сообщение об ошибке добавлен механизм исключений для исходящих и аутентифицированных сообщений при проверке соответствия кириллических чарсетов и Content-Transfer-Encoding - HACK(`check_transfer_encoding') проверка dial-up HELO перенесена из check_relay_dialup в check_helo реализована проверка header From - HACK(`check_from') реализована проверка header To - HACK(`check_to') 8.12.9-0.27 переделано подключение milter'ов HACK(`add_milter') параметры фильтров указываются в задвоенных открывающихся и закрывающихся кавычках после последнего добавленного milter'а необходимо указать HACK(`milter') без параметров: HACK(`add_milter', `backup-smf.pl', ``S=inet:3002@127.0.0.1, T=C:1m;S:1m;R:1m;E:1m'') HACK(`add_milter', `drweb-filter', ``S=inet:3001@127.0.0.1, F=T, T=S:240s;R:240s;E:1h'') HACK(`add_milter') сделано все это для упрощения подключения milter'ов исходя из значения переменных конфигурации: ifdef(`confDRWEB_ENABLED',` HACK(`milter', `drweb-filter', ``S=inet:3001@127.0.0.1, F=T, T=S:240s;R:240s;E:1h'') ') HACK(`milter') реализована проверка рилея на принадлежность к сетям dial-up & dsl с помощью регуряного выражения HACK(`check_relay_dialup') реализовано отвергание нелокальных сообщений с внутренними доменами в MAIL FROM или RCPT TO HACK(`check_fake_internal') internal домены должны быть указаны в access_db с квалификатором LocalDomain: LocalDomain:localdomain YES LocalDomain:@subdomain.localdomain YES домен localhost считается внутренним автоматически без записи в access_db 8.12.9-0.26 реализована работа с несколькими очередями - HACK(`queuegroup') переработан HACK(`check_helo') реализовано опциональное исключение проверки для исходящей почты реализована проверка HELO, состоящего из одной точки реализована опциональная проверка наличия точки в HELO реализована опциональная проверка поддельных HELO доменов hotmail.com, yahoo.com, etc реализовано ограничение использования LUSER_RELAY HACK(`luser_relay_restrict') переработан HACK(`check_compat') добавлено запрещение приема почты от адресов с определенными mailbox'ами добавлено запрещение приема почты от с указанных доменов с поддоменами переделана встречная проверка существования адреса отправителя: HACK(`check_mail_from_loopback') переименован в HACK(`verify_sender') параметр confCHECK_LOOPBACK_MAIL_FROM заменен на confVERIFY_SENDER параметр confDONT_CHECK_MAIL_FROM_AUTH заменен на confVERIFY_SENDER_SKIP_AUTH параметр confDONT_CHECK_MAIL_FROM_EXCLUDES заменен на confVERIFY_SENDER_SKIP_EXCLUDES в access_db квалификатор LoopbackCheck переименован в VerifySender параметр confDONT_CHECK_MAIL_FROM_OUTGOING заменен на confVERIFY_SENDER_SKIP_OUTGOING реализована гибкая система исключения проверок поля Message-Id реализована проверка адресов отправителей на предмет отсылки сообщений через proxy сервера HACK(`check_proxy_user') реализована проверка рилеев с помощью регулярного выражения на принадлежность к dsl/dial-up сетям HACK(`check_relay_dial_up') для исключения рилея из данной проверки надо описать его (или зону, в которую он входит) в access_db в виде: ConnectDialUp:hostname OK реализована проверка соответствия Content-Type и Content-Transfer-Encoding HACK(`check_broken_charset') отвергаются сообщения с кириллическими чарсетами и 7-битным кодированием реализованы исключения для указанных MUA реализована выдача определенных сообщений об ошибке в зависимости от MUA реализовать отвержение фиктивных локальных писем HACK(`check_fake_local'): пришедших не из trusted сетей, с envelope from = envelope to, домен отправителя/получателя находится в $w trusted сетями считаются сети/хосты, прописанные в access_db с квалификтором Connect (и без него) и значением RELAY отличные квалификатор и значение в access_db можно задать в виде парамеров: HACK(`check_fake_local', `! TrustedNets', `Ok') реализована проверка поля Subject сообщений в access_db HACK(`check_subject') реализована проверка поля Reply-To HACK(`check_reply_to'): отвергаются письма: от нелокальных отправителей, если среди получателей есть локальные пользователи и в Reply-To указан локальный домен с пустым envelope from и полем Reply-To поле Reply-To не соответствует $+@$+ первые две проверки не производятся для аутентифицированных пользователей 8.12.8-0.25 для обеспечения доступа к макросам sendmail из почтовых фильтров откорректированы значения: confMILTER_MACROS_CONNECT (добавлено v, Z) confMILTER_MACROS_HELO (добавлено {verify}) confMILTER_MACROS_ENVRCPT (добавлено u, r) реализовано исключение из некоторых проверок для авторизованных отправителей реализована проверка поля Date - HACK(`check_date') реализоновано исключение для сообщений, отосланных из софта, написанного на VC++6.0, мать его... реализована проверка поля Mailing-List - HACK(`check_mailing_list') реализована проверка поля Organization HACK(`check_organization') реализована проверка поля X-Mailer HACK(`check_mailer') реализована проверка корректности поля Message-Id и проверка наличия поля Message-Id для входящих сообщений - HACK(`check_message_id') реализована проверка поля Subject - HACK(`check_subject') реализованы разнообразные мелкие проверки различных полей заголовка - HACK(`check_misc') реализованы автоматические запросы на подтверждение приема сообщения - HACK(`return_receipt') реализована проверка хостов из полей Received в access.db - HACK(`check_received') реализована проверка хостов из полей Received в DNS Black List'ах - HACK(`check_received_dnsbl') реализовано использование TXT записей, возвращаемых DNS Black List'ами, вместо указанных в конфиге сообщений об ошибках для данного dnsbl - HACK(`enhdnsbl') реализован аналог relay_based_on_MX, проверяющий принадлежность best MX домена получателя на принадлежность к trusted сетям, описанным в $R или access_db - HACK(`relay_based_on_MX') реализована проверка фиктивности DSN (MAIL FROM:<>) - HACK(`check_DSN') реализована принудительная аутентификация при отсылке писем с локальными или виртуальными доменами в MAIL FROM - HACK(`auth_for_local') может применятся для предотвращения отсылки спама с указанием в MAIL FROM адреса из того же домена, который указан в RCPT TO реализовано исправление ситуации, при которой не работала проверка адреса рилея в access_db, указанного в виде PTR записи хоста или вышестоящего домена, и отсутствии A записи для PTR записи рилея (в этом случае в макросе ${client_name} находится не значение PTR записи адреса, сохраненного в макросе ${client_addr}, а значение ${client_addr} в квадратных скобках) - HACK(`check_relay_forged') реализована проверка HELO/EHLO - HACK(`check_helo') 8.12.7-0.24 реализована SMTP аутентификация - HACK(`smtp_auth') реализовано шифрование SMTP трафика (STARTTLS) - HACK(`starttls') реализована проверка отправителей в DNSBL и RFC IGNORANT реализована проверка пар "отправитель" / "получатель" в access_db - HACK(`check_compat') реализовано разделение access_db на несколько частей HACK(`access_db_sequence') реализована проверка резолвинга рилея (прямая и реверсная зоны) - HACK(`check_relay_resolve') реализована проверка MAIL FROM - HACK(`check-mail-from'): возможна проверка исходящего адреса конверта по регулярному выражению; возможна проверка почтового ящика исходящего адреса на наличие только цифр и точек в нем; возможно исключение из проверки почтового ящика исходящего адреса на наличие только цифр; и точек в нем для доменов и адресов, указанных в access_db в виде: NumericMailbox:sms.umc.com.ua OK NumericMailbox:03@mail.ru OK возможны исключения из исключений :) NumericMailbox:233322@sms.umc.com.ua REJECT NumericMailbox:sms.umc.com.ua OK реализована проверка RCPT TO - HACK(`check-rcpt-to'): возможна проверка почтового ящика входящего адреса на наличие только цифр и точек в нем; возможно исключение из проверки почтового ящика входящего адреса на наличие только цифр и точек в нем аналогично соответствующему исключению при проверке MAIL FROM. реализована встречная проверка отправителей - HACK(`check_mail_from_loopback') реализовано исключение из встречной проверки исходящей почты: исходящими считаются сообщения, отосланные с адресов, перечисленных в access.db, $w, $R: в /etc/mail/local-host-names ($w) адреса автоматически перечисляются в виде: [A.B.C.D] в /etc/mail/relay-domains ($R) адреса указываются в виде: A.B.C.D A.B.C. A.B. в access.db адреса указываются в виде: A.B.C.D RELAY A.B.C. RELAY A.B.C.0/24 RELAY реализовано исключение из встречной проверки сообщений, MAIL FROM которых указан в access_db в виде: LoopbackCheck:mailbox@maildomain OK LoopbackCheck:maildomain OK 8.12.7-0.23 реализована доставка резервных копий всех сообщений локальному пользователю - MAIL_FILTER(`backup-smf.pl') 8.12.7-0.22 существенно повышен log level реализована поддержка drwebd с использованием MAIL_FILTER(`drweb-smf') 8.12.7-0.21 реализован маскарадинг доменов