操作邮箱的后缀设置
Postfix Setup for Action Mailbox
我按照 Rails 指南中官方 Ruby 的说明进行操作。我可以 运行 接收邮件的脚本。
但我不知道如何调用 action_mailbox:ingress:postfix 命令。
不知何故,我必须切换到工作区,然后 运行 bin/rails。
将邮件发送到 rails 是否有一些最佳实践?
来自guide:
Configure Postfix to pipe inbound emails to bin/rails action_mailbox:ingress:postfix
, providing the URL
of the Postfix ingress and the INGRESS_PASSWORD
you previously generated. If your application lived at https://example.com
, the full command would look like this:
$ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/relay/inbound_emails INGRESS_PASSWORD=...
所以后缀是 运行 命令
您可以按照以下步骤在生产服务器中使用操作邮箱配置 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 和 which rbenv 命令获取的内容 RBENV_PATH
$ $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 步:配置 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:
- 接下来,
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}
我们应该指定用户,这样脚本是由该用户 运行 而不是 postfix 或 nobody。 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
查看 postfix 日志。
大功告成!您现在应该可以在您的操作邮箱中收到电子邮件。
您可以在此处详细了解解决方案:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-2/
开发中设置action邮箱和测试,详细可以看这里:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-1/
我按照 Rails 指南中官方 Ruby 的说明进行操作。我可以 运行 接收邮件的脚本。
但我不知道如何调用 action_mailbox:ingress:postfix 命令。 不知何故,我必须切换到工作区,然后 运行 bin/rails。 将邮件发送到 rails 是否有一些最佳实践?
来自guide:
Configure Postfix to pipe inbound emails to
bin/rails action_mailbox:ingress:postfix
, providing theURL
of the Postfix ingress and theINGRESS_PASSWORD
you previously generated. If your application lived athttps://example.com
, the full command would look like this:$ bin/rails action_mailbox:ingress:postfix URL=https://example.com/rails/action_mailbox/relay/inbound_emails INGRESS_PASSWORD=...
所以后缀是 运行 命令
您可以按照以下步骤在生产服务器中使用操作邮箱配置 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 和 which rbenv 命令获取的内容 RBENV_PATH
$ $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 步:配置 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:
- 接下来,
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}
我们应该指定用户,这样脚本是由该用户 运行 而不是 postfix 或 nobody。 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
查看 postfix 日志。
大功告成!您现在应该可以在您的操作邮箱中收到电子邮件。
您可以在此处详细了解解决方案:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-2/
开发中设置action邮箱和测试,详细可以看这里:https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-1/