![通过虚拟机发送邮件](https://linux22.com/image/44945/%E9%80%9A%E8%BF%87%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6.png)
我使用基本的 Python 脚本在我的机器中成功执行了一些非常基本的 SMTP 发送:
.... things ...
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, recievers, message.format(now, now))
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
它在我的计算机和 Virtual Box 中的 Ubuntu 服务器上都运行良好。现在我想使用另一台服务器作为主机从一台服务器发送一封电子邮件。
我尝试在我的虚拟主机中进行更改
smtpObj = smtplib.SMTP('localhost')
和
smtpObj = smtplib.SMTP('IP of my PC') #IP get from "ifconfig -a"
但不起作用。
我错过了什么吗?
答案1
它在我的机器和 Virtual Box 中的 Ubuntu 服务器中都运行良好。现在我想使用另一台服务器作为主机从一台服务器发送一封电子邮件。
正如您提到的,它在两台机器上都可以工作,然后localhost
可能IP address of host
是邮件服务器仅在本地主机上运行,因此您需要将 Postfix 邮件服务器绑定到所有或特定的 IP 地址到接口。
Postfix IP地址绑定配置:
打开/etc/postfix/main.cf
文件
按如下方式附加/修改行以仅绑定到 localhost (127.0.0.1):
inet_interfaces = NEW_IP_ADDRESS,127.0.0.1
保存并关闭文件。当此参数更改时,您需要停止并启动 Postfix。因此,输入以下命令来重新启动 Postfix:
/etc/init.d/postfix restart
如果您使用的是sendmail:
打开/etc/mail/sendmail.cf
找到以 DaemonPortOptions 开头的行,然后替换Addr=127.0.0.1
为Addr=0.0.0.0
注意:0.0.0.0 表示所有活动接口。
然后重新启动 sendmail 并验证一切正常:
netstat -tulpn | grep 25
tail -f /var/log/maillog