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 (<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–2020 David Heinemeier Hansson
Licensed under the MIT License.