класс 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 :unprocessable_entity
end
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.