![如何在运行 sendmail 的服务器上将 fetchmail 与 procmail(或 maildrop)一起使用?](https://linux22.com/image/212447/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%BF%90%E8%A1%8C%20sendmail%20%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E5%B0%86%20fetchmail%20%E4%B8%8E%20procmail%EF%BC%88%E6%88%96%20maildrop%EF%BC%89%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%EF%BC%9F.png)
我有亚马逊Linux中的实例AWS EC2。它们sendmail
相互通信,并通过商业电子邮件提供商 SMARTHOST 发送外发邮件。没有 MX 记录指向我的 EC2 实例的公共 IP 地址,并且没有打开传入邮件端口。我真正想要的是每当用户提交表单时,商业网站 (goformz.com) 都会向我在这些实例上托管的网站发送带有 PDF 表单的 POST 请求。但在他们弄清楚如何做到这一点之前,我可以按照他们当前的行为,让他们通过电子邮件将 PDF 附件发送到商业电子邮件服务器上的地址。
经过一番绞尽脑汁后,看起来我可能可以通过安装fetchmail
或procmail
或来获得我需要的东西maildrop
,无需修改我的sendmail
配置。而且它“应该”非常简单。我熟悉使用 procmail
在 ~/.forward 文件中作为用户,但是在阅读文档后,在我的 EC2 服务器上安装和配置它让我感到困惑。它看起来像两者fetchmail
都想procmail
作为守护进程运行,并将消息传递给其他服务器。我预计它将fetchmail
作为守护进程运行,以某种频率通过 IMAP 从商业电子邮件帐户获取消息,然后同步地对每条消息调用procmail
,规则是将消息通过管道传输到 PHP 脚本,该脚本将提取附件并处理其中的表单字段。如果脚本调用必须位于 ~/.forward 文件中,我会硬连接用户目录,但我不知道如何设置它。任何人都可以直接告诉我这一点,也许只需指向可以解决这种情况的文档的指针?
我发现了其他看起来相似的已回答问题,但没有一个启发了我。我发现似乎假设服务器将postfix
作为 MTA 运行。
答案1
这看起来相当混乱。 Procmail 不作为守护进程运行,如果您这样配置,它会被 Fetchmail、Sendmail 等作为传递代理调用。不过,关于为什么您认为需要 Fetchmail 的整个故事似乎是错误的。但对您的问题的简短回答是,只需按照您的预期使用它即可。如果只是为了这个单一目的,您甚至可以将其配置为运行您的 PHP 脚本而不是 Procmail(尽管我怀疑您的 PHP 脚本在面对故障时是否会稳健,因此将其包装在 Procmail 中可能是一个好主意) 。
我对 Fechmail 不太熟悉,但是 IIRC 你将其配置为使用 Procmail 与类似的东西
mda "procmail /home/you/.procmailrc"
也许您-d
还想要一个选择或一些其他装饰品。
您运行的邮件服务器通常非常无趣,当消息要在本地传递时,它们都具有模糊相似的调度 Procmail(或另一个 LDA)的机制。如果常规 MTA 流应与 Fetchmail 流分开,您可能希望将其配置为绕过默认的系统范围/etc/procmailrc
,但在您的情况下,听起来您根本不需要从 Sendmail 运行 Procmail,因此您可以保持简单。