先把发信域名配好
为域名设置 SPF、DKIM 和 DMARC,并逐步预热。代理只负责连接,修复不了冷启动的域名,也修复不了从未同意订阅的名单。
大多数代理服务关闭25端口,群发软件一连接就失败。Advanced.name在每个不限流量套餐上都开放25、465和587端口,一个链接最多提供50,000个IPv4地址,按您的服务器IP授权。信誉取决于您的发信域名;代理只负责提供干净的连接。
送达率取决于发信地址的信誉。大的代理池能把这份信誉摊薄。
能通过 25 端口或 TLS 端口出站
13个不限流量套餐都开放25、465和587端口,SOCKS5和HTTP共用一个端口
每批邮件一个新地址
5 号套餐 40,000 个 IP,6 号套餐 50,000 个;每天约三分之一轮换
无需用户名和密码
在个人中心授权发信服务器的 IP,地址本身就是钥匙
并行 SMTP 会话所需的线程
5 号套餐 3,000 线程,6 号套餐 5,000
代理池越大,每个地址分摊的邮件越少。每天发送的话,选全球混合的 5 号或 6 号。
为域名设置 SPF、DKIM 和 DMARC,并逐步预热。代理只负责连接,修复不了冷启动的域名,也修复不了从未同意订阅的名单。
在个人中心添加发信方 IP,再让 SMTP 客户端通过 SOCKS5 或 HTTP 使用 ip:port 列表。
运行下面的连通性脚本或 Socks List Processor,只保留能通过 25、465 或 587 连上你 SMTP 主机的代理。
粘贴你的代理列表和邮件主机。脚本通过每个代理打开 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,逐步预热发信方,只给同意订阅的名单发信。代理只负责连接,修复不了冷启动的域名。
用上面的检查脚本,只保留真正能通过 25、465 或 587 端口连上你 SMTP 主机的代理:很多网络封了 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端口已关闭,规则也禁止垃圾邮件。