如何在linux中轻松接收邮件并将其提供给Rails?

我一直在谷歌搜索postfix howto’s,但我仍然无法弄清楚我如何设法在linux-server上接收电子邮件 (更具体的 – Ubuntu)。

我需要的只是一个全能邮箱,它可以获取所有电子邮件并将它们提供给ruby脚本(当然,然后将其传递给Rails)。 我之前能够设置postfix用于发送电子邮件,我不得不说 – 它根本没有痛苦,除了实际安装它之外几乎什么也没做。

你能建议一个好的howto,或者一个配方,或者一个可以解决这个问题的替代易于设置的邮件服务器吗?

这个答案分为两部分,Norman Ramsey的答案涵盖了第二部分:将电子邮件交给要处理的脚本。 第一部分是配置Postfix以接收电子邮件。 既然你需要一个全能,你可以把这样的东西放在/ etc / postfix / aliases中

@yourdomain.com localuser 

‘localuser’是系统中具有的帐户的名称

/home/localuser/.forward

其中包含命令(参见Norman的回复)。 或者,你可以在Postfix中保留所有内容

/等/后缀/别名:

@ yourdomain.com | / path / to / your / script

这将发送所有发送到@ yourdomain.com的电子邮件并将其发送到您的脚本进行处理。 请记住,该脚本将作为postfix用户执行,因此您需要确保您的环境设置正确(例如,您不依赖于普通用户帐户所具有的特定$ PATH)。 后缀用户可能有一个非常基本的环境(例如,他们的$ PATH甚至可能没有/ usr / local / bin)

选择您希望接收转发到Ruby脚本的邮件的帐户。 编辑该脚本的主目录中的.forward文件以进行读取

 "|/path/to/my/ruby/script" 

当postfix将邮件递送到帐户时,它将使用指定用户的权限运行脚本,并将在标准输入上提供邮件。 根据您对邮件的处理方式,您可能希望以某种方式对其进行身份validation,以便脚本知道它确实来自您。 (例如,带有salt的标头和salt +密码的SHA1哈希。)

这是我自己的毛茸茸邮件系统的真实例子:

 "|/home/nr/bin/filtermail /home/nr/machine/x86-bsd/bin/luapipe /home/nr/machine/x86-bsd/bin/safe-slocal 2>>/home/nr/slocal.log 1>&2" 

这将转到shell脚本,然后调用Lua和C程序来正确处理邮件。

还可以查看Jason Seifer的文章了解更多详情。

http://jasonseifer.com/2009/04/24/receving-email-with-rails

Interesting Posts