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 может использовать для аутентификации запросов к входящему потоку.
Используйте
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 (<tt>bin/rails action_mailbox:ingress:exim)
-
Postfix (<tt>bin/rails action_mailbox:ingress:postfix)
-
Qmail (<tt>bin/rails action_mailbox:ingress:qmail)
-
Открытые методы экземпляров
# File actionmailbox/app/controllers/action_mailbox/ingresses/relay/inbound_emails_controller.rb, line 54 def create ActionMailbox::InboundEmail.create_and_extract_message_id! request.body.read end
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.