Proxies for email marketing

Before a campaign you clean the list and see where the mail lands. Both hit the same IP: a mail server throttles frequent hits from one address. A MIX pool up to 25,000 IPs spreads the checks across thousands of addresses, so validating a million-row list runs in thousands of threads. A test hour costs $1.

  • Traffic is never metered
  • Pool checked every 5 minutes
  • Refund on packages from 3 days
See prices
Emails fan out to recipient addresses through a network of proxy nodes

The price for your volume

Pick a package, then move the period and thread sliders. A thread is one SMTP connection open at this moment: a validator with 2,100 threads checks 2,100 addresses at once. That is what the slider is set to.

MIX-Elite is made for industrial validation and deliverability monitoring: lists of tens of millions of addresses, inbox checks from different countries, scheduled runs. The widest pool at 25,000 addresses and threads up to 9,900. SMTP checking needs many threads, so the widget opens at 2,100 — the recommended start.

1 month
2,100+40%

A thread is one simultaneous connection. More threads — more done in the same time.

$210
≈ $7 / dayfor 30 days

$150 for a month+ $60 for threads

save $630 vs. daily
YESrefund of the remainder
  • 1 hour — $1
  • 1 day — $20
  • 3 days — $40
  • 1 week — $70
  • 2 weeks — $100
  • 1 month — $150
  • 3 months — $360
  • 6 months — $675
Buy proxies — MIX-Elite

How to connect the proxies to list validation

  1. 1
    Buy an hour for $1 and enter the IP of the server your validator runs on.

    The whitelist opens access to the server itself, the validator has no login or password to enter. Up to ten addresses on the list.

  2. 2
    Copy the proxy list URL in your dashboard.

    The response is plain text: address and port, one proxy per line. The same URL ending in .csv adds an uptime column, handy for picking the most stable addresses.

  3. 3
    Load the URL into your validator as the proxy source.

    MailList Verify, BriteVerify and home-grown checkers take a list by URL and re-read it on their own. A Python script of your own starts from the example below.

  4. 4
    Set threads no higher than the port count in your package.

    500 on Basic, 1,000 on Business, 1,500 on Elite without add-ons, up to 9,900 with them. One SMTP connection goes through one port, and on a big list the threads decide the run time.

  5. 5
    Check the address over SMTP instead of sending mail.

    The validator greets the domain's mail server and asks about the address with the RCPT command; a 250 means the mailbox exists. No mail goes out, and the domain reputation stays untouched.

This is how a list is validated from Python. The script reads addresses from emails.txt, finds the domain's MX for each, opens SMTP through a random proxy from the list and writes valid, invalid or unknown to checked.csv from the RCPT reply. Replace PROXY_LIST_URL_FROM_DASHBOARD with the URL from your dashboard.

# pip install requests dnspython PySocks
import random, smtplib, socks, requests
import dns.resolver
from concurrent.futures import ThreadPoolExecutor

PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
THREADS = 2100
HELO_DOMAIN = "yourdomain.com"
FROM_ADDR = "check@yourdomain.com"

proxies = [line.strip() for line in requests.get(PROXY_LIST_URL, timeout=15).text.splitlines() if ":" in line]

class ProxySMTP(smtplib.SMTP):
    def __init__(self, proxy, host, port=25, timeout=15):
        self.proxy = proxy
        super().__init__(host, port, timeout=timeout)

    def _get_socket(self, host, port, timeout):
        proxy_host, proxy_port = self.proxy.split(":")
        sock = socks.socksocket()
        sock.set_proxy(socks.SOCKS5, proxy_host, int(proxy_port))
        sock.settimeout(timeout)
        sock.connect((host, port))
        return sock

def mx(domain):
    records = dns.resolver.resolve(domain, "MX")
    return str(min(records, key=lambda r: r.preference).exchange).rstrip(".")

def check(email):
    try:
        smtp = ProxySMTP(random.choice(proxies), mx(email.split("@")[1]))
        smtp.ehlo(HELO_DOMAIN)
        smtp.mail(FROM_ADDR)
        code, _ = smtp.rcpt(email)
        smtp.quit()
        return email, "valid" if code == 250 else "invalid"
    except Exception:
        return email, "unknown"

emails = [line.strip() for line in open("emails.txt") if "@" in line]
with ThreadPoolExecutor(THREADS) as pool, open("checked.csv", "w") as out:
    for email, status in pool.map(check, emails):
        out.write(f"{email};{status}\n")
        print(email, status)

Which package to take for email marketing

MIX-Basic

8,000 IPs · 500–900 threads

from $50 a month

A one-off list cleanup and an inbox check. Take it when you have tens of thousands of addresses and run once a month.

MIX-Business

16,000 IPs · 1,000–1,400 threads

from $100 a month

A package for services and regular work: a million addresses per run, deliverability checks across domains.

MIX-Elite

25,000 IPs · 1,500–9,900 threads

from $150 a month

A package for industrial validation: tens of millions of addresses, threads up to 9,900, scheduled runs.

Five settings that protect the pool and the list

  • One SMTP connection through one proxy, the next through another. The mail server counts hits per address and returns a temporary failure on frequent RCPTs.
  • Greet with a real domain in HELO and put a real return address in MAIL FROM, or some servers drop the connection before answering.
  • A 4xx reply is not 'the address is bad' but 'try again later': set the address aside and run it once more through another proxy.
  • Keep a 15-second timeout: a hung SMTP connection ties up a thread longer than a dozen normal checks.
  • Before a run, sort the list by uptime and take the most stable addresses; the script below does this.

Questions about proxies for email marketing

01Can I send mail straight through your pool?
The pool handles the two jobs around a campaign: validating the list over SMTP and checking where the mail lands. Run the actual sending of thousands of emails from a warmed-up domain and its own SMTP: mail systems judge the reputation of the sending IP, and a foreign address from the pool only hurts deliverability.
02How many addresses an hour will the pool check?
The mail server limits the RCPT rate per IP. With pauses, one address handles hundreds of checks an hour, and the pool runs them in parallel: the 8,000 addresses in Basic check lists in the hundreds of thousands, the 25,000 in Elite many times faster. Get the exact speed for your domains from a test hour.
03Why is the widget already set to 2,100 threads?
SMTP checking is thousands of short connections in a row, and the threads decide the run time. 2,100 is the recommended start for Elite: the pool holds that number, and a million-row list clears in hours, not a day. The slider goes up to 9,900 if the list is larger.
04How does the validator authenticate?
By its own IP: the proxies accept requests from the addresses you added in the dashboard, up to ten per account, and there is nowhere to enter a login or password. Moved the validator to another server: change the address in the list and you are done.
05How do I pick the most stable addresses?
The CSV from the same URL has an uptime column. Take the list as CSV: columns ip, port, country, speed, uptime, real_ip, semicolon-separated. The script below sorts by uptime and writes the top addresses to a file, so the list check runs through the ones that stay online longest.
import csv, io, requests

CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
TAKE = 2100
OUT_FILE = "proxies_stable.txt"

text = requests.get(CSV_URL, timeout=15).text
rows = list(csv.DictReader(io.StringIO(text), delimiter=";"))
rows.sort(key=lambda r: int(r["uptime"]), reverse=True)
picked = [f"{r['ip']}:{r['port']}" for r in rows[:TAKE]]

with open(OUT_FILE, "w") as f:
    f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")
06And if the mail servers' answers disappoint?
That is what the $1 hour is for: run part of the list on it and see how the mail servers answer. A package from 3 days can be cancelled in the dashboard on any day, the time used is rebilled at the regular rate and the remainder returns to your balance.

General questions about the service are answered in the general FAQ, the full plan grid is on the home page.

Start with a $1 hour

Run part of the list on the pool for an hour, watch how the mail servers answer, then pick a period. On packages from 3 days the remainder goes back to your balance.

Test proxies for $1
LOGIN/REGISTER