← Cloudflare Email Service / email-service / api / send-emails
SMTP
Cloudflare Email Service предоставляет аутентифицированную конечную точку отправки по SMTP, поэтому вы можете отправлять письма из любого приложения, фреймворка или готового почтового клиента, поддерживающего SMTP. Используйте SMTP, если REST API и привязка Workers не подходят: например, при интеграции существующего приложения, которое уже использует SMTP, или языковой SMTP-библиотеки (Nodemailer, smtplib, PHPMailer, JavaMail).
Письма, отправленные по SMTP, попадают в тот же конвейер доставки, что и письма через REST API и привязку Workers: на них распространяются те же ограничения, получают одинаковую подпись DKIM и ARC и создают одинаковые журналы доставки.
Конечная точка
smtp.mx.cloudflare.net:465| Параметр | Значение |
|---|---|
| Host | smtp.mx.cloudflare.net |
| Порт | 465 |
| Безопасность | Неявный TLS (также называемый SMTPS) |
SMTP AUTH |
PLAIN или LOGIN |
| Имя пользователя | Буквальная строка api_token |
| Пароль | Токен API Cloudflare (см. ниже) |
Cloudflare поддерживает отправку по SMTP только на порту 465 с неявным TLS. Обычный SMTP, оппортунистический STARTTLS на порту 587, а также ретрансляцию без аутентификации на порту 25 не поддерживаются для исходящей отправки. Порт 25 зарезервирован для входящей почты на Email Routing.
Предварительные требования
Чтобы отправлять письма по SMTP, вам потребуется:
- Учетная запись с Email Sending включено.
- Как минимум один домен подключен в разделе Email Service > Email Sending в Cloudflare dashboard.
- A API-токен Cloudflare на Email Sending: Edit разрешение. Принимаются как токены, принадлежащие аккаунту (рекомендуется), так и токены, принадлежащие пользователю; токен используется как пароль SMTP.
Относитесь к этому токену как к учётным данным. Любой, у кого он окажется, сможет отправлять письма от имени любого подключённого домена на соответствующем аккаунте.
Быстрый старт
Отправьте письмо с одним curl команду. Замените <API_TOKEN> с API-токен Cloudflare у которого есть Email Sending: Edit разрешение, и замените --mail-from и --mail-rcpt адреса на собственные.
cat > mail.txt <<EOF
From: [email protected]
To: [email protected]
Subject: Welcome to our service!
Thanks for signing up.
EOF
curl --ssl-reqd \
--url "smtps://smtp.mx.cloudflare.net:465" \
--user "api_token:<API_TOKEN>" \
--mail-from "[email protected]" \
--mail-rcpt "[email protected]" \
--upload-file mail.txtДомен отправителя ([email protected]) должен быть подключён для Email Sending в аккаунте, которому принадлежит API-токен.
Аутентификация
SMTP-эндпоинт Cloudflare поддерживает два механизма SASL, оба определены в RFC 4954 ↗:
AUTH PLAIN: предпочтительный вариант. Один проход, RFC 4616 ↗.AUTH LOGIN: устаревший draft-murchison-sasl-login ↗. Поддерживается для совместимости со старыми клиентами.
В обоих случаях именем пользователя является буквальная строка api_token а паролем служит ваш API-токен Cloudflare.
Создайте AUTH PLAIN полезная нагрузка
AUTH PLAIN отправляет \0api_token\0<API_TOKEN> в кодировке base64:
printf '\0api_token\0%s' "<API_TOKEN>" | base64Необработанная SMTP-стенограмма
В следующей записи сеанса показана полная аутентифицированная отправка с использованием openssl s_client. Строки, начинающиеся с > отправляются клиентом.
$ openssl s_client -quiet -connect smtp.mx.cloudflare.net:465 -crlf
220 mx.cloudflare.net Cloudflare Email ESMTP Service ready
> EHLO client.example.com
250-mx.cloudflare.net greets client.example.com
250-AUTH PLAIN LOGIN
250-SIZE 5242880
250-8BITMIME
250 ENHANCEDSTATUSCODES
> AUTH PLAIN AGFwaV90b2tlbgBpd0RQLi5oZWw=
235 2.7.0 Authentication successful
> MAIL FROM:<[email protected]>
250 2.1.0 Ok
> RCPT TO:<[email protected]>
250 2.1.5 Ok
> DATA
354 Start mail input; end with <CR><LF>.<CR><LF>
From: [email protected]
To: [email protected]
Subject: Welcome
Thanks for signing up.
.
250 2.0.0 Ok <[email protected]>
> QUIT
221 mx.cloudflare.net Cloudflare Email ESMTP Service closing transmission channel 250 2.0.0 Ok ответ после тела письма включает присвоенный Message-ID. Используйте его, чтобы сопоставить отправку с журналами доставки в панели управления.
Примеры
Примеры для конкретных языков и инструментов: curl, Nodemailer, Python smtplib, а также PHPMailer, см. Отправка писем через SMTP.
Лимиты
Для отправки по SMTP действуют следующие ограничения на сеанс:
| Лимит | Значение |
|---|---|
RCPT TO получателей |
50 за сессию |
SIZE указанный в EHLO |
5 MiB |
AUTH тайм-аут команды |
30 секунд |
DATA тайм-аут команды |
300 секунд |
Общеаккаунтные квоты (дневные лимиты отправки, лимиты содержимого, лимиты заголовков) являются общими для REST API и привязки Workers. См. Лимиты с полным списком.
Коды ответа
SMTP-сервер Cloudflare возвращает стандартные RFC 5321 ↗ коды ответа вместе с RFC 3463 ↗ расширенные коды состояния.
| Код | Значение |
|---|---|
220 |
Служба готова (приветствие после установления TLS-соединения). |
235 2.7.0 |
Аутентификация выполнена успешно. |
250 |
EHLO, MAIL FROM, RCPT TO, или DATA успешно завершено. |
354 |
Готово принять тело письма, завершите с помощью <CR><LF>.<CR><LF>. |
421 |
Служба временно недоступна. Повторите попытку позже. |
451 4.3.0 |
Локальная ошибка: сообщение принято, но отложено. Повторите попытку позже. |
452 4.5.3 |
Слишком много получателей в этой сессии. Откройте новую сессию для остальных. |
500 / 501 |
Синтаксическая ошибка в команде или аргументах. |
503 |
Неверная последовательность команд (например, MAIL FROM перед AUTH). |
530 5.7.0 |
Требуется аутентификация. |
535 5.7.8 |
Сбой аутентификации. См. Устранение неполадок. |
550 5.7.1 |
Отправитель или ретранслятор отклонён: обычно MAIL FROM домен не подключён. |
552 5.3.4 |
Сообщение превышает 5 MiB SIZE лимит. |
554 |
Транзакция не выполнена: содержимое отклонено политикой. |
Устранение неполадок
535 5.7.8 Authentication failed
Возможные причины:
- Имя пользователя не является буквальной строкой
api_token. API-токен указывается в password поле. - У токена отсутствует Email Sending: Edit разрешение.
- Токен был отозван или срок его действия истёк.
- Для токена, принадлежащего пользователю, домен в
MAIL FROMне принадлежит аккаунту, для которого действителен этот токен.
550 5.7.1 Sender denied
Адрес в MAIL FROM находится в домене, который не подключён для Email Sending в аккаунте, которому принадлежит API-токен. Подключите домен в разделе Email Service > Email Sending в панели управления или измените адрес отправителя.
552 5.3.4 Message too big
Размер тела письма (включая вложения после MIME-кодирования) превышает 5 МиБ. Уменьшите размер вложений или разделите сообщение.
Ошибки установления TLS-соединения
SMTP-эндпоинт Cloudflare требует TLS с момента подключения (implicit TLS). Убедитесь, что ваш клиент настроен на SSL/TLS на порту 465, а не STARTTLS на порту 587 (что не поддерживается).
О проблемах аутентификации, связанных с SPF, DKIM или DMARC на стороне получателя, см. Устранение неполадок SPF, DKIM и DMARC.
Дополнительные материалы
- Отправка писем через SMTP : примеры для curl, Nodemailer, Python и PHP.
- REST API : отправляйте письма через HTTPS.
- API Workers : отправляйте письма из Cloudflare Worker с помощью привязок.
- Настройка доменов : подключите домен к Email Sending.
- MTA-STS : принудительно применяйте TLS для входящей почты.
- Заголовки писем : поддерживаемые заголовки и указания для группировки писем в цепочки.
- Лимиты : лимиты для аккаунта, сообщений и сессий.