问题标签 [smtpd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python:用于生产邮件接收的 smtpd(或替代方法)?
我正在寻找对电子邮件进行各种处理 - 例如。检查标头,如果它们符合某些标准(看起来像垃圾邮件),则断开连接,或检查收件人列表并执行特殊过滤。
看起来 Python 的 smtpd 库为处理收到的电子邮件提供了一个漂亮而简单的界面。
要在邮件完全处理之前处理邮件(例如,在邮件头看起来像垃圾邮件的情况下删除邮件),我应该使用 handle_connect 吗?内部 API(除了 process_message)是否记录在某处?任何地方的示例代码?
另外,有人在生产中使用过 smtpd 吗?对可靠性等有什么想法吗?
关于 Twisted:我已经尝试过多次使用 Twisted,并且非常喜欢延迟模型,但它对于我目前的口味来说有点太复杂了。我再看一下,但现在我对非 Twisted 实现更感兴趣。
java - Java 应用程序接收传入电子邮件的最简单方法是什么?
使用 commons-email 发送电子邮件很容易,而使用 spring 则更容易。收到收到的电子邮件怎么办?是否有易于使用的 API 允许退回电子邮件、处理附件等?
python - 将 SMTP AUTH 支持添加到 Python smtpd 库...无法覆盖该方法?
因此,我想扩展 Python smtpd SMTPServer 类,以便它可以处理 SMTP AUTH 连接。看起来很简单...
所以,看起来我可以这样开始:
但由于某种原因,它永远不会被调用。Python smtpd 库调用其他类似的方法,如下所示:
为什么它不会调用我的方法?
在那之后,我认为我可能只是覆盖整个 found_terminator(self): 方法,但这似乎也不起作用。
我是在做傻事还是……?也许我今天还没有完全醒来……
python - Python asyncore 与普通的旧 C
我正在对 2 个不同的项目进行压力测试:一个是 proxsmtpd - 用 C 编写的 smtp 代理,另一个是 smtp_proxy.py,它是我在 1 小时内开发的,使用 asyncore 和 smtpd python 模块。
我在重负载下强调了这两个项目,并发现 proxsmtpd 能够保持 400 个 smtp 会话/秒,而我的 python 程序只能执行 160 个 smtp 会话/秒。
所以,我的问题是,是因为 asyncore 中存在一些性能限制,还是因为 C 程序更快?或者也许是我,以低效的方式使用异步?
email - How to parse e-mail bounce notifications
What options do I have to parse the e-mails that have bounced? I am receiving the bounce notification from e-mail servers but don't know what to do with it.
python - 使用 Python smtpd 模块发送/接收电子邮件
我正在尝试使用 Python smtpd模块制作一个简单的 smtp 服务器。我可以收到一封电子邮件并打印出来。我尝试将电子邮件发送回给我发送带有 hello world 消息的电子邮件的人,但我最终陷入了无限循环。我尝试使用自己的服务器发送电子邮件,它只是将其解释为已收到的另一封电子邮件。
如何使用它来发送和接收电子邮件?
注意:在示例中未使用真实的电子邮件地址。注意 2:不将其用作邮件服务器。只想为简单的服务发送/接收简单的电子邮件。
python - 服务器建议 (smtp)
我目前正在做一个很小的项目。我的工作基于 smtpd.py,但慢慢地朝着完全不同的方向发展。
这是一个 smtp 服务器。它目前接收并可以中继邮件。这很简单,但我已经到了问自己一些问题的地步。
smtpd.py 使用 asyncore 和 asychat。问题是它是使用异步 api 的单个进程。一切正常,我可以毫无问题地走得更远。
问题是如果服务器绑定在端口 25 上,它必须在 root uid 下。所以这是个大问题。smtp 服务器背后的想法是我可以使用 python 实现很多东西。我希望能够访问本地用户、数据库或任何可能的数据存储。从哈希或python当前支持的任何东西,或者如果需要我什至可以添加对它的支持。
问题是我觉得使用 root 用户进行所有这些控制是非常不安全的......如果有人可以做某事并最终得到一个 root python shell 怎么办......
所以起初我想创建线程并使用 os.setuid 为它们设置不同的 uid,但它似乎不起作用或者也可能很危险。
我的第二个想法:接受连接然后分叉并更改uid。我应该能够从分叉的进程中写入/读取套接字,一切都应该没问题。
第三个想法是有一个代理服务器将所有消息中继到一个本地服务器,该服务器将自己处理这些消息。唯一的问题是,如果有人不应该使用我的 smtp 服务器,则代理无法进行身份验证或执行任何操作,因为它只是一个无法实际访问任何内容的代理。
我相信分叉是最有趣的解决方案。
或者可能有一些我还没有完成的事情。
不管怎样,谢谢
- 编辑 -
显然,如果进程以 root 启动并且一旦创建了套接字,就可以使用 os.setuid 切换到不同的用户。我想它不是真正的便携,但现在这不是一个大问题。在搜索了 Pyramid/Pylons/Paste 的代码后,我终于遇到了那个东西!SocketServer模块。我可能会使用 ForkingMixIn 或 ThredingMixIn。可以定义线程数量等。
无论如何,对于那些想知道我为什么不使用 postfix、exim 或 qmail 的人来说。这很简单,我并没有真正制作 smtp 服务器。如果您只实现接收电子邮件、接受或拒绝收件人或发件人等所需的最低要求,则 smtp 协议非常简单。转义第一个“。” 因为 RFC 说数据以“\r\n.\r\n”结尾。
在我看来,python 更像是积木。这个想法不是制作一个 smtp 服务器(我肯定会实现 ESMTP),而是制作一个“框架”来构建您自己的服务器。我遇到的问题,我不相信我是一个人。有人设计了一个配置文件和一种配置后缀的方法。它是硬编码的,并不适合所有情况。制作适合所有情况的服务器也行不通。它可能会变得巨大而丑陋。这样做的目的是让您可以轻松地在服务器上添加所需的部分。如果您想使用数据库,请使用您想要的现有模块。做你的查询并发回你的结果。
如果您真的想定义适用于所有域或某些域甚至用户名的规则,应该可以这样做。
例如,我看到一个用例。真的很奇怪,但仍然。仅使用一台服务器在 postfix 上设置这种设置是多么容易。你有三个域。a.com,b.com,c.com。
a.com 使用相同的用户名将所有收到的邮件发送到 maildir 和 b.com。b.com 使用相同的用户名将所有收到的邮件发送到 maildir 和 c.com。c.com 将所有收到的邮件发送到 maildir 和具有相同用户名的 a.com。
没有域接受他们已经发送的电子邮件。
换句话说
这里的想法是邮件将在多个域中复制,但无法返回给其所有者。这种用例应该很简单。但是如果所有域都将他们的邮件保存在不同的位置,或者我们希望每 2 次退回来保存邮件怎么办。
python - Python SMTPD 库覆盖版本
当有人连接到这个 smtp 服务器时,我想发出我自己的消息。
但是,我仍然收到以下回复:
如何覆盖 python 中的欢迎消息以查看“TEST EMAIL SERVER”?
postfix-mta - 配置 Postfix 中继主机
我正在尝试在 /etc/postfix/main.cf 中配置使用中继主机的后缀:
通过telnet localhost 25
后缀日志发送电子邮件后说:
SMTP 服务器(中继主机)日志:
任何想法如何解决?
操作系统:ubuntu。