我需要将 *@domain.com 转发到一个脚本。
我知道EXIM 方式和PROCMAIL方式。
有没有更简单的方法?有什么经验吗?如果我只想将电子邮件发送到脚本,哪一个是最快的?(没有弹出帐户,没有其他的)
(我知道 qmail,但我不想安装会占用服务器太多资源的“大”软件)。
答案1
您问的其实是 MTA(邮件传输代理)而不是 MDA(邮件投递代理)。您的问题包括对两者的评论(Procmail 是 MDA,exim 是 MTA)。
在您的案例中,您只需“交付”到您的脚本即可处理任何 MDA。在 exim 中,类似这样的别名username: |/path/to/script
足以完成该部分,无需复杂的内部路由或 MDA。
至于 MTA,Exim 实际上相当轻量。它不提供 pop 帐户或其他任何东西,它只处理与其他邮件服务器的聊天以接受消息,然后将其传递给某人(通常是 MDA 或其他邮件服务器)。
不要尝试进行非标准设置,短路常规保护,例如 MTA 对收到的邮件进行验证等,这样会让以后的生活变得更加复杂。只需将正确的部分连接在一起即可。使用上述的 exim 中的管道别名是一种非常简单的方法,可以将邮件路由到脚本,并且仍然可以像 MTA 一样正常运行。
答案2
您是否真的希望脚本只运行,而不管传递给它的是什么?或者您是否希望正确处理 SMTP?
最轻松的方式可能是使用类似 Python 的 Twisted 库来监听 SMTP 或 node.jsSMTP 服务器脚本,并让其在每条需要的消息上触发一个脚本。这样,您便可获得完整的多线程,而不需要太多其他阻碍。
我想说的是,Exim 和其他类似的程序对于 99% 的使用来说速度已经足够快了。
答案3
如果您可以在唯一 IP 上腾出端口 25,那么使用netcat
监听端口 25 怎么样?这确实是零负载和安装。在重启/失败后重新启动它的包装脚本也应该很容易。
答案4
如果你只想接收电子邮件,你可以使用类似http://code.google.com/p/subethasmtp/。
您可以使用此库创建一个 1 文件 Java 程序,它将接受所有电子邮件并为其执行一些代码。问题是您需要在机器上安装 Java。