./mail/rspamd, Fast, free and open-source spam filtering system

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]

Branch: CURRENT, Version: 3.2, Package name: rspamd-3.2, Maintainer: bartosz.kuzma

Rspamd is fast, modular and lightweight spam filter. It is designed to work
with big ammount of mail and can be easily extended with own filters written in

Required to run:
[textproc/icu] [security/gnupg2] [security/openssl] [mail/gmime] [devel/fann] [devel/glib2] [devel/libevent] [devel/ragel] [devel/lua-lpeg] [security/libsodium] [databases/hiredis] [lang/lua53]

Required to build:

Master sites:

Filesize: 5505.698 KB

Version history: (Expand)

CVS history: (Expand)

   2022-07-21 11:10:12 by Jonathan Perkin | Files touched by this commit (1) | Package updated
Log message:
rspamd: Add missing PLIST update.
   2022-07-20 17:55:05 by Jonathan Perkin | Files touched by this commit (5) | Package removed
Log message:
rspamd: Update to 3.2.

3.2: 26 Mar 2022
  * [Conf] Score MIME_OBFUSCATED_ARCHIVE to 8 points
  * [Conf] Set one_shot for URIBL rules by default
  * [CritFix] Fix upstreams name resolution when there is also a port
  * [Feature] Add ROC feature to neural network plugin
  * [Feature] Add public suffic compilation utility
  * [Feature] Add support of Cloudmark
  * [Feature] Allow hyperscan for ppc64, as vectorscan now suports it.
  * [Feature] Allow to skip DNS resolution for keep-alive connections
  * [Feature] Aws_s3: Allow to store large parts separately
  * [Feature] BIMI: Add preliminary version of the BIMI plugin
  * [Feature] JSON endpoint for querying maps
  * [Feature] Lua_magic: Add a sane CSV heuristic
  * [Feature] Lua_mime: Add schema for message transfer
  * [Feature] Output average scan time in /stat endpoint
  * [Feature] Show average scan time in `rspamc stat` output
  * [Fix] Add guards to avoid race condition on TCP connection
  * [Fix] Allow spaces in DKIM key records
  * [Fix] Apply the similar fix to the url_reputation
  * [Fix] Avoid overwriting whitelisted_signers_map
  * [Fix] Backport PR from libucl
  * [Fix] Clear SSL errors
  * [Fix] ClickHouse cleanup of old partitions
  * [Fix] Do not double call error handler on ssl errors in the timeout path
  * [Fix] Do not forget to clear pointers on IOC reset
  * [Fix] External_relay: Remove useless check of the map value
  * [Fix] Find suspicious url encodings that could break url extraction
  * [Fix] Fix HTTP(s) client timeout
  * [Fix] Fix exclude flags setting
  * [Fix] Fix expanding of the variables
  * [Fix] Fix host header usage in lua_http
  * [Fix] Fix http maps shared memory cache cleanup
  * [Fix] Fix logic in HTML processing FSM
  * [Fix] Fix parsing of the compound mailto urls
  * [Fix] Fix processing captures from pcre2
  * [Fix] Fix removing from khash
  * [Fix] Fix stuctured headers pushing
  * [Fix] Further fix for i386 compilation
  * [Fix] Improve duplicate settings error reporting
  * [Fix] Lua: task:remove_result didn't work in some cases
  * [Fix] Output service parts as well
  * [Fix] Phishing: Deal with phishing + redirected URL
  * [Fix] Phishing: Fix finding domains in the phishing map
  * [Fix] Plug memory leak by using mempool for a copied address
  * [Fix] Properly find the request and the number of requested entries
  * [Fix] Rbl: Fix inversed logic of the url_full_hostname
  * [Fix] Read file maps if they were not pre-read during preload
  * [Fix] Restrict x86_64 assembly to x86_64
  * [Fix] Return a real number of recipients when dealing with aliases
  * [Fix] Rework unshedule DNS request function
  * [Fix] Support definition of ungrouped symbol in conf file, use group info \ 
from lua or other conf file
  * [Fix] Unschedule DNS request when clearing IO channel
  * [Fix] When checking for phishing, we need to convert punicode -> UTF8, \ 
not vice versa
  * [Fix] lua_cfg_transform - actions without score (discard)
  * [Fix] lua_cfg_transform - silly break break actions
  * [Fix] ratelimit - symbol per bucket
  * [Project] BIMI: Fix helper integration issues
  * [Project] Further DNS over TCP architecturing
  * [Project] Rdns: Add more functions for TCP based requests
  * [Project] Rdns: Add preliminary reading logic for TCP channels
  * [Project] Rdns: Add reaper for inactive TCP connections
  * [Project] Rdns: Add timeout logic for TCP requests
  * [Project] Rdns: Do not treat TCP channels failure as fatal
  * [Project] Rdns: Fix TCP connection mess
  * [Project] Rdns: Fix TCP stuff cleanup
  * [Project] Rdns: Fix various ownership issues
  * [Project] Rdns: Implement TCP writing logic
  * [Project] Rdns: Initial support of TCP IO channels
  * [Project] Rdns: More fixes in TCP handling
  * [Project] Rdns: Restore the previous EDNS0 size
  * [Project] Rdns: Send truncated replies via TCP
  * [Project] Rdns: Unregister TCP requests
  * [Rework] Allow to restore SSL handlers after keepalive pooling
  * [Rework] Allow to set a different behaviour for actions from settings
  * [Rework] Include SSL flag into keepalive hash
  * [Rework] Make `rspamadm dmarc_report` default behaviour more sane
  * [Rework] Mempool: Use explicit alignment
  * [Rework] Rdns: Use faster and more compact hash table for DNS requests
  * [Rework] Rework SSL flag operations
  * [Rework] Take disabled flag into account
  * [Rework] Timeouts are now global per event and not reseted by IO activity
  * [Rework] Use xxh3 as a default hash and fix memory/alignment issues
  * [Rules] Fix old rules to stop global functions usage
  * [Rules] Fix symbol for DKIM temporary failure
  * [Rules] Remove ancient and inefficient rules
  * [Rules] Slightly reduce MULTIPLE_FROM score
   2022-06-28 13:38:00 by Thomas Klausner | Files touched by this commit (3952)
Log message:
*: recursive bump for perl 5.36
   2022-05-29 21:21:46 by Gavan Fantom | Files touched by this commit (4)
Log message:
Fix compilation on 32-bit x86 systems

These patches are from:
   2022-04-18 21:12:27 by Adam Ciarcinski | Files touched by this commit (1798) | Package updated
Log message:
revbump for textproc/icu update
   2022-04-14 08:29:19 by Nia Alarie | Files touched by this commit (3)
Log message:
*: Sprinkle some USE_PKGSRC_GCC_RUNTIME for packages requriing GCC 8
   2022-03-03 17:23:31 by Jonathan Perkin | Files touched by this commit (2)
Log message:
rspamd: Explicitly use std::log10.
   2021-12-21 16:00:41 by =?UTF-8?B?RnLDqWTDqXJpYyBGYXViZXJ0ZWF1?= | Files touched by this commit (6)
Log message:
rspamd: Update to 3.1

pkgsrc changes:
  * Remove variables that are no more used by the project.
  * Remove options.mk since GD is no more parameterizable.
  * Accept the 4 versions of lua provided by pkgsrc since the package
    successfuly build against all of them.

upstream changes:
3.1: 01 Nov 2021
  * [Feature] Add junk_threshold for autolearn
  * [Feature] Add neural test command
  * [Feature] Antivirus: Allow to set fake eicar patterns for testing AV engines
  * [Feature] Lua_cdb: Add cdb building interface
  * [Feature] Ratelimit: Add per bucket configurations
  * [Feature] S3: Allow to store structured data in messagepack
  * [Fix] Add concept of uncancellable events to prevent use-after-free
  * [Fix] Add temporary guard to prevent linked list exploitation
  * [Fix] Another rework of the ucl hashing
  * [Fix] Another try to fix references safety
  * [Fix] Another try to fix rspamd_text passing in the selectors
  * [Fix] Avoid copy for received structure as it has raw C pointers
  * [Fix] Avoid dangling reference
  * [Fix] Correctly check numeric URLs in URL DNS lists
  * [Fix] Delete the correct pointer type
  * [Fix] Dmarc: Always lowercase domain
  * [Fix] Fix compilation of the hyperscan databases with errors
  * [Fix] Fix hash table lookup
  * [Fix] Fix http message flag shift
  * [Fix] Fix parsing of the from_hostname when it is an IP address
  * [Fix] Fix parsing of the unquoted attributes in HTML
  * [Fix] Fix passing of rspamd_text in selectors pipelines
  * [Fix] Fix rubbish QP sequences decoding
  * [Fix] Fix some complicated case with the closing tags parsing
  * [Fix] Fix the case when l tag is too small
  * [Fix] Html: Fix the case where only bgcolor is explicitly set
  * [Fix] Libucl: Fix deletion from ucl objects
  * [Fix] Namespace and add metadata for OpenMetrics, fix interleaving
  * [Fix] Plug memory leak in http settings reload
  * [Fix] Preserve SPF top record in the mempool variable
  * [Fix] Remove aarch64 GC64 workaround
  * [Fix] Remove bogus G_LIKELY
  * [Fix] Spf: Do not parse non TXT DNS replies as TXT replies
  * [Fix] Try to use on_connect/on_disconnect callbacks to handle internal Redis \ 
  * [Fix] buffer overflow in rspamc counters
  * [Fix] fix static building
  * [Fix] lua_scanners - message_min_words logic
  * [Fix] src/lua/lua_mimepart.c: fix null dereference
  * [Project] Add constant iterators
  * [Project] Add helper library to handle mime strings in a more safe matter
  * [Project] Add preliminary support of CDB bayes dump
  * [Project] Add trim operations
  * [Project] Allow mempool allocated mime strings
  * [Project] Cdb: Finish backend implementation
  * [Project] Cdb: Fix configuration load
  * [Project] Cdb: Use shared data between cdb statfiles
  * [Project] Cdb: continue statistics backend implementation
  * [Project] Finish received headers rework part
  * [Project] Move C++ specific declarations to C++ header
  * [Project] Rework received headers parsing to C++
  * [Project] Start using of the new received structure
  * [Project] Start work on cdb backend
  * [Rework] Further rework of the redis pool
  * [Rework] Redis_pool: fix issues found
  * [Rework] Rework learn and add classify condition
  * [Rework] Save invisible content to a separate buffer
  * [Rework] Start rewriting of the redis pool logic
  * [Rules] Improve zero font rule

3.0: 19 Aug 2021
  * [Conf] Align ARC scores with DKIM scores
  * [CritFix] Neural: Fix sorting application
  * [Feature] Add a simple dumper for bayes tokens
  * [Feature] Add lua_maps.fill_config_maps function
  * [Feature] Add preliminary exporter to AWS S3
  * [Feature] Add preliminary restore bayes support
  * [Feature] Add race condition protection against hs_helper restarts
  * [Feature] Add rspamd_utf8_strcmp utility
  * [Feature] Add zstd streaming API
  * [Feature] Allow to log severity level explicitly
  * [Feature] Allow to save and show attachment name when inserting AV scan results
  * [Feature] Allow to sort urls for Lua
  * [Feature] Allow to specify different timeouts/retransmits for fuzzy rules
  * [Feature] Aws_s3: Allow to compress data stored
  * [Feature] CMakeLists.txt: Change check and run-test to use rspamd-test-cxx * \ 
fixes #3807
  * [Feature] Dmarc_report: allow sending reports in batches
  * [Feature] Fuzzy_check: Allow to disable subject when making short text hash
  * [Feature] Lua_cryptobox: Add keyed ssl hash functions via HMAC
  * [Feature] Lua_task: Add get_urls_filtered method
  * [Feature] Make monitored checks less frequent
  * [Feature] Milter_headers: Add x-rspamd-pre-result header
  * [Feature] Neural: Allow to balance FP/FN for the network
  * [Feature] Ppopagate monitored errors from rbl module
  * [Feature] Pyzor calculate score dynamically Count - WL-Count of \ 
default_score in percent
  * [Feature] Rbl: Distinguish flattened and non-flattened selectors in RBL requests
  * [Feature] Re-add pyzor support
  * [Feature] Settings: add ip_map check and rework structure slightly
  * [Feature] Spamassassin: Allow to set the default priority for SA scores
  * [Feature] Strip smtp comments from message id
  * [Feature] add SYSTEM_ZSTD cmake option To use the system zstd instead on the \ 
bundled version
  * [Feature] external_relay plugin
  * [Feature] rspamadm clickhouse neural_train subcommand
  * [Fix] #3400 milter_headers: fix inverted logic for extended_headers_rcpt
  * [Fix] ASN: fix _FAIL symbol for when main symbol is disabled
  * [Fix] Add a special logic for text part with no text extraction
  * [Fix] Add diacritics flag for several eu languages
  * [Fix] Another FSM fix to accomodate possibility of multiple consequent ?
  * [Fix] Avoid curse of dynamic array referencing
  * [Fix] Avoid reinitialising neural settings
  * [Fix] Check remain before processing TXT records
  * [Fix] Enable error multiplier on http errors
  * [Fix] Finally rework parsing entities logic
  * [Fix] Fix '==' parsing in the content type attributes parser
  * [Fix] Fix IPv6 expansion for SPF macros
  * [Fix] Fix Mozilla Message-ID detection
  * [Fix] Fix an edge case in BITCOIN_ADDR rule
  * [Fix] Fix brain-damaged behaviour when http request has a custom Host header
  * [Fix] Fix check of limits in email address parsing
  * [Fix] Fix copy&paste error and rework
  * [Fix] Fix expressions logic for and/or and float values
  * [Fix] Fix fuzzy retransmits
  * [Fix] Fix http maps with no or invalid expires data
  * [Fix] Fix last quote character parsing in the content-type state machine
  * [Fix] Fix normalisation flags propagation
  * [Fix] Fix overflow when appending many broken tags
  * [Fix] Fix parsing of rfc2047 tokens with '?' inside
  * [Fix] Fix phishing flag set
  * [Fix] Fix rfc2047 embedded into rfc2231 pieces in special headers
  * [Fix] Fix round-robin rotation
  * [Fix] Fix searching for symbols
  * [Fix] Fix storing of the regexps inside variant
  * [Fix] Fix tokenization near exceptions
  * [Fix] Fix visibility calculations
  * [Fix] Html: Attach inline tags to the structure
  * [Fix] Html: Do not treat empty tags as block tags
  * [Fix] Ical: Do not extract urls from all flags using merely specific ones
  * [Fix] Initialise symcache even if it cannot be loaded properly
  * [Fix] Lua_fuzzy: Remove text parts check when checking image dimensions
  * [Fix] Lua_maps: Fix adjustments for the map type in the complex map definitions
  * [Fix] Lua_task: Fix deleted symbols in has_symbol/get_symbol
  * [Fix] Move metric and symcache link from validation to the init stage
  * [Fix] Oletools: Another try to fix table sorting
  * [Fix] One more default behaviour fix
  * [Fix] Phishing: Rework urls processing
  * [Fix] RBL: was missing some config schema
  * [Fix] Replies: Fix 'Reply-To' handling in task:get_reply_sender
  * [Fix] Rework metrics handling
  * [Fix] Save symcache on exit
  * [Fix] Selectors: Filter nil elements in lists
  * [Fix] Selectors: Properly fix implicit tostring for nils
  * [Fix] Try to fix some broken code in DMARC reporting plugin
  * [Fix] Urls: Fix processing of html urls when it comes to the flags
  * [Fix] Use proper buffer length
  * [Fix] Various visibility fixes
  * [Fix]: ASN: dns cb func should also return in case of an error
  * [Project] Add a simple css rule definition
  * [Project] Add css style skeleton
  * [Project] Add css syntax (adopted from ebnf)
  * [Project] Add css_selectors
  * [Project] Add doctest unit testing library
  * [Project] Add expected library
  * [Project] Add fmt library for simple string ops
  * [Project] Add fu2 library to better functions abstractions
  * [Project] Add hashing method
  * [Project] Add parsers skeleton
  * [Project] Add preliminary support of vcard parser
  * [Project] Add process exceptions for invisible text
  * [Project] Add some methods for css parser
  * [Project] Allow static libstdc++
  * [Project] Another whitespace hack
  * [Project] CSS: Various fixes in the declarations and values parsing
  * [Project] Cpp: Add robin-hood hash map library
  * [Project] Css: Add AST debug
  * [Project] Css: Add colors conversion functions
  * [Project] Css: Add dimensions handling
  * [Project] Css: Add display value support
  * [Project] Css: Add frozen library from \ 
  * [Project] Css: Add opacity support
  * [Project] Css: Add parser helpers to simplify debugging
  * [Project] Css: Add preliminary stylesheet support
  * [Project] Css: Add rules processing functions and tests
  * [Project] Css: Add simple selectors unit tests
  * [Project] Css: Add some c++ unit tests
  * [Project] Css: Add some debug methods
  * [Project] Css: Add some debug statements for the css parser
  * [Project] Css: Add some logical skeleton for declarations parser
  * [Project] Css: Add url/function tokens
  * [Project] Css: Allow at rules parsing
  * [Project] Css: Declarations parsing logic skeleton
  * [Project] Css: Enable conditional css parsing support from the HTML parser
  * [Project] Css: Finish generic lexer cases
  * [Project] Css: Fix HSL conversion
  * [Project] Css: Fix minus parsing
  * [Project] Css: Fix parser consumers nesting
  * [Project] Css: Fix parsing of the qualified rules
  * [Project] Css: Fix rules merging
  * [Project] Css: Further fixes to lexer
  * [Project] Css: Further steps to parse css colors + rework
  * [Project] Css: Further work on parser's methods
  * [Project] Css: Implement backlog of css tokens
  * [Project] Css: Implement numbers and ident parsers
  * [Project] Css: Implement simple css selectors lookup
  * [Project] Css: Implement styles merging
  * [Project] Css: Make debug strings json like to simplify tests
  * [Project] Css: Minor adjustments
  * [Project] Css: More meat to the lexer
  * [Project] Css: Move some of the tests to the doctest
  * [Project] Css: Projected a parser
  * [Project] Css: Properties attachment logic
  * [Project] Css: Remove ragel from build targets (maybe keep for reference)
  * [Project] Css: Rework css block structure
  * [Project] Css: Rework flags of css properties
  * [Project] Css: Rework tokens structure
  * [Project] Css: Several fixes + tests
  * [Project] Css: Simplify checks
  * [Project] Css: Simplify debug code
  * [Project] Css: Start css selectors parsing logic
  * [Project] Css: Start semantic parsing for rules
  * [Project] Css: Start stylesheet implementation
  * [Project] Css: Tidy up lambdas
  * [Project] Css: rework tokeniser
  * [Project] Dmarc: Add dmarc report tool (WIP)
  * [Project] Dmarc: Add munging configuration
  * [Project] Dmarc: Add preliminary munging logic
  * [Project] Dmarc: Fix header removal
  * [Project] Dmarc: Fix munging logic
  * [Project] Dmarc: Use full recipient address instead of a domain map
  * [Project] Dmarc: Use zlists for dmarc reports
  * [Project] Dmarc_report: Add message generation logic
  * [Project] Dmarc_report: Add preliminary sending support
  * [Project] Fix lua bindings
  * [Project] Fix xml/sgml tags processing
  * [Project] Handle new modification
  * [Project] Html/CSS: Add transform from a CSS rule to html block
  * [Project] Html/CSS: Link html and css styles
  * [Project] Html/CSS: Switch styles parsing to css parser
  * [Project] Html/Css: Fix some issues found
  * [Project] Html/Css: Implement visibility rules for a block
  * [Project] Html: Add more tests cases and fix some more corner issues
  * [Project] Html: Add rows display type support
  * [Project] Html: Allow decode entities function to normalise spaces + unit tests
  * [Project] Html: Another rework of the tags structure
  * [Project] Html: Another try to fix unbalanced cases
  * [Project] Html: Fix crossing spans
  * [Project] Html: Fix parent propagation
  * [Project] Html: Further rework of the html parsing stuff
  * [Project] Html: Implement logic for tags pairing
  * [Project] Html: Implement rawtext state machine
  * [Project] Html: Insert closing tags as well :(
  * [Project] Html: More fixes
  * [Project] Html: More fixes
  * [Project] Html: More spaces logic fixes
  * [Project] Html: One more attempt to write text content
  * [Project] Html: Replace \0 in html content
  * [Project] Html: Rework img/a tags handling
  * [Project] Html: Rework propagation method
  * [Project] Html: Rework tags placement
  * [Project] Html: Rework transparency logic
  * [Project] Html: Support 'hidden' attribute
  * [Project] Html: Try another approach to append tags content
  * [Project] Html: Try to deal with bad unknown tags properly
  * [Project] Lua_aws: Add canonicalisation utility
  * [Project] Lua_aws: Add function to produce AWS Authorisation header
  * [Project] Lua_aws: Implement request signing
  * [Project] Lua_mime: Add lua_mime.modify_headers routine
  * [Project] Lua_task: Add modify_header method
  * [Project] Lua_task: Allow to extract modified headers
  * [Project] Make unescape code public for unit testing
  * [Project] More fixes for closed tags
  * [Project] More fixes to calculations
  * [Project] Rework API for the modified headers
  * [Project] Rework html visibility rule
  * [Project] Skeleton of the css library
  * [Project] Start headers modification API structure
  * [Project] Start working on AWS Lua API
  * [Project] Use lua_mime to modify headers
  * [Project] Use modified headers on dkim signing
  * [Project] Use string_view to constexpr variant unpacking
  * [Rework] Add composites manager concept
  * [Rework] Add tags definitions
  * [Rework] Allow C code to be compiled with C++ compiler
  * [Rework] Clickhouse: Store url flags
  * [Rework] Composites: Rewrite the composites logic
  * [Rework] Composites: Start rework of the composites framework
  * [Rework] Dmarc: Move check policy function to the common utils
  * [Rework] Dmarc: Rework reports keys structure
  * [Rework] Further work to make html content private
  * [Rework] Html/CSS: Remove css C bindings as they are useless now
  * [Rework] Html/CSS: Rework Lua bindings
  * [Rework] Html/Css: Start rework of the html blocks
  * [Rework] Html: Add images processing logic
  * [Rework] Html: Add traverse function
  * [Rework] Html: Another steps to get rid of gnode
  * [Rework] Html: Convert to variant
  * [Rework] Html: Deal with the utf_content part
  * [Rework] Html: Final rework part for the html processing code
  * [Rework] Html: Fix Lua bindings
  * [Rework] Html: Forgot to add the internal include
  * [Rework] Html: Further html urls rework
  * [Rework] Html: Further rework of the tags content extraction
  * [Rework] Html: Make parameters as a vector again
  * [Rework] Html: Move blocks part
  * [Rework] Html: Move images processing stuff
  * [Rework] Html: Rework lua bindings
  * [Rework] Html: Start html text extraction rework
  * [Rework] Html: Start refactoring of the html tags handling
  * [Rework] Html: Start removing of GNode stuff
  * [Rework] Html: Start rework of the html content structure
  * [Rework] Lua_magic: Try to detect text parts with 8bit characters for \ 
non-utf8 encodings
  * [Rework] Move HTML url functions and rework them
  * [Rework] Move and adopt entities handling logic
  * [Rework] Move common and rarely used dmarc code to the library
  * [Rework] Move compression routines outside of rspamd_util library
  * [Rework] Move entities/tags handling
  * [Rework] Phishing: Split from redirectors usage
  * [Rework] Redesign html blocks propagation logic
  * [Rework] Remove tag name string
  * [Rework] Rename phished url to a linked url
  * [Rework] Reorganize dmarc plugin and remove unsupported reporting code
  * [Rework] Reputation: Use more flexible types in get/set functions
  * [Rework] Require proper C++ environment for Rspamd build
  * [Rework] Rework extended urls output
  * [Rework] Rework tags parsing machine
  * [Rework] Slightly improve old regexp API
  * [Rework] Start conversion of the redis pool code to c++
  * [Rework] Try to resolve failed upstreams more agressively
  * [Rework] Use C++ utf8 library with unit tests to trim whitespaces
  * [Rework] Use C++ version for unicode normalisation
  * [Rework] Use C++ version of the lua threads pool
  * [Rules] Add raw addresses to MULTIPLE_FROM options
  * [Rules] Another fix to HTTP_TO_HTTPS rule
  * [Rules] Do not trigger HTML_SHORT_LINK_IMG on external images
  * [Rules] Extend FORGED_X_MAILER
  * [Rules] Extend OLD_X_MAILER
  * [Rules] Fix CTYPE_MIXED_BOGUS for text attachments
  * [Rules] Fix FPs for CTYPE_MIXED_BOGUS
  * [Rules] Fix HTTP_TO_HTTPS rule
  * [Rules] Fix HTTP_TO_HTTPS rule
  * [Rules] Fix zerofont rule (partially)
  * [Rules] Micro-optimize X_PHP_EVAL
  * [Rules] Reduce default weight for R_MISSING_CHARSET