Elixir library for detecting disposable (burner) or personal email addresses.

Focused on performance and features the largest database of domains availble.

Comes with two lists out of the box:

  • DisposableList - based on mailchecker's list, total 33,606 domains;
  • FreeList - based on this list excl. already listed in DisposableList, total 5009 domains.

You can also plug your own dataset by implementing the EmailGuard.List behaviour ✌️


Add to your mix.exs:

def deps do
    {:email_guard, "~> 1.0"}

If you're not using application inference, then add :email_guard to your applications list.


Checks if given email or domain is present in email lists:

iex> EmailGuard.check("")

iex> EmailGuard.check("")

By default it will check against EmailGuard.DisposableList:

iex> EmailGuard.check("")
{:error, EmailGuard.DisposableList}

You can specify the email list modules, e.g. including the provided one for free email service providers:

iex> lists = [EmailGuard.DisposableList, EmailGuard.FreeList]
[EmailGuard.DisposableList, EmailGuard.FreeList]

iex> EmailGuard.check("", lists)
{:error, EmailGuard.FreeList}

To provide your own custom list see the EmailGuard.List behaviour.

Note that EmailGuard expects a valid email address or domain as input.


MIX_ENV=bench mix run bench/check_bench.exs


See LICENSE file.