GeekProxy и SendGrid

SendGrid сам отправитель, поэтому исходящего прокси в нём нет и не будет. Есть IP Access Management, входящий белый список, который запирает консоль и API на названные вами адреса. Документация Twilio прямо предупреждает: нестатический IP может оставить вас снаружи. В этом гайде мы вносим статический IP GeekProxy в список, пускаем через него curl, Python и официальный SDK и разводим клиентские аккаунты по отдельным профилям браузера.

Что нужно: активный план GeekProxy со статическим IP и данные прокси из кабинета. Настройка занимает минут пятнадцать.

Получить прокси

1 Перед началом

Поля для прокси в SendGrid нет нигде. Мы просмотрели документацию по авторизации, SMTP, IP Access Management и двухфакторке. Почта уходит с инфраструктуры SendGrid, что бы вы ни делали у себя. Место прокси перед вашим собственным трафиком в сторону SendGrid, и отсюда три реальных сценария:

  • Бэкенд или cron-скрипт, который ходит в api.sendgrid.com с фиксированного IP, внесённого в IP Access Management
  • Ваш браузер в клиентском аккаунте SendGrid, у каждого аккаунта свой белый список и свой выделенный IP
  • SMTP-клиент, который сдаёт письма на smtp.sendgrid.net через прокси с почтовыми портами. Об этом в разделе 4

Одну вещь стоит усвоить до того, как трогать белый список. Справочник API SendGrid пишет, что список «doesn't automatically include your own IP address», а документация по интерфейсу: отказ добавить свой IP завершает сессию. Сначала статический IP, потом список.

Что понадобится

  • Активный план GeekProxy со статическим IP (ISP или датацентр)
  • Данные прокси из кабинета: хост, порт, логин, пароль
  • Аккаунт SendGrid, прошедший комплаенс. Twilio пишет, что новые аккаунты могут придержать на проверку, доступ открывают в пределах 72 часов после последнего шага верификации
  • API-ключ и curl либо Python 3.8 или новее
Ваши данные доступа
  • Поле Откуда взять
  • Протокол HTTP / SOCKS5
  • Хост IP или имя шлюза из кабинета
  • Порт из кабинета
  • Логин из кабинета
  • Пароль из кабинета

2 Где взять данные прокси

  1. Войдите в кабинет GeekProxy
  2. Откройте план. У планов с оплатой за IP (ISP, датацентр) список адресов, порт, логин и пароль лежат на карточке, а Export отдаёт весь список текстом
  3. Запишите IP выхода. На статическом плане это тот же хост, к которому вы подключаетесь, и именно его увидит SendGrid

Резидентские планы собирают строку логина в Options и меняют выход. Для беглого взгляда на лендинг годится, для белого списка нет.

Кабинет GeekProxy, Subscriptions
Кабинет GeekProxy, страница Subscriptions: планы ISP со ссылкой Export, планы Residential Flex и Turbo с кнопками Options и Add GB

3 Статический IP в белый список

Делайте это из браузера, который уже ходит через прокси. Тогда ваш текущий адрес появится в Recent Access Attempts и добавится одним нажатием, без ручного ввода.

  1. Откройте Settings, затем IP Access Management
  2. Нажмите Add IP Addresses. Отметьте два подтверждения и нажмите Confirm and Continue
  3. В Recent Access Attempts нажмите + напротив IP GeekProxy или Add all to form below. Можно и руками: Manually add IPs, поле IP addresses or ranges to add. CIDR-диапазоны принимаются, разделитель запятая, пробел или перенос строки
  4. Нажмите Add # IPs, затем Save

В списке помещается до 1 000 адресов. Таблица называется Allow Listed IP Addresses, рядом кнопки Disable Allow List, Remove From Allow List и Remove IP. К последней относитесь с уважением.

SendGrid, Add IP Addresses
Форма SendGrid «Add IP Addresses» с текущим IP, списком недавних IP с кнопками «Add to Form Below» и полем для ввода адресов или диапазонов.

Удалите собственный IP, и вы «block your access to your account». Twilio возвращает доступ только после подробного подтверждения личности и владения аккаунтом. Поэтому ротируемому прокси или sticky-сессии с таймером на этой странице делать нечего: в день, когда выход сменится, снаружи окажетесь вы.

SendGrid, Allow Listed IP Addresses
Страница SendGrid IP Access Management с таблицей разрешённых адресов IP и списком недавних попыток входа.

4 API и SMTP-релей через прокси

API v3 живёт на https://api.sendgrid.com/v3 и ждёт Authorization: Bearer <YOUR_API_KEY_HERE>. Самый дешёвый тестовый вызов чтение профиля:

curl -x http://LOGIN:PASSWORD@IP:PORT \
     -H "Authorization: Bearer $SENDGRID_API_KEY" \
     https://api.sendgrid.com/v3/user/profile

После -x curl принимает http://, https://, socks4://, socks4a://, socks5:// и socks5h://. Логин и пароль можно вынести в -U LOGIN:PASSWORD, если в пароле есть символы, которые URL не любит.

Python requests

import os, requests

PROXY = "http://LOGIN:PASSWORD@IP:PORT"
proxies = {"http": PROXY, "https": PROXY}
headers = {"Authorization": f"Bearer {os.environ['SENDGRID_API_KEY']}"}

r = requests.get("https://api.sendgrid.com/v3/user/profile",
                 headers=headers, proxies=proxies, timeout=(5, 30))
print(r.status_code, r.text[:200])

Официальный sendgrid-python

Здесь транспорт другой, и это важно. sendgrid-python зависит от python-http-client, а тот работает через urllib.request и собирает opener через build_opener(). По документации Python ProxyHandler добавляется, когда обнаружены настройки прокси, а по умолчанию он читает <protocol>_proxy из окружения. Так что SDK хватает экспортированного https_proxy. Обратная сторона: urllib не умеет SOCKS, прокси должен быть HTTP.

export https_proxy="http://LOGIN:PASSWORD@IP:PORT"
python3 send_hello.py
# send_hello.py, сценарий Hello Email из самого SDK
import os, sendgrid

sg = sendgrid.SendGridAPIClient(api_key=os.environ["SENDGRID_API_KEY"])
# mail = объект Mail, собранный ровно как в README SDK
response = sg.client.mail.send.post(request_body=mail.get())
print(response.status_code)      # 202, если письмо принято
Терминал, API SendGrid v3 через статический IP GeekProxy
Терминал: curl через прокси показывает IP прокси, эндпоинт профиля отвечает JSON, тот же вызов с другого IP отбит белым списком

SMTP-релей

Часть программ не умеет REST и сдаёт письма на smtp.sendgrid.net. Логин там буквально строка apikey, пароль сам ключ. Twilio перечисляет порты 25, 2525 и 587 для plain и TLS, 465 для SSL и советует TLS на 587. Чтобы протолкнуть такую отправку через прокси, прокси должен пропускать почтовые порты. Из продуктов GeekProxy почтовые порты доступны на Residential Turbo, подробности уточняйте в поддержке. Residential Flex по документации закрывает 25, 465 и 587, так что релеить в SendGrid через него нельзя.

5 Несколько аккаунтов, отдельные профили

Внутри одного аккаунта SendGrid штатный инструмент Subusers: до 15, больше через тикет в поддержку, на планах Pro или Premier API и Advanced Marketing Campaigns. Twilio подаёт их как способ развести транзакционную и маркетинговую почту. Отдельные IP сабюзерам не нужны.

Отдельные IP нужны для разных аккаунтов с разной оплатой, у каждого свой IP Access Management. Дайте каждому клиенту профиль браузера и собственный статический IP GeekProxy, и внесите этот IP в список именно этого клиента. Сессия станет постоянной, а правило от блокировки будет соблюдено.

  • Firefox хранит прокси на уровне профиля, включая SOCKS с удалённым DNS. Профиль на клиента самый короткий путь
  • Chrome берёт прокси из системы, пока не запущен с --proxy-server="http://IP:PORT" и отдельной папкой профиля
  • SOCKS5 с логином и паролем не работает в Chromium-браузерах и Firefox. Документация Chrome прямо говорит: авторизации для SOCKS5 нет. Берите HTTP с логином и паролем или SOCKS5 с белым списком IP в плане GeekProxy
  • Включите двухфакторку в каждом аккаунте: Settings, Two-Factor Authentication, по SMS или через приложение. После включения API принимает только API-ключ, Basic-авторизация перестаёт работать

6 Проверка работы

Начните с curl -x http://LOGIN:PASSWORD@IP:PORT https://ipinfo.io/json. IP в ответе должен совпасть с записью в Allow Listed IP Addresses. Затем вызов профиля из раздела 4 через прокси, ждём 200 и JSON.

Третья проверка доказывает, что список реально работает: тот же вызов профиля без -x. Его должны отбить. Пока тестируете, держите сессию через прокси открытой в соседней вкладке, чтобы одна ошибка не оставила вас без входа.

7 Какой продукт GeekProxy подходит

IP Access Management по предупреждению самого Twilio функция для статического IP, поэтому сценарии с API и консолью живут на статическом ISP или выделенном датацентре IPv4: один фиксированный адрес на аккаунт и никакого счётчика трафика на JSON. Residential Turbo нужен только для SMTP-релея, потому что почтовые порты доступны там (подробности в поддержке). Residential Flex закрывает порты отправки, а у мобильных с SendGrid нет документированных преимуществ.

8 Частые проблемы

Заблокировало сразу после включения списка

Добавленный IP не тот, с которого вы ходите, или выход сменился. Документация Twilio ровно это и обещает для нестатического IP. Восстановление идёт через их проверку личности, так что лучше не доводить: добавляйте статический IP GeekProxy из Recent Access Attempts, сидя через него.

API отбивает ключ, который вчера работал

Та же причина со стороны скрипта. Сравните https://ipinfo.io/json через прокси с записью в списке. Sticky-сессия на резидентском плане истекла и переехала.

sendgrid-python не видит SOCKS-прокси

urllib не говорит по SOCKS. Укажите в https_proxy URL со схемой http://. ISP и датацентр-планы GeekProxy отдают HTTP на том же порту.

Basic-авторизация перестала работать

Включена двухфакторка. SendGrid после этого требует для API именно ключ. Создайте его и используйте заголовок Bearer.

Аккаунт на проверке

Стадии: Warned, Suspended (почта держится до 72 часов), Deactivated и Banned. Триггер то, что Twilio называет apparent abnormal activity. Смены IP входа в этом списке нет. Репутация отправки есть, так что чините качество базы, а не сеть.

Не получается? Напишите нам в Telegram, Discord или в чат на сайте. Обычно отвечаем в течение нескольких минут.

Статический IP для SendGrid

ISP и датацентр-адреса без ротации, HTTP и SOCKS5, выдача за секунды.

Заказать

We use cookies to improve user experience. By clicking "Yes, I agree", you consent to this use of cookies.

Привилегия первых: В честь глобального запуска [мы даем скидку 50%+] на все датацентр тарифы. Эксклюзивное предложение для наших стартовых партнеров.