【问题标题】:Postfix Setup for Action Mailbox动作邮箱的后缀设置
【发布时间】:2019-10-10 15:23:12
【问题描述】:

我按照官方 Ruby on Rails 指南中的说明进行操作。我可以在收到的邮件上运行脚本。

但我不知道如何调用 action_mailbox:ingress:postfix 命令。 不知何故,我必须切换到工作区,然后运行 ​​bin/rails。 将邮件发送到 Rails 是否有一些最佳实践?

【问题讨论】:

  • 嗨,Johnathan,您能发表一下您是如何解决这个问题的,并帮助像我这样努力使用操作邮箱配置 postfix 的其他开发人员吗?谢谢!

标签: ruby-on-rails ruby-on-rails-6


【解决方案1】:

您可以按照以下步骤在生产服务器中使用操作邮箱配置 postfix:

第 1 步:创建 bash 脚本

/usr/local/bin/ 中创建一个脚本,将所有收到的电子邮件转发到我们的 Rails 应用程序:

$ nano email_forwarder.sh

在脚本中添加以下内容:

#!/bin/sh
export HOME=YOUR_HOME_PATH
export PATH=YOUR_PATH
export RBENV_ROOT=YOUR_RBENV_PATH

cd /path/to/your/project && bin/rails action_mailbox:ingress:postfix URL='https://truemark.com.np/rails/action_mailbox/relay/inbound_emails' INGRESS_PASSWORD='YOUR_INGRESS_PASSWORD'

替换HOMEPATHRBENV_ROOTURLINGRESS_PASSWORD 的值,如下所述:

  • 复制HOME 的主目录
$ cd
$ pwd
  • 复制您从 $PATH 获得的内容,并分别为 PATH 和 RBENV_PATH 复制哪个 rbenv 命令
$ $PATH
$ which rbenv
  • 将您添加到credentialsENV / application.yml 文件中的密码复制到INGRESS_PASSWORD

  • 对于 URL,如果您的应用程序位于 https://example.com,则完整命令如下所示:

bin/rails action_mailbox:ingress:postfix URL='https://example.com/rails/action_mailbox/relay/inbound_emails' INGRESS_PASSWORD='YOUR_STRONG_PASSWORD'

第 2 步:配置 Postfix 以通过管道将传入的电子邮件发送到脚本

  • 创建/etc/postfix/virtual_aliases 以添加一个包罗万象的别名; localuser 需要是现有的本地用户:
# /etc/postfix/virtual_aliases
@mydomain.tld   localuser@mydomain.tld
  • 创建/etc/postfix/transport 以添加传输映射。 forward_to_rails 可以是任何你想要的;后面会用到master.cf
# /etc/postfix/transport
mydomain.tld    forward_to_rails:
  • 接下来,transportvirtual_aliases 都需要编译成 berkeley db 文件:
$ sudo postmap /etc/postfix/virtual_aliases
$ sudo postmap /etc/postfix/transport
  • 将传输添加到/etc/postfix/master.cf
# /etc/postfix/master.cf
forward_to_rails   unix  -       n       n       -       -       pipe
  flags=Xhq user=deploy:deploy argv=/usr/local/bin/email_forwarder.sh
  ${nexthop} ${user}

我们应该指定用户,以便脚本由该用户运行,而不是后缀或无人。 user=deploy:deploy~user=user:group

  • /etc/postfix/main.cf中添加关注
# /etc/postfix/main.cf
  transport_maps = hash:/etc/postfix/transport
  virtual_alias_maps = hash:/etc/postfix/virtual_aliases

您可以使用tail -f /var/log/mail.log查看后缀日志。

完成了!您现在应该可以在您的操作邮箱中收到电子邮件了。

您可以在此处详细了解解决方案:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-2/

关于在开发中设置动作邮箱和测试,你可以在这里详细阅读:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-1/

【讨论】:

  • 您能在这里总结一下您的发现吗?提供更多信息的链接很好,但没有它,您的答案应该是独立的。
【解决方案2】:

来自guide

Configure Postfix 将入站电子邮件通过管道传输到 bin/rails action_mailbox:ingress:postfix,提供 Postfix 入口的 URL 和您之前生成的 INGRESS_PASSWORD。如果您的应用程序位于https://example.com,则完整的命令如下所示: $ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/relay/inbound_emails INGRESS_PASSWORD=...

所以 postfix 是运行该命令的那个

【讨论】:

  • 我告诉 postfix 使用哪个用户。这很好,但我只能从 rails 应用程序文件夹运行这个 rails 命令(如果我是正确的)。所以我尝试切换文件夹,但失败了。我想知道我是否不能有一个 ruby​​ 脚本来发送不需要整个 rails 应用程序的邮件。
  • 你告诉postfix如何运行脚本了吗?它应该是 mailbox_command = /path/to/my/script.sh 之类的东西,并且在该脚本中放置类似 bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/relay/inbound_emails INGRESS_PASSWORD=... 的东西,如果您需要,该脚本可以位于您的 rails 应用程序文件夹中
  • 我尝试直接调用 bin/rails,但由于缺少 rake 文件而失败。我会尝试添加一个脚本。无论如何,我需要在我的邮件服务器上安装 rails 应用程序很烦人。当我使用脚本时,我担心会丢失邮件正文,并且我不确定应该如何传递它。
  • 您不需要将您的应用程序放在您的电子邮件服务器上,但您需要在与您的应用程序相同的服务器上配置一个后缀实例,然后从您的主要电子邮件服务器中继到它。在与您的应用程序一起运行的那个上,您需要配置邮箱脚本。对于丢失的 rake 文件,请尝试cd /path/to/your/app && rails action_mailbox ...
  • 我不能使用 cd 作为 execvp 执行的。无论如何,后缀手册 (postfix.org/pipe.8.html) 告诉我,我可以将工作目录作为参数。下一个问题我不能使用 ruby​​ 命令,因为我使用 rvm 并且配置文件没有加载。所以我通过 ruby​​ 调用了 bin/rails:/path/to/rvm/ruby bin/rails。这似乎可行,但由于某种原因,它现在缺少宝石:-/
猜你喜欢
  • 2021-12-28
  • 1970-01-01
  • 2018-11-01
  • 2017-05-14
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多