Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SMTP error: "Recipient addressed refused" when trying to send an email using python and postfix

I'm getting this error:

raise SMTPRecipientsRefused(senderrs) smtplib.SMTPRecipientsRefused: {'[email protected]': (550, '5.1.1 : Recipient address rejected: hotmail.com')}

when trying to run my python script.

Regardless of what recipient address I put in, it will still give me the same error. I have postfix's configuration installed as local and it properly recognizes 'localhost' but not any of the sender addresses. This is my code:

 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)

And this is the main.cf file for postfix. Looking at it now,mydestination is only set to local addresses, could that be the issue?

# 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

Thank you in advance

like image 542
user1186173 Avatar asked Mar 02 '12 17:03

user1186173


People also ask

Which protocol is used for email transfer using Python?

Python comes with the built-in smtplib module for sending emails using the Simple Mail Transfer Protocol (SMTP). smtplib uses the RFC 821 protocol for SMTP.

How does Python SMTP work?

Simple Mail Transfer Protocol (SMTP) is a protocol, which handles sending e-mail and routing e-mail between mail servers. Python provides smtplib module, which defines an SMTP client session object that can be used to send mail to any Internet machine with an SMTP or ESMTP listener daemon.

How do you send to multiple recipients in SMTP Python?

If you want to use smtplib to send email to multiple recipients, use email. Message. add_header('To', eachRecipientAsString) to add them, and then when you invoke the sendmail method, use email. Message.


2 Answers

I faced a similar issue in my python script.

Use the following command to change the configuration of Postfix to Internet Site

sudo dpkg-reconfigure postfix

Change the Postfix configuration to Internet Site. This will resolve your problem and can send mail to any mail address.

like image 126
Gokul Karthik Avatar answered Oct 07 '22 00:10

Gokul Karthik


Your code looks OK. This is very likely a configuration issue with Postfix.

like image 24
Sahand Avatar answered Oct 07 '22 00:10

Sahand