#amazon-web-services #amazon-ec2 #smtp #smtplib #private-subnet
#amazon-web-services #amazon-ec2 #smtp #smtplib #частная подсеть
Вопрос:
Пытаюсь отправить электронные письма с помощью SMTPlib в скрипте python на компьютере с частной подсетью EC2, используя следующий код. Компьютер 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
Ответ №1:
- есть ли у вас шлюз NAT в частной подсети, где находится ваш smtp?
- есть ли у вас активный уровень контроля доступа в той частной подсети, где расположен ваш сервер? Он что-нибудь блокирует?
- также проверьте правила ACL в общедоступной подсети
- группа безопасности, подключенная к серверу, открыта ли она?
Ответ №2:
Конфигурация почтового сервера была неправильной, и почтовый сервер не требовал входа в систему.
mailserver = smtplib.SMTP(internal office server,25)
#mailserver.login('myid@domain.com', 'password') -- Not required for the server
Спасибо.