The most flexible MTA for large-scale email services

Halon MTA consolidates your email infrastructure, reducing risk and complexity. It makes email infrastructure scalable, simple to manage, rich in functionality and easy to evolve.

Pricing Case studies
Enables rapid development

Increase service competitiveness

Suffering from slow and costly implementation of email features and new standards, leading to poor end customer experience? Halon increases email service competitiveness by enabling rapid implementation and reliable deployment. In contrast to traditional layered email infrastructure, Halon's holistic approach cuts system complexity, and enables you to more quickly architect the system that you want without compromises.

Integrated blue-green deployment

Reduce deployment time and risks

Run parallel versions of your configuration with traffic splitting. Along with a consolidated and programmatic approach to in-transit email, you can make rapid implementations as well as reliable deployments of changes or new functionality. Revision-managed configuration makes all changes fully visible, and provides instant rollbacks.

Slideshow
What's your business?
Sender
Marketing or transactional
  • Deliverability automation and higher capacity increasing customer satisfaction
  • Powerful integration points for faster and deeper end customer insights
  • Adapts seamlessly to existing systems for cost-effective and implementation
Mailbox provider
Carrier, ISP or hosting
  • Improved end customer experience by increased email service competitiveness
  • Less security risks for end customers using the latest in threat protection
  • Lower total cost of ownership by reduced system complexity
System integrator
Managed service provider
  • Comprehensive threat protection for all your customers
  • Stronger data protection with localised services
  • Improved customer satisfaction with centralised tracking
Built for large-scale email services

The most full-featured email processing platform

Developer-friendly

Keep your system fully flexible

Keep up with your competition through rapid implementation of new technologies, with Halon's email-centric scripting language. It could be DKIM signing with keys delivered from a control panel using a REST API lookup, custom SRS, dynamic routing or tailored outbound policies for maximum deliverability. The web admin's IDE features a sandbox, live staging, REPL interpreter and revision management. Halon provides a powerful software framework that performs better than most in terms of speed and efficiency, while dramatically improving system flexibility.

Script reference Live demo
Click on words for a detailed view
if ($message["transportid"] === "bounces")
    Try(["protocol" => "smtp"]); // Use SMTP for locally generated DSNs
// Use a more robust lookup like https://wiki.halon.io/API_calls
$route = cache ["ttl" => 3600] http("$apiurl/route", [], [$message["recipientaddress"]["domain"]]);
$route = json_decode($route);
if (!is_array($route))
    Queue(["delay" => 3600, "reason" => "Invalid route", "increment_retry" => false]);
Try(["protocol" => "lmtp", "server" => $route["storage"]]);
$options = [];
if (GetMetaData()["spam"] == "yes") {
    $options["sourceip"] = ["4"]; // Bulk IP
} else {
    // Source hash
    $addrs = ["1", "2", "3"];
    $sourcehash = number("0x".md5($message["senderaddress"]["domain"])[0:6]);
    $options["sourceip"] = [$addrs[$sourcehash % length($addrs)]];
}
Try($options);
// In the post-delivery script
$senderdomain = $message["senderaddress"]["domain"];
$errorcode = $arguments["attempt"]["result"]["code"];
if ($errorcode >= 400)
    rate("delivery-failures", $senderdomain, 1000, 3600);

// In the MAIL FROM script
$senderdomain = $arguments["address"]["domain"];
if (rate("delivery-failures", $senderdomain, 0, 3600) > 999)
    Defer("$senderdomain has more than 1000 failed deliveries during the last hour");
// Per-domain DKIM signing using external database
// Use a more robust lookup like https://wiki.halon.io/API_calls
$dkim = cache ["ttl" => 86400, "size"=> 32768, "ttl_override" => ["" => 60]]
    http("$apiurl/dkim/$1", ["timeout" => 10], [$transaction["senderaddress"]["domain"]]);
$dkim = json_decode($dkim);
if (is_array($dkim))
    $arguments["mail"]->signDKIM($dkim["selector"], $dkim["domain"], $dkim["rsakey"]);