amazon-web-services - AWS 私有子网 EC2 上的 SMTP,网络无法访问 [errorno 101]
问题描述
尝试使用以下代码在私有子网EC2 机器上的 python 脚本中使用 SMTPlib 发送电子邮件。EC2 机器通过 与内部 SMTP 服务器进行通信PORT 25
,使用telnet
命令进行验证。此代码在公共子网 EC2 中运行良好,但在私有子网底部引发错误。
import smtplib
from email.MIMEMultipart import MIMEMultipart #python 2
msg = MIMEMultipart()
msg['From'] = 'myid@domain.com'
msg['To'] = 'youid@domain.com'
msg['Subject'] = 'simple email in python'
message = 'here is the email'
mailserver = smtplib.SMTP('smtp.gmail.com',25)
mailserver.ehlo()
mailserver.starttls()
mailserver.ehlo()
mailserver.login('myid@domain.com', 'password')
mailserver.sendmail('myid@domain.com','youid@domain.com',msg.as_string())
mailserver.quit()
收到此错误socket.error: errorno[101] - Network is unreachable
解决方案
- 您的 smtp 所在的私有子网中是否有 NAT 网关?
- 您的服务器所在的私有子网上是否有活动的访问控制层?是不是阻挡了什么?
- 还要检查公共子网中的 ACL 规则
- 附加到服务器的安全组,它是否打开?
推荐阅读
- java - Javafx 在前台运行 fx 线程并在后台运行自己的线程
- react-native - ignite-jhipster 不适用于后端 Jhipster
- python - python列出三个问题并给出错误信息
- sqlalchemy - SQLAlchemy 可以缓存更新吗
- ruby-on-rails - 无法通过 webpacker 应用程序在我的 Rails 上使用引导导航栏
- angular - 如何处理在 Angular 中异步初始化的属性?
- java - 在 Gradle 项目中获取 Kotlin/Java 代码中的版本
- sqoop - 在数据处理之间会发生什么 sqoop 失败
- mysql - 解决在分区表上使用两个唯一键的问题
- powershell - Powershell 2.0 中直接引用属性