我被要求提供一种加载传入电子邮件的方式,操纵文本的某些部分,然后将其转发到Web服务器供客户端阅读。 基本上,拦截邮件,把它通过另一个进程,一旦这个过程完成 – 这很重要 – 扔在networking服务器,就像在我的进程截获之前发生的一样。
除了实际的电子邮件文件外,我还需要从MySQL数据库中读取有关该帐户的信息。
邮件服务器是Postfix / Dovecot,Web服务器是Apache – 在CentOs上运行。 他们可能在同一台服务器上运行或不在。 我不想做服务器的工作,扫描病毒或做任何authentication – 所有这一切应该已经发生。
我已经研究过一些caching的想法,甚至使用NginX作为IMAP代理,但我想这就像试图用霰弹枪杀死苍蝇。 更糟糕的是,我实际上并不是一个Web人,所以我不知道所有的Apache错综复杂。
有没有人有任何想法,以什么时间截取这封电子邮件之前,以无缝的方式到达浏览器?
任何帮助将非常感激。
非常感谢
最简单的方法是不直接从后缀执行LDA,而是通过调用包装到某个脚本中的dovecot_lda。
让我们修改后缀configuration:
mailbox_command = /some/path/to/the/script.sh "$SENDER" "$RECIPIENT"
让script.sh包含这样的代码:
#!/bin/sh MSG=$(cat < &0) ARG1=$1 ARG2=$2 # let's deliver message as usual echo "$MSG" | /usr/lib/dovecot/dovecot-lda -f $ARG1 -a $ARG2 # from here we can do anything we want echo "$MSG" > /some/path/to/the/fresh/$$.copy echo $MSG | while read line do if [ $line != '' ] then echo $line >> /some/other/file.txt else echo '---------------------' >> /some/other/file.txt break fi done #####
然后你的软件生成网页只需要读取/ some / path /到/ fresh / *中的所有内容,并将它们包含到html中。
你可能想看看Amavis 。 它主要是作为一个防病毒广告,但你可以禁用这个并运行任何perl脚本你想要的。 你会发现包括示例脚本,其中一些包含调用数据库。 它与Postfix / Dovecot很好地集成在一起。