class ActionMailbox::Ingresses::Relay::InboundEmailsController
Принимает входящие электронные письма, перенаправленные с SMTP-сервера.
Аутентифицирует запросы с помощью базовой HTTP-аутентификации. Имя пользователя всегда actionmailbox, а пароль считывается из зашифрованных учетных данных приложения или переменной окружения. См. раздел «Использование» ниже.
Обратите внимание, что базовая аутентификация небезопасна при использовании незашифрованного HTTP. Злоумышленник, перехвативший незашифрованные запросы к точке приема, может узнать пароль. Используйте эту точку приема только через HTTPS.
Возвращает:
-
204 No Content, если входящее письмо успешно сохранено и поставлено в очередь для маршрутизации в соответствующий почтовый ящик -
401 Unauthorized, если запрос не удалось аутентифицировать -
404 Not Found, если Action Mailbox не настроен на прием входящих писем, перенаправляемых с SMTP-сервера -
415 Unsupported Media Type, если запрос не содержит сообщение RFC 822 -
500 Server Error, если пароль точки приема не настроен либо база данных Active Record, служба Active Storage или серверная часть Active Job настроены неправильно или недоступны
Использование
-
Укажите Action Mailbox принимать электронные письма от SMTP-реле:
# config/environments/production.rb config.action_mailbox.ingress = :relay
-
Создайте надежный пароль, который Action Mailbox будет использовать для аутентификации запросов к точке приема.
Используйте
bin/rails credentials:edit, чтобы добавить пароль в зашифрованные учетные данные приложения под ключомaction_mailbox.ingress_password, где Action Mailbox автоматически его найдет:action_mailbox: ingress_password: ...
Также можно указать пароль в переменной окружения
RAILS_INBOUND_EMAIL_PASSWORD. -
Настройте SMTP-сервер на передачу входящих писем соответствующей команде точки приема, указав
URLточки приема реле иINGRESS_PASSWORD, который вы создали ранее.Если ваше приложение доступно по адресу
https://example.com, настройте SMTP-сервер Postfix на передачу входящих писем следующей команде:$ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/postfix/inbound_emails INGRESS_PASSWORD=...
Встроенные команды точек приема доступны для следующих популярных SMTP-серверов:
-
Exim (
bin/rails action_mailbox:ingress:exim) -
Postfix (
bin/rails action_mailbox:ingress:postfix) -
Qmail (
bin/rails action_mailbox:ingress:qmail)
-
Публичные методы экземпляра
# File actionmailbox/app/controllers/action_mailbox/ingresses/relay/inbound_emails_controller.rb, line 54
def create
if request.body
ActionMailbox::InboundEmail.create_and_extract_message_id! request.body.read
else
head ActionDispatch::Constants::UNPROCESSABLE_CONTENT
end
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.