класс ActionMailbox::Ingresses::Relay::InboundEmailsController
Обрабатывает входящие электронные письма, переданные с сервера SMTP.
Проверяет запросы с помощью аутентификации HTTP Basic. Имя пользователя всегда actionmailbox, а пароль считывается из зашифрованных данных приложения или переменной окружения. См. раздел «Использование» ниже.
Обратите внимание, что аутентификация Basic небезопасна по протоколу 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–2021 David Heinemeier Hansson
Licensed under the MIT License.