如何在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的文章了解更多详情。