SMTP使用外部服务器发送/接收

时间:2015-02-27 20:12:45

标签: php linux email smtp

我创建了一个PHP脚本,其工作方式如下:

  1. 通过电子邮件形式从结算中收到新产品
  2. 当前localhost smtp服务器接收电子邮件并配置为使用〜/ mail / new /文件夹将每封电子邮件作为文件放置
  3. 脚本读取文件夹,解析每个电子邮件文件,然后创建一个项目以跟踪开通
  4. 复杂性:IT部门希望我使用内部MS Exchange服务器而不是主机上的smtp服务器来协助解决垃圾邮件问题。

    所以基本上我需要弄清楚两件事中的一件。我能想到的最简单的事情是配置postfix以使用Exchange SMTP服务器发送/接收邮件,但是我只能找到有关如何通过中继主机发送邮件而不是接收邮件的指南。我也发现了ssmtp,但它只是发送了。我想过用ssmtp每隔10分钟发送和设置一种cron来检查收到的电子邮件。

    第二个选项是将SMTP详细信息硬编码到php脚本中,我反对这样做。

    我愿意接受建议。服务器是Centos 7 x64。

2 个答案:

答案 0 :(得分:0)

如果交换服务器收到传入消息,那么您应该能够使用PHP的内置IMAP功能从Exchange服务器上的邮箱中获取消息。请参阅http://php.net/manual/en/book.imap.php

答案 1 :(得分:0)

我最终使用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很高兴,脚本有效。