2012-03-02 5 views
6

sto ottenendo questo errore:errore SMTP: "Destinatario indirizzata rifiutato" quando si tenta di inviare una e-mail utilizzando Python e postfix

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

quando si cerca di eseguire il mio script python.

Indipendentemente dall'indirizzo del destinatario inserito, mi restituirà lo stesso errore. Ho la configurazione di postfix installata come locale e riconosce correttamente 'localhost' ma non nessuno degli indirizzi del mittente. Questo è il mio codice:

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) 

E questo è il file main.cf per Postfix. Guardandolo ora, mydestination è impostato solo su indirizzi locali, potrebbe essere questo il problema?

# 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 

Grazie in anticipo

risposta

1

il codice sia OK. Questo è molto probabilmente un problema di configurazione con Postfix.

+0

Davvero? Sarebbe d'aiuto se avessi postato il file di configurazione? – user1186173

+0

"Guardandolo ora, mydestination è impostato solo su indirizzi locali, potrebbe essere questo il problema?" Si, esattamente. Vedi http://www.postfix.org/postconf.5.html#mydestination – Sahand

+0

Grazie per il collegamento, è stato sicuramente utile, ho apportato un paio di modifiche e ancora, continuo a ricevere lo stesso errore. Inoltre, voglio essere in grado di inviare un'email a qualsiasi dominio, non solo a uno specifico. Mi sento come se la configurazione corrente fosse solo per domini specifici. – user1186173

0

Ciao, ho avuto un problema simile. Stavo ottenendo l'errore:

(550, '5.7.1 del client non dispone delle autorizzazioni per l'invio come questo mittente')

Accensione TLS, aggiungendo l'ehlo comandi esplicitamente risolto il problema per me. Spero che sia d'aiuto.

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()