使用 CPanel 以编程方式将消息插入电子邮件帐户 API

Programmatically inserting messages to an email account with CPanel API

我正在寻找一种以编程方式将邮件插入特定电子邮件帐户的方法 - 使用 CPanel 创建和维护。

我有一个网站,它为视频游戏的内部消息传递提供了一个网络邮件界面(使用它的 API),我想将这项服务更进一步,使消息在 POP3 服务器上可用。

到目前为止,我已经通过多种方式寻找解决方案:


使用 CPanel 的 API 插入邮件: 我找不到 api 调用,仅用于创建新帐户(使用 https://documentation.cpanel.net/display/SDK/UAPI+Functions+-+Email%3A%3Aadd_pop) 这是我的首选方法,因为我宁愿不理会文件系统。


手动将邮件插入文件系统: 我发现,Cpanel 将电子邮件数据存储在 root/mail/domain/user/ 但是我不知道确切的文件结构。我认识 maildirsize 文件和其他包含邮件的目录,但我不知道 maildirsize 文件的结构(似乎包含 2 个整数除以每行 space),而且邮件文件的文件名也不是明显的。这是文件名的示例:

1422094110.H186037P182351.hosting-server-domain.com,S=15645

我宁愿使用此方法作为备用方法,因为可用的文档很少(或者我没有找到任何有用的文档)。


只需 E-mail 所有自定义消息 headers: 这将是最简单的方法,但是托管服务提供商有非常严格的 anti-spam 策略和外发消息数量限制。


实现一个自己的 POP3 服务器: 我试过@cleong 的 PHP 实现(),当它在本地主机上工作时,我我不确定它是否会在实时页面上兜风。我也找到了一个 Perl 实现,它可能值得一试,但我从未使用过 Perl,在学习如何实现和集成该模块之前,我宁愿先看看另一个解决方案。

感谢您阅读所有这些,

巴林特

听起来电子邮件是使用 Maildir 格式存储的。这使得插入邮件相当简单。有关完整详细信息,请参阅 Maildir specification,但总而言之:

  • 最难的部分:使用该页面上建议的技术(例如本地主机名加上高分辨率时间戳加上高质量随机数)为邮件创建一个保证唯一的名称。
  • .../Maildir/tmp/
  • 下创建同名文件
  • 将文件重命名为 .../Maildir/new。此重命名步骤可确保邮件软件只能看到完整格式的邮件 - 即,当您写到一半时,没有其他进程会尝试查看该文件。

就是这样!