Сначала домен отправителя
Настройте для домена SPF, DKIM и DMARC и прогревайте его постепенно. Прокси несёт соединение, но не чинит холодный домен или список без подписки.
Большинство прокси-сервисов закрывают порт 25, и мейлер умирает на коннекте. Advanced.name держит 25, 465 и 587 открытыми на каждом безлимитном пакете и даёт до 50 000 адресов IPv4 по одной ссылке с авторизацией по IP сервера. Репутация живёт на домене отправителя; прокси несёт чистое соединение.
Доставка зависит от репутации отправляющего адреса. Большой пул размазывает эту репутацию тонким слоем.
Выход через порт 25 или TLS-порт
25, 465 и 587 открыты на всех 13 безлимитных пакетах, SOCKS5 и HTTP на одном порту
Свежий адрес на каждую пачку
В пакете №5 40 000 IP, в №6 50 000; около трети меняется ежедневно
Доступ без логина и пароля
Авторизуйте IP отправляющего сервера в кабинете; ключом служит сам адрес
Потоки под параллельные SMTP-сессии
3 000 потоков на пакете №5, 5 000 на №6
Чем больше пул, тем меньше писем на адрес. Для ежедневных рассылок берите №5 или №6 в Миксе Мира.
Настройте для домена SPF, DKIM и DMARC и прогревайте его постепенно. Прокси несёт соединение, но не чинит холодный домен или список без подписки.
Добавьте IP отправителя в кабинете, затем направьте SMTP-клиент на список ip:port по SOCKS5 или HTTP.
Прогоните скрипт доступности ниже или Socks List Processor, чтобы в списке остались только прокси, дотягивающиеся до вашего SMTP на 25, 465 или 587.
Вставьте список прокси и почтовый хост. Скрипт открывает через каждый прокси порты 25, 465 и 587 и читает приветствие, чтобы оставить только адреса, которые дотягиваются до сервера. Ничего не отправляет. Тот же список работает и в Socks List Processor.
#!/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, чтобы мёртвые адреса не тормозили отправку.
Легальные SMTP-рассылки идут только через безлимитные пакеты: на них открыты порты 25, 465 и 587.
Ежедневные рассылкиЛучший выбор
На каждый адрес приходится меньше писем, а трафик не считается при любом объёме. Порты 25, 465 и 587 открыты.
$1190 в месяцили $5.00 в час
Большие объёмы
Самый большой пул. Для кампаний, где тысячи SMTP-сессий идут параллельно.
$1390 в месяцили $5.80 в час
Resi Core и Resi Prime для рассылок не подходят: порт 25 на них закрыт, а спам запрещён правилами.
Выберите пакет, возьмите бесплатный час теста, проверьте список и стартуйте.