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


SMTP Send/Receive using external server

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

  1. 以电子邮件形式从账单中收到的新产品
  2. 当前localhost smtp服务器接收电子邮件,并配置为使用~/mail/new/folder将每个电子邮件作为一个文件
  3. 脚本读取文件夹,解析每个电子邮件文件,然后创建一个项目来跟踪出现

复杂情况: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是快乐的,脚本工作。