Ошибка SMTP: адрес получателя отказался при попытке отправить электронное письмо с использованием python и postfix

Я получаю эту ошибку:

поднять SMTPRecipientsRefused(senderrs) smtplib.SMTPRecipientsRefused: {'[email protected]': (550, '5.1.1 : Адрес получателя отклонен: hotmail.com')}

при попытке запустить мой скрипт Python.

Независимо от того, какой адрес получателя я ввел, он все равно выдаст мне ту же ошибку. У меня установлена ​​конфигурация postfix как локальная, и она правильно распознает «localhost», но не любой из адресов отправителя. Это мой код:

 import smtplib

 def sendEmail(addressFrom, addressTo, msg):
    server = smtplib.SMTP('localhost')
    server.set_debuglevel(1)
    server.sendmail(addressFrom, addressTo, msg)
    server.quit()

 msg = "This is the content of the email"
 addressFrom = ""
 addressTo = "[email protected]"

 sendEmail(addressFrom, addressTo, msg)

А это файл main.cf для постфикса. Глядя на это сейчас, mydestination настроен только на локальные адреса, может ли это быть проблемой?

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = user-desktop
**mydomain = hotmail.com**
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
**mydestination = user-desktop, localhost.$mydomain www.$mydomain**
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
default_transport = error
relay_transport = error
inet_protocols = ipv4

заранее спасибо


person user1186173    schedule 02.03.2012    source источник


Ответы (3)


Ваш код выглядит нормально. Скорее всего, это проблема конфигурации Postfix.

person Sahand    schedule 02.03.2012
comment
Действительно? Будет ли полезно, если я выложу файл конфигурации? - person user1186173; 02.03.2012
comment
Глядя на это сейчас, mydestination настроен только на локальные адреса, может ли это быть проблемой? Да, точно. См. postfix.org/postconf.5.html#mydestination. - person Sahand; 02.03.2012
comment
Спасибо за эту ссылку, она определенно была полезной, я внес пару изменений, но все равно получаю ту же ошибку. Кроме того, я хочу иметь возможность отправлять электронную почту на любой домен, а не только на определенный. Я чувствую, что текущая конфигурация предназначена только для определенных доменов. - person user1186173; 02.03.2012
comment
У меня была аналогичная беда. Если вы используете дистрибутив Linux на основе Debian (например, Ubuntu), вы можете исправить это с помощью sudo dpkg-reconfigure postfix и изменить конфигурацию с локальной доставки только на интернет-сайт. - person user85461; 01.04.2013

Я столкнулся с аналогичной проблемой в моем скрипте Python.

Используйте следующую команду, чтобы изменить конфигурацию Postfix на Интернет-сайт.

sudo dpkg-reconfigure postfix

Измените конфигурацию Postfix на Интернет-сайт. Это решит вашу проблему и сможет отправлять почту на любой почтовый адрес.

person Gokul Karthik    schedule 02.08.2018

Привет у меня была похожая проблема. Я получал ошибку:

(550, «5.7.1 У клиента нет прав на отправку в качестве этого отправителя»)

Включение TLS, добавление команд ehlo явно устранило проблему для меня. Надеюсь, поможет.

def mail(msg):
    email_server = "mail.some-server.com"
    sender = "[email protected]"
    to = "[email protected]"
    subject = "How about those Mariners!"
    headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, to, subject)
    text = msg
    message = headers + text
    mailServer = smtplib.SMTP(email_server)
    mailServer.set_debuglevel(1)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login('user', 'pass')
    mailServer.ehlo()
    mailServer.sendmail(sender, to, message)
    mailServer.quit()
person MunkeyWrench    schedule 06.03.2013