Spec-Zone.ru › Ruby on Rails 6.1

class ActionMailbox::Ingresses::Relay::InboundEmailsController

Parent:
ActionMailbox::BaseController

Обрабатывает входящие электронные письма, переданные по 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 неправильно настроена или недоступна

Использование

  1. Укажите Action Mailbox для приема писем по SMTP-реле:

    # config/environments/production.rb
    config.action_mailbox.ingress = :relay
    
  2. Сгенерируйте надежный пароль, который Action Mailbox может использовать для аутентификации запросов на вход.

    Используйте bin/rails credentials:edit для добавления пароля в зашифрованные данные приложения под action_mailbox.ingress_password, где Action Mailbox автоматически найдет его:

    action_mailbox:
      ingress_password: ...

    В качестве альтернативы, укажите пароль в переменной окружения RAILS_INBOUND_EMAIL_PASSWORD.

  3. Настройте свой 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)

Методы класса

create() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API