Spec-Zone.ru › Ruby on Rails 6.0

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 может использовать для аутентификации запросов к входящему потоку.

    Используйте 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–2019 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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