Internally, FastMail.FM actually uses the powerful 'sieve' filtering language. The 'Define Rules' screen just provides an easier way to build this sieve script. You can however directly edit this script to create more complex rule sets. To do this, you click the 'View filter source' link at the bottom of the 'Define Rules' screen.
For more details on sieve, see:
-
Sieve core details
-
Sieve extensions supported
-
IMAP flag Extension (local copy)
Note that the latest draft of this sieve extension has significant changes that aren't currently supported.
Many (but not all) of the choices you make in the Options screens change the default sieve script automatically created for a user. The Define Rules forms produce obvious changes to this default script, but as FastMail.FM has added more features there are many subtle changes to the default script produced by user changes to Options screens (such as the Personalities screen). If you have not manually edited your sieve script, then this default script is the sieve rules script used by your account on incoming messages. But if you edit anything in the script and save it, then the automatically created default sieve script is automatically commented out and copied to the end of your manually created script. Any appropriate menu changes will modify the commented out code. Choosing revert sieve script will send to your Inbox an email containing as an attachment a copy of your old script (including the commented out default automatically generated default script), then discard your edited script and use the previously commented-out default script.
Some features (such as phishing and web bug image protection) are implemented independent of sieve.
This combination of internally coded features, automatically generated default sieve code, and manually edited sieve code has allowed FastMail.FM to add additional features and gives you the ability to modify some (but not all) behavior. But sieve is a standard, and formal extensions need to be officially proposed and implemented before we will have access to them. The behavior which is internally coded (independent of sieve) can't be changed by the user unless an Option menu is available for that feature.