The MTA for large-scale email services

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

Best-in-breed email platform

Halon is known and highly praised by engineers and sysadmins, and adopted by large operators such as Dutch telco KPN and Danish web hosting provider, as well as government agencies and municipalities. You and your customers deserves a modern, uncompromising email platform. Halon is one of the fastest, most scalable messaging platforms available, optimized for large-scale email receiving and sending operations.

Get an edge on your competition

If you go for traditional solutions, you are missing a big opportunity to get an edge on your competition and advance your own growth. A majority of email servers today are running on traditional legacy software, making changes and implementation of new features slow and risky, while also costing you a ton of man-hours.

Product information
if (!$senderip) {
    SetProtocol("smtp"); // Use SMTP for locally generated DSNs
// Use a more robust lookup like
$route = cache ["ttl" => 3600] http("$apiurl/route", [], [$recipientdomain]);
$route = json_decode($route);
if (!is_array($route))
    Reschedule(3600, ["reason" => "Invalid route", "increment_retry" => false]);
if (GetMetaData()["spam"] == "yes") {
    // Bulk IP
} else {
    // Source hash
    $addrs = ["netaddr:1", "netaddr:2", "netaddr:3"];
    $sourcehash = number("0x".md5($senderdomain)[0:6]);
    SetSourceIP($addrs[$sourcehash % count($addrs)]);
$ptr = cache ["ttl" => 3600] dnsptr($sourceip, ["extended_result" => true]);
if (isset($ptr["result"][0]))
// In the post-delivery script
if ($errorcode >= 400)
    rate("delivery-failures", $senderdomain, 1000, 3600);

// In the MAIL FROM script
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
function Deliver() {
    // Override the deliver function
    global $apiurl, $senderdomain;
    // Use a more robust lookup like
    $dkim = cache ["ttl" => 86400, "size"=> 32768, "ttl_override" => ["" => 60]]
        http("$apiurl/dkim/$1", ["timeout" => 10], [$senderdomain]);
    $dkim = json_decode($dkim);
    if (is_array($dkim))
        DKIMSign($dkim["selector"], $dkim["domain"], $dkim["rsakey"]);
    builtin Deliver();