Python中文
首页
教程
问答
标签
搜索
登录
注册
服务器建议(smtp)
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我目前正在做一个相当小的项目。我的工作是基于smtpd.py公司但慢慢地走向完全不同的东西。在</p> <p>这是一个smtp服务器。它目前可以接收和转发邮件。这是很直截了当的,但我到了一个地步,我问自己一些问题。在</p> <p>在smtpd.py公司使用asyncore和asychat。问题是它是一个使用异步api的进程。一切正常,我可以更进一步,没有太多问题。在</p> <p>问题是,如果服务器绑定在端口25上,它必须在根uid下。所以这是个大问题。smtp服务器背后的想法是,我可以使用python实现很多事情。我想能够访问本地用户,数据库或任何可能的数据存储。我甚至可以在需要时添加对它的支持。在</p> <p>问题是,我觉得使用根用户控制所有这些控件是非常不安全的。。。如果有人能做点什么,最终得到一个根pythonshell。。。在</p> <p>所以一开始我想创建线程并使用操作系统集UID但它似乎不起作用,也可能很危险。在</p> <p>我的第二个想法是:接受连接,然后分叉并更改uid。我应该能够从forked进程写入/读取套接字,一切都应该很好。在</p> <p>第三个想法是有一个代理服务器,将所有消息转发到一个本地服务器,该服务器将自己处理这些消息。唯一的问题是,如果有人不应该使用我的smtp服务器,代理就不能授权或执行任何操作,因为它只是一个没有实际访问权限的代理。在</p> <p>我相信叉子是最有趣的解决办法。在</p> <p>或者有什么我还没想到。在</p> <p>不管怎样,谢谢</p> <p>--编辑--</p> <p>显然,如果进程是用root启动的,并且一旦创建了套接字,就可以使用操作系统集UID. 我想它不是很便携,但现在不是什么大问题。在搜索了金字塔/塔架/锡膏的密码后,我终于找到了那东西!<a href="http://docs.python.org/library/socketserver.html" rel="nofollow">SocketServer</a>模块。我可能会用forking mixin或ThredingMixIn。可以定义线程的数量等</p> <p>无论如何,对于那些想知道我为什么不使用postfix、exim或qmail的人来说。。这很简单,我不是真的做一个smtp服务器。如果只实现接收电子邮件、接受或拒绝收件人或发件人等最低要求,则smtp协议相当简单。。转义每个新行的第一个“.”,因为RFC说数据以“\r\n.\r\n”结尾。在</p> <p>在我看来,python更像是构建块。我们的想法不是要制作一个smtp服务器(我肯定会实现ESMTP),而是要创建一个“框架”来构建自己的服务器。我有问题,我不相信我是孤独的。有人设计了一个配置文件和一种配置postfix的方法。它是硬编码的,不适合所有情况。制造一个适合所有情况的服务器也不会奏效。它可能会变得又大又丑。这样做的目的是使在服务器上添加所需的部件变得容易。如果要使用数据库,请将所需的数据库用于现有模块。进行查询并返回结果。在</p> <p>如果你真的想用某些域名或者域名来定义它,你就可以使用它。在</p> <p>例如,我看到一个用例。真的很奇怪,但还是。只使用一台服务器在postfix上设置这种设置有多容易。你有三个领域。a、 com,b.com,c.com。在</p> <p>a.com使用相同的用户名将所有收到的邮件发送到maildir和b.com。 b、 com使用相同的用户名将所有收到的邮件发送到maildir和c.com。 c、 com使用相同的用户名将所有收到的邮件发送到maildir和a.com。在</p> <p>没有域接受他们已经发送的电子邮件。在</p> <p>在换句话说</p> <pre><code> a.com -> b.com -> c.com -x-> a.com b.com -> c.com -> a.com -x-> b.com ... </code></pre> <p>这里的想法是邮件将被复制到多个域,但它不能返回到它的所有者。这种用例应该非常简单。但是如果所有的域都把他们的邮件保存在不同的位置,或者我们希望每2次跳出保存一次邮件呢。在</p> ^{pr2}$
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这个问题的答案是使用<a href="http://docs.python.org/library/socketserver.html" rel="nofollow">ServerSocket</a>。我将使用线程或分叉子类。它非常灵活,可以毫无畏惧地取代asyncore。它已经被塔,金字塔等使用,但在我的情况下,它将处理smtp消息,而不是http。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当启用身份验证时,超过一定大小的http发布失败
5 回答
当呈现Flask温度时,bokeh图为空
10 回答
当呈现模板时,如何引用sqlalchemy中的自定义字段?
9 回答
当周围有更多相同类型的标记时,如何从一个标记中提取数据
2 回答
当周数跨越多个y时,如何使用Pandas groupby week
1 回答
当呼唤django和python提示时
5 回答
当命令`Brew installPython@2`然后出现错误“Theme error”。如何解决?
7 回答
当命令[1]不存在时,用户输入命令以列出超出范围的索引
3 回答
当命令/启动被发送到bot时,bot应该删除发送给组的标签;但是bot没有
2 回答
当命令lin执行时,导入datetime会在Python脚本中引发ModuleNotFound“math”
5 回答
当命令中提到Bot时,Bot发送其前缀
4 回答
当命令位于DM中时,Python Discord.py bot将角色分配给服务器中的用户
4 回答
当命令在discord.py中缺少必需的参数时,如何显示消息
4 回答
当命令在多个不同的服务器上处于活动状态时,如何在discord.py上使用while循环
1 回答
当命令在提示符下成功运行时,Python subprocess.check_输出产生错误
3 回答
当命令提示时自动按键按回车键
6 回答
当命令提示符意外关闭时,如何访问python虚拟环境?
6 回答
当命令提示符给出导入错误时,当我尝试运行服务器python文件时,需要进行什么更改?
8 回答
当命令有双引号时,如何从python运行windows命令行命令
5 回答
当命令的一部分来自用户inpu时在linux服务器上执行命令的安全方法
9 回答