Увійти Реєстрація
Email-маркетинг

Проксі для email-маркетингу з відкритими SMTP-портами

Більшість проксі-сервісів закривають порт 25, і розсильник падає на з’єднанні. Advanced.name тримає 25, 465 і 587 відкритими на кожному безлімітному пакеті й дає до 50 000 IPv4-адрес за одним посиланням з авторизацією за IP вашого сервера. Репутація живе на вашому домені-відправнику, а проксі несе чисте з’єднання.

  • порти 25, 465, 587 відкриті
  • до 50 000 IP
  • авторизація за IP, без логіна
Сортувальний зал пошти у вигляді дата-центру зі світними комірками
Email-маркетинг

Що потрібно розсильнику і що дає пакет

Доставка залежить від репутації адреси-відправника. Великий пул розподіляє цю репутацію тонким шаром.

Що потрібно задачіЩо дає пакет

Вихід назовні через порт 25 або TLS-порт

25, 465 і 587 відкриті на всіх 13 безлімітних пакетах, SOCKS5 і HTTP на одному порту

Свіжа адреса на кожну пачку

У пакеті №5 40 000 IP, у №6 50 000; приблизно третина змінюється щодня

Доступ без логіна і пароля

Авторизуйте IP сервера-відправника в кабінеті; ключем є адреса

Потоки для паралельних SMTP-сесій

3000 потоків на пакеті №5, 5000 на №6

Безлімітні проксі

Виберіть пакет під денний обсяг

Чим більший пул, тим менше листів на адресу. Для щоденних розсилок беріть №5 або №6 у Мікс світу.

Регіон
Строк
Авторизовані IP
1 +10% за кожну IP після першої
Рекомендуємо для цієї задачі
$0
  • Проксі в пакеті
  • Потоки
  • Авторизовані IP1
  • ПротоколиHTTP / SOCKS5
Усі 13 пакетів у таблиці цін

Три кроки до першої відправки

Спершу налаштуйте домен-відправник

Задайте для домену SPF, DKIM і DMARC і прогрівайте його поступово. Проксі несе з'єднання; він не виправить холодний домен чи базу, яка не давала згоди.

Авторизуйте IP і завантажте список

Додайте IP відправника в кабінеті, потім вкажіть SMTP-клієнту список ip:port через SOCKS5 або HTTP.

Перевірте досяжність до відправки

Запустіть скрипт перевірки нижче або Socks List Processor, щоб у списку лишилися лише проксі, які дістають ваш SMTP-хост на 25, 465 чи 587.

Перевірка досяжності SMTP (не розсильник)

Вставте свій список проксі і поштовий хост. Скрипт відкриває через кожен проксі порти 25, 465 і 587 і читає привітання сервера, тож у вас лишаються лише адреси, які дістають сервер. Він нічого не надсилає. Той самий список працює і в Socks List Processor.

one ip:port per line, or a CSV export (';' separated)
the mail server you plan to relay through
ports to test on that host
proxy;port;banner is written here
Значення беруться з форми; скопіюйте або завантажте готовий файл.
Показати код скрипта
Python 3.8+ · email.py
#!/usr/bin/env python3
"""SMTP reachability checker for Advanced.name proxies.

A legitimate mail setup needs to know which proxies can actually reach an SMTP
server. This opens a SOCKS5 tunnel to the mail host on ports 25, 465 and 587
through each proxy and reads the greeting, so you keep only the addresses that
work. It does not send mail. Standard library only. Run: python3 smtp_reach.py
"""

# ================================ CONFIG ====================================
PROXY_LIST = "proxies.txt"   # one ip:port per line, or a CSV export (';' separated)
SMTP_HOST = "smtp.gmail.com"  # the mail server you plan to relay through
SMTP_PORTS = (587, 465, 25)   # ports to test on that host
THREADS = 100
TIMEOUT = 12
OUT_FILE = "smtp_ok.csv"     # proxy;port;banner is written here
# ============================================================================

import csv
import socket
import sys
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed


def load_list(path):
    out = []
    with open(path, encoding="utf-8", errors="replace") as fh:
        for line in fh:
            line = line.strip()
            if not line or line.startswith("#"):
                continue
            if ";" in line:                       # CSV row: ip;port;...
                parts = line.split(";")
                if len(parts) >= 2 and parts[1].isdigit():
                    out.append(parts[0] + ":" + parts[1])
            elif ":" in line:
                out.append(line)
    return out


def socks5_connect(proxy, host, port):
    """Open host:port through a no-auth SOCKS5 proxy, return the connected socket."""
    ip, pport = proxy.rsplit(":", 1)
    sock = socket.create_connection((ip, int(pport)), TIMEOUT)
    sock.settimeout(TIMEOUT)
    sock.sendall(b"\x05\x01\x00")
    if sock.recv(2) != b"\x05\x00":
        raise ConnectionError("socks5 handshake")
    host_bytes = host.encode()
    sock.sendall(b"\x05\x01\x00\x03" + bytes([len(host_bytes)]) + host_bytes + port.to_bytes(2, "big"))
    reply = sock.recv(4)
    if len(reply) < 2 or reply[1] != 0:
        raise ConnectionError("socks5 connect rejected")
    sock.recv(256)                                # drain the bound-address tail
    return sock


def reachable(proxy):
    """Return (port, banner) for the first SMTP port that answers, or (0, reason)."""
    for port in SMTP_PORTS:
        try:
            sock = socks5_connect(proxy, SMTP_HOST, port)
        except OSError:
            continue
        try:
            if port == 465:                       # implicit TLS: no plaintext banner
                sock.close()
                return port, "connected (tls)"
            banner = sock.recv(256).decode("latin-1", "replace").strip()
            sock.close()
            if banner.startswith("220"):
                return port, banner[:80]
        except OSError:
            pass
    return 0, "no smtp port reachable"


def main():
    proxies = load_list(PROXY_LIST)
    if not proxies:
        sys.exit("List is empty.")
    print("host %s, ports %s, proxies %d" % (SMTP_HOST, SMTP_PORTS, len(proxies)))
    ok, lock = [], threading.Lock()

    def work(proxy):
        port, info = reachable(proxy)
        if port:
            with lock:
                ok.append((proxy, port, info))
        return proxy, port, info

    with ThreadPoolExecutor(max_workers=THREADS) as pool:
        for fut in as_completed([pool.submit(work, p) for p in proxies]):
            proxy, port, info = fut.result()
            print("%-22s %s" % (proxy, ("%d %s" % (port, info)) if port else info))

    with open(OUT_FILE, "w", encoding="utf-8", newline="") as out:
        writer = csv.writer(out, delimiter=";")
        writer.writerow(["proxy", "port", "banner"])
        writer.writerows(ok)
    print("reachable: %d of %d -> %s" % (len(ok), len(proxies), OUT_FILE))


if __name__ == "__main__":
    main()
Налаштування

Як правильно налаштувати пошту через проксі

До проксі: репутація відправника

Доставка тримається на домені-відправнику, а не на проксі. Налаштуйте для домену SPF, DKIM і DMARC, прогрівайте відправника поступово і пишіть лише тим, хто дав згоду. Проксі несе з'єднання; холодний домен він не виправить.

Перевіркою вище лишайте тільки ті проксі, які справді дістають ваш SMTP-хост на портах 25, 465 чи 587: багато мереж блокують 25, наша тримає його відкритим.

Як націлити розсильник на пул

Більшість SMTP-клієнтів і транзакційних скриптів приймають SOCKS5 або HTTP-проксі на кожне з'єднання: впишіть ip:port у поле проксі, виберіть SOCKS5 і авторизуйте IP сервера в кабінеті, тоді логін не знадобиться.

Спершу перевірте список скриптом досяжності або Socks List Processor, щоб мертві адреси не зупиняли відправку.

Чотири речі, що тримають доставку

  1. Прогрівайте: починайте з малих обсягів на IP і нарощуйте їх день за днем.
  2. Пишіть лише тим, хто дав згоду, і виконуйте кожну відписку; від цього залежать і доставка, і закон.
  3. Вирівняйте SPF, DKIM і DMARC до того, як торкатися списку проксі; адреса лише несе лист.
  4. Перечитуйте посилання кожні 10 хвилин, щоб мертва адреса не зупинила відправку.
FAQ

Питання про цю задачу

Порт 25 справді відкритий?
Так, на всіх безлімітних пакетах, разом з 465, 587 та IMAP-портом 993. Легальна пошта працює в будь-якому клієнті з підтримкою SOCKS5 або HTTP. На резидентних Resi Core і Resi Prime порт 25 закритий, для розсилок вони не підходять.
Чи покращує проксі доставку?
Лише опосередковано. Доставка тримається на SPF, DKIM, DMARC і репутації домену-відправника; проксі дає чисте досяжне з'єднання, і нічого більше.
Який пакет для більших обсягів?
Мікс світу №5 (40 000 IP, 3000 потоків) або №6 (50 000 IP, 5000 потоків): більше адрес означає менше з'єднань на IP.
Чи може розсильник брати список за URL?
Більшість може. Посилання віддає рядки ip:port; поставте інтервал оновлення 10 хвилин.
Чи можна надсилати листи через Resi Core або Resi Prime?
Через Resi Core можна: поштовий клієнт входить у Gmail або Outlook портами 465 і 587 і надсилає лист через їхній сервер, а через IMAP і POP3 читає й перевіряє скриньку. Порт 25 на резидентних закритий, власний SMTP-сервер або розсильник із прямим надсиланням на MX не підключиться. На Resi Prime закриті всі поштові порти. Спам заборонений у будь-який спосіб, розсилки за підпискою йдуть через безлімітні пакети.
Тарифи під задачу

Який пакет узяти під розсилки

Легальні SMTP-розсилки йдуть лише через безлімітні пакети: на них відкриті порти 25, 465 і 587.

Безлімітні проксі

Щоденні розсилкиНайкращий вибір

Пакет № 5 · Мікс світу · 40 000 IP · 3 000 потоків

На кожну адресу припадає менше листів, а трафік не рахується за будь-якого обсягу. Порти 25, 465 і 587 відкриті.

$1190 на місяцьабо $5.00 за годину

Безлімітні проксі

Великі обсяги

Пакет № 6 · Мікс світу · 50 000 IP · 5 000 потоків

Найбільший пул. Для кампаній, де тисячі SMTP-сесій ідуть паралельно.

$1390 на місяцьабо $5.80 за годину

Resi Core і Resi Prime для розсилок не підходять: порт 25 на них закритий, а спам заборонений правилами.

Надсилайте розсилки за згодою через відкриті порти

Виберіть пакет, візьміть безкоштовну тестову годину, перевірте список і починайте.

Тарифи Взяти годину безкоштовно