Code Monkey home page Code Monkey logo

vsmtp's Introduction


What is vSMTP ?

vSMTP is a next-gen Mail Transfer Agent (MTA), faster, safer and greener.

  • It is 100% built in Rust.
  • It is lighting fast.
  • It is modular and highly customizable.
  • It has a complete filtering system.
  • It is actively developed and maintained.

Faster, Safer, Greener

While optimizing IT resources becomes an increasing challenge, computer attacks remain a constant problem.

Every day, over 300 billion emails are sent and received in the world. Billions of attachments are processed, analyzed and delivered, contributing to the increase in greenhouse gas emissions.

To meet these challenges, viridIT is developing a new technology of email gateways, also called vSMTP.

Follow us on viridit.com

Filtering

vSMTP enable you to create complex set of rules to filter your emails using the vsl programming language based on Rhai. You can:

  • inspect / modify the content of incoming emails.
  • forward and deliver emails locally or remotely.
  • connect to databases.
  • run commands.
  • quarantine emails.

and much more.

// -- database.vsl
// here we declare our services.
// connect to a database with the csv format.
service greylist db:csv = #{
  connector: "/db/greylist.csv",
  access: "O_RDWR",
  refresh: "always",
  delimiter: ',',
};
// -- main.vsl
// here we declare our rules for filtering.

import "database" as db;

#{
  // hook on the 'mail from' stage.
  mail: [
    // you can decide to accept or deny an email with a "rule".
    rule "greylist" || {

      let sender = ctx().mail_from;

      // is the user in our greylist ?
      if db::greylist.get(sender).len() != 0 {
        // it is, we accept the email.
        accept()
      } else {
        // it does not, we add the address to the database, then deny the email.
        db::greylist.set([ sender ]);
        deny()
      }
    }
  ],

  // hook on delivery, just before emails are sent to all recipients.
  delivery: [
    // you can setup delivery, log information, dump an email etc ... with an "action"
    action "setup delivery" || {

      log("info", `setting up delivery for ${ctx().client_ip}`);

      // forward all recipients with the 'example.com' domain.
      for rcpt in ctx().rcpt {
        if rcpt.domain is "example.com" {
          forward(rcpt, "mta.example.com");
        } else {
          deliver(rcpt);
        }
      }

    }
  ]
}

Documentation

For documentation please consult the vBook, the online reference and user guide for vSMTP.

To stay tuned, ask questions and get in-depth answers feel free to join our Discord server. You can also open GitHub discussions.

Roadmap

vSMTP is currently under development.

The next release "1.1.x" will focus on sender authentication mechanisms (SPF, NullMX records, etc.) and on security delegation via SMTP. You can find more information about the project agenda in the roadmap.

A guideline about contributing to vSMTP can be found in the contributing section.

Commercial

For any question related to commercial, licensing, etc. you can contact us on our website.

License

The standard version of vSMTP is free and under an Open Source license.

It is provided as usual without any warranty. Please refer to the license for further information.

vsmtp's People

Contributors

mathieu-lala avatar ltabis avatar paguardiolle avatar dependabot[bot] avatar

Stargazers

 avatar Braden Steffaniak avatar  avatar Masas Dani avatar  avatar Jake Logemann avatar r avatar Ziemek Borowski avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.