All Projects → dburkart → check-sieve

dburkart / check-sieve

Licence: MIT license
Syntax checker for mail sieves.

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to check-sieve

Rfcs
RFCs for changes to Ember
Stars: ✭ 731 (+3078.26%)
Mutual labels:  rfc
Rfcs
This repository contains proposals, standards and documentations related to Nervos Network.
Stars: ✭ 154 (+569.57%)
Mutual labels:  rfc
Node Rfc
Asynchronous, non-blocking SAP NW RFC SDK bindings for Node.js
Stars: ✭ 190 (+726.09%)
Mutual labels:  rfc
Rfcs
RFCs for changes to DevTools
Stars: ✭ 12 (-47.83%)
Mutual labels:  rfc
I D
My Internet-Drafts
Stars: ✭ 94 (+308.7%)
Mutual labels:  rfc
Rrule
JavaScript library for working with recurrence rules for calendar dates as defined in the iCalendar RFC and more.
Stars: ✭ 2,249 (+9678.26%)
Mutual labels:  rfc
7xx Rfc
At Railscamp X it became clear there is a gap in the current HTTP specification.
Stars: ✭ 4,190 (+18117.39%)
Mutual labels:  rfc
keylist-rfc
🔏 turning the system behind GPG Sync into an Internet standard
Stars: ✭ 15 (-34.78%)
Mutual labels:  rfc
Http Rfcs.zh Cn
翻译 HTTP 相关的 RFC (中英文对照)
Stars: ✭ 111 (+382.61%)
Mutual labels:  rfc
Rfc
📄 Read RFCs from the command-line
Stars: ✭ 185 (+704.35%)
Mutual labels:  rfc
Mifare Classic Toolkit
RFID / NFC :: Mifare Classic 1k info and tools
Stars: ✭ 46 (+100%)
Mutual labels:  rfc
Vim Rfc
📓 Query RFC database and download RFCs from within Vim.
Stars: ✭ 88 (+282.61%)
Mutual labels:  rfc
Http Cache Semantics
RFC 7234 in JavaScript. Parses HTTP headers to correctly compute cacheability of responses, even in complex cases
Stars: ✭ 169 (+634.78%)
Mutual labels:  rfc
Animated Jpeg
Proposed JPEG/JFIF APP0 marker application extension for playback control of concatenated JPEGs, as stand-alone animation stream or Motion-JPEG
Stars: ✭ 7 (-69.57%)
Mutual labels:  rfc
Cacheable Request
Wrap native HTTP requests with RFC compliant cache support
Stars: ✭ 218 (+847.83%)
Mutual labels:  rfc
Rfcs
Public change requests/proposals & ideation
Stars: ✭ 428 (+1760.87%)
Mutual labels:  rfc
Http Core
Core HTTP Specifications
Stars: ✭ 165 (+617.39%)
Mutual labels:  rfc
saslprep
SASLprep: Stringprep Profile for User Names and Passwords.
Stars: ✭ 17 (-26.09%)
Mutual labels:  rfc
rfc-healthcheck
Health Check Response RFC Draft for HTTP APIs
Stars: ✭ 110 (+378.26%)
Mutual labels:  rfc
Netjson
NetJSON is a data interchange format for encoding the basic building blocks of networks.
Stars: ✭ 171 (+643.48%)
Mutual labels:  rfc

Build Status

check-sieve

This project aims to make checking mail sieve syntax easy and painless. Because breaking your sieve in production sucks.

For a web-based demonstration of check-sieve which is entirely browser-based, visit https://checksieve.com.

Build Dependencies

check-sieve minimally depends on having a modern C++ compiler. On BSD-like systems such as FreeBSD, you'll also need gmake installed.

Development Dependencies

The following dependencies are required in order to develop check-sieve:

  • bison >= v3.0.4
  • flex >= v2.5.35
  • Python >= 3.7
  • Python development headers (for testing)

Additionally, if you want to generate a javascript library, you'll need emscripten installed.

Compiling

At the moment, there are four targets for this project:

  1. check-sieve -- This is a command-line program you can use to verify sieves.
  2. libchecksieve.a -- A statically linked library for embedding in other programs (like check-sieve).
  3. checksieve.so -- This is a python extension created for use by the unit tests in the test directory
  4. wasm -- This builds a webassembly javascript library using emscripten.

To build check-sieve simply run make. This will also build the static library. Running make test will compile checksieve.so and run the python tests in the tests directory. Finally, running make all will run all of the other targets.

Installing

To install to /usr/local/, simply run the following:

make install

To install to a custom location, build and install with INSTALL_PREFIX set in your environment to the desired location.

Packages

Supported RFCs

Currently, the supported RFCs are:

  • Sieve: An Email Filtering Language (RFC 5228)
  • Variables Extension (RFC 5229)
  • Date and Index Extensions (RFC 5260)
  • Vacation Extension (RFC 5230)
  • Include Extension (RFC 6609)
  • Copying Without Side Effects (RFC 3894)
  • Reject and Extended Reject Extensions (RFC 5429)
  • Body Extension (RFC 5173)
  • Relational Extension (RFC 5231)
  • MIME Part Tests, Iteration, Extraction, Replacement, and Enclosure (RFC 5703)
  • Imap4flags Extension (RFC 5232)
  • Editheader Extension (RFC 5293)
  • Regex Extension (DRAFT)
  • Spamtest and Virustest Extensions (RFC 5235)
  • Extensions for Notifications (RFC 5435)
  • Subaddress Extension (RFC 5233)
  • Ihave Extension (RFC 5463)
  • Environment Extension (RFC 5183)
  • Sieve Notification Mechanism: mailto (RFC 5436)
  • Internet Message Access Protocol (IMAP) Events (RFC 6785)
  • Converting Messages before Delivery (6558)

If you find any discrepancies with these RFCs, or have reduced test-cases that should work but don't, please file an issue. If there's an RFC that isn't supported that you want, file an issue!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].