SMTP Send/Receive 使用外部服务器

SMTP Send/Receive using external server

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

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

并发症:IT 部门希望我使用我们的内部 MS Exchange 服务器而不是主机上的 smtp 服务器来协助解决垃圾邮件问题。

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

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

我乐于接受建议。服务器是 Centos 7 x64.

如果交换服务器收到传入邮件,那么您应该能够使用 PHP 的内置 IMAP 功能从交换服务器上的邮箱中提取邮件。参见 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]

我们的交换服务器配置为不将邮件从内部主机中继到垃圾邮件网关。 IT 很高兴,脚本有效。