我遵循了官方Ruby on Rails Guide的说明。我可以在传入邮件上运行脚本。
但是我不知道如何调用action_mailbox:ingress: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'
替换HOME
、PATH
、RBENV_ROOT
、URL
和INGRESS_PASSWORD
的值,如下所述:
- 复制您的主目录以进行
HOME
$ cd
$ pwd
- 复制您从$PATH获取的内容以及分别用于 PATH 和 RBENV_PATH 的 rbenv 命令
$ $PATH
$ which rbenv
复制您添加到
credentials
的密码或您的ENV
/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:将后缀配置为将传入电子邮件管道到脚本
- 创建
/etc/postfix/virtual_aliases
以添加 catch-all 别名;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:
- 接下来,
transport
和virtual_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/
从指南:
配置 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=...
所以后缀是运行该命令的那个