postfix邮箱
这是使用Postfix设置操作邮箱的2系列教程的第二部分。 在这一部分中,我们将在生产服务器中配置postfix以将传入的电子邮件转发到我们的rails应用程序,以便操作邮箱可以对其进行处理。
如果您尚未阅读设置操作邮箱并在开发中进行测试的第一部分,则可以在此处阅读
你应该有
- 在生产服务器中配置的Postfix(与Rails应用相同的服务器)
- 使用Rails 6构建的现有应用程序
- Ruby与rbenv设置
- 忍耐
脚步
先登录到生产服务器,然后再登录;
第1步:创建bash脚本
在/usr/local/bin/
创建一个脚本,将所有传入的电子邮件转发到我们的rails应用程序
shell$ nano email_forwarder.sh
在脚本中添加以下内容
shell# !/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
命令获得的内容
shell$ cd
$ pwd
- 复制从
$PATH
获得的内容,which rbenv
PATH
和RBENV_PATH
which rbenv
命令 shell$ $PATH $ which rbenv
- 复制您添加到
credentials
或ENV
的密码|INGRESS_PASSWORD
application.yml
文件
对于URL
,如果您的应用程序位于https://example.com
,则完整命令如下所示:
bin/rails action_mailbox:ingress:postfixURL =https://example.com/rails/action_mailbox/relay/inbound_emails INGRESS_PASSWORD =YOUR_STRONG_PASSWORD
步骤2:配置后缀以将传入的电子邮件传递到脚本
我们将按照此处描述的步骤进行操作。
创建/etc/postfix/virtual_aliases
以添加一个通用别名; localuser必须是现有的本地用户:
file
# /etc/postfix/virtual_aliases
@mydomain .tld localuser @mydomain .tld
- 创建`/ etc / postfix / transport`添加一个传输映射。 “ forward_to_rails”可以是任何您想要的; 稍后将在`master.cf`中使用
file # /etc/postfix/transport mydomain.tld forward_to_rails:
- 接下来,需要将transport和virtual_aliases都编译为berkeley db文件:
shell$ sudo postmap /etc/postfix/virtual_aliases $ sudo postmap /etc/postfix/transport
- 将传输添加到
/etc/postfix/master.cf
file# /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
添加以下内容 file# /etc/postfix/main.cf transport_maps = hash: /etc/postfix/transport virtual_ alias _maps = hash: /etc/postfix/virtual_aliases
您可以使用查看后缀日志
tail-f / var / log /mail. log
您现在必须拥有一切,才能在Rails应用程序中接收电子邮件。 与您的任何电子邮件提供商进行测试; 只需将电子邮件发送到email@your-configured-domain.com
然后检查日志中是否已收到该电子邮件。 如果您有任何意见或建议,请在下面的评论中让我知道。
参考资料
- https://guides.rubyonrails.org/action_mailbox_basics.html
- https://serverfault.com/questions/258469/how-to-configure-postfix-to-pipe-all-incoming-email-to-a-script
先前发布在 https://thedevpost.com/blog/setup-action-mailbox-with-postfix-part-2/
翻译自: https://hackernoon.com/how-to-setup-action-mailbox-with-postfix-part-2-8xor3v99
postfix邮箱