gpt4 book ai didi

python - 在 python 应用程序中发送和接收电子邮件(无 IMAP 或 POP3)

转载 作者:行者123 更新时间:2023-11-30 23:27:45 24 4
gpt4 key购买 nike

我正在构建一个需要发送和接收电子邮件的应用程序。

但是,我不想拥有单独的电子邮件服务器(或使用 IMAP 和 POP3),因为我需要动态创建/删除/管理收件箱,不需要电子邮件收件箱密码等。

我有一个电子邮件存储数据库,我可以使用自定义的 smtpd 服务器代替 postfix 来接收电子邮件。但是,这样我就无法通过 postfix 发送电子邮件(使用 smtplib,通过端口 25 连接到 postfix 并发送电子邮件)

这个问题有解决办法吗?如何使用自定义 smtp 服务器发送电子邮件?我可以配置 postfix 将所有传入电子邮件中继到在另一个端口中运行的自定义 smtp 服务器,并仍然在端口 25 上使用 postfix 发送电子邮件吗?

感谢您的宝贵时间

最佳答案

通过使用自定义 SMTP 服务器,您可能会面临无意中创建安全漏洞或以某种方式违反 SMTP 协议(protocol)的风险。有这么多优秀的 SMTP 服务器(Postfix、exim、sendmail...),这对我来说听起来不是一个好的选择。

我能想到的解决该问题的最简单方法是使用 Postfix 来中继入站和出站电子邮件。入站电子邮件可以配置为通过管道传送到应用程序,出站电子邮件可以配置为由 Postfix 直接传送或通过不同的服务器中继传送。

这样,您就可以使用能够解析符合 RFC822 的消息文件的应用程序,而不是自定义 SMTP 服务器。这比做完全相同的事情要好,但需要实现 SMTP 协议(protocol)的开销。

如果您需要接收大量消息,这种方法可能无法很好地扩展 - 每条消息都会 fork+exec 一个新进程。如果这是一个要求,一个好的方法是保留一个自定义 SMTP 服务器来完成这项工作,但让 Postfix 中继它的消息 - 然后您将受益于解析器前面的 Postfix 架构。

假设您采用将消息管道传输到应用程序的方法,那么您在 Postfix 中所需要做的就是

  1. 配置 Postfix 的 alias_maps ' 参数来查找这样的 map :

    alias_maps = hash:/etc/aliases, hash:/etc/postfix/app-aliases
  2. 然后,配置映射以将发送到每个地址的消息传送到应用程序中:

    test:         "|/usr/local/bin/your-app"
  3. 像往常一样,不要忘记$ postalias app-aliases

这将使发送到 test@yourdomain 的消息通过管道传输到 /usr/local/bin/your-app,它充当电子邮件网关您的应用程序。

关于python - 在 python 应用程序中发送和接收电子邮件(无 IMAP 或 POP3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21921638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com