socket.error:[Errno 13]创建假电子邮件服务器时权限被拒绝

Tak*_*son 6 python sockets flask

我正在尝试创建一个虚假的电子邮件服务器作为Flask应用程序的一部分,通过使用以下脚本在控制台上打印出错误.但是,它会抛出错误.我怎样才能解决这个问题?

dpadmins-MacBook:microblog presentation$ python -m smtpd -n -c DebuggingServer localhost:25

Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162,     in _run_module_as_main
"__main__", fname, loader, pkg_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
  exec code in run_globals
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtpd.py", line 536,  in <module>
  (options.remotehost, options.remoteport))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtpd.py", line 285, in __init__
 self.bind(localaddr)
 File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/asyncore.py", line 342, in bind
 return self.socket.bind(addr)
 File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
 return getattr(self._sock,name)(*args)
socket.error: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)

sol*_*rnz 29

在unix(Linux,Mac OS X,BSD等)系统中,普通用户无法绑定小于1024的端口,只有root用户可以绑定到这些端口.

为了解决这个问题,你可以以root身份运行你的python应用程序(通过使用sudo),但这不是更好的选择.是否可以让你的Flask应用程序与更高端口上的localhost通信,例如2525?然后,您需要修改用于启动smtp服务器以在端口2525而不是25上绑定的命令.