我创建了一个php脚本,其工作方式如下:
- 以电子邮件形式从账单中收到的新产品
- 当前localhost smtp服务器接收电子邮件,并配置为使用~/mail/new/folder将每个电子邮件作为一个文件
- 脚本读取文件夹,解析每个电子邮件文件,然后创建一个项目来跟踪出现
复杂情况:IT部门希望我使用我们的内部MS Exchange服务器,而不是主机上的smtp服务器来帮助解决垃圾邮件问题。
所以基本上我需要弄清楚两件事中的一件。我能想到的最简单的事情是将postfix配置为使用Exchange SMTP服务器发送/接收邮件,但我只能找到如何通过relayhost而不是接收发送邮件的指南。我也找到了ssmtp,但它也是只发送的。我想过使用ssmtp发送并设置某种cron,每10分钟检查一次收到的电子邮件。
第二种选择是将SMTP详细信息硬编码到php脚本中,我反对这样做。
我愿意接受建议。服务器为Centos 7 x64。
如果传入邮件是由exchange服务器接收的,那么您应该能够使用PHP内置的IMAP函数从exchange服务器上的邮箱中获取邮件。看见http://php.net/manual/en/book.imap.php.
我最终使用fetchmail+postfix来完成这项工作。
已安装fetchmail
sudo yum install fetchmail
我有几个用户在为不同的脚本提供服务,所以我必须为每个用户创建~/.fetchmailrc,格式如下:
poll imap.server.com proto imap:
user "imapusername" is localusername here
with password "password"
folder "Custom Folder"
keep
ssl
fetchall
然后,在每个用户的crontab中,我每十分钟放入一个运行fetchmail的条目:
*/10 * * * * fetchmail
至于发送,我保留了将postfix配置为使用imap服务器作为中继主机的解决方案:
relayhost = [imap.server.com]
我们的exchange服务器配置为不将邮件从内部主机中继到邮件垃圾邮件网关。IT是快乐的,脚本工作。