Ingests inbound emails from Postmark. Requires a RawEmail
parameter containing a full RFC 822 message.
Authenticates requests using HTTP basic access authentication. The username is always actionmailbox
, and the password is read from the application's encrypted credentials or an environment variable. See the Usage section below.
Note that basic authentication is insecure over unencrypted HTTP. An attacker that intercepts cleartext requests to the Postmark ingress can learn its password. You should only use the Postmark ingress over HTTPS.
Returns:
204 No Content
if an inbound email is successfully recorded and enqueued for routing to the appropriate mailbox
401 Unauthorized
if the request's signature could not be validated
404 Not Found
if Action Mailbox is not configured to accept inbound emails from Postmark
422 Unprocessable Entity
if the request is missing the required RawEmail
parameter
500 Server Error
if the ingress password is not configured, or if one of the Active Record database, the Active Storage service, or the Active Job backend is misconfigured or unavailable
Tell Action Mailbox to accept emails from Postmark:
# config/environments/production.rb config.action_mailbox.ingress = :postmark
Generate a strong password that Action Mailbox can use to authenticate requests to the Postmark ingress.
Use bin/rails credentials:edit
to add the password to your application's encrypted credentials under action_mailbox.ingress_password
, where Action Mailbox will automatically find it:
action_mailbox: ingress_password: ...
Alternatively, provide the password in the RAILS_INBOUND_EMAIL_PASSWORD
environment variable.
Configure Postmark to forward inbound emails to /rails/action_mailbox/postmark/inbound_emails
with the username actionmailbox
and the password you previously generated. If your application lived at https://example.com
, you would configure your Postmark inbound webhook with the following fully-qualified URL:
https://actionmailbox:P[email protected]/rails/action_mailbox/postmark/inbound_emails
NOTE: When configuring your Postmark inbound webhook, be sure to check the box labeled *“Include raw email content in JSON payload”*. Action Mailbox needs the raw email content to work.
# File actionmailbox/app/controllers/action_mailbox/ingresses/postmark/inbound_emails_controller.rb, line 50 def create ActionMailbox::InboundEmail.create_and_extract_message_id! params.require("RawEmail") rescue ActionController::ParameterMissing => error logger.error <<~MESSAGE #{error.message} When configuring your Postmark inbound webhook, be sure to check the box labeled "Include raw email content in JSON payload". MESSAGE head :unprocessable_entity end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.