diff -r fd53f083768c Lib/smtpd.py --- a/Lib/smtpd.py Sat Mar 08 21:40:29 2014 -0500 +++ b/Lib/smtpd.py Wed Apr 02 13:37:08 2014 +0200 @@ -136,6 +136,7 @@ self.received_data = '' self.fqdn = socket.getfqdn() self.num_bytes = 0 + self.decode_data = True try: self.peer = conn.getpeername() except OSError as err: @@ -287,7 +288,10 @@ return elif limit: self.num_bytes += len(data) - self.received_lines.append(str(data, "utf-8")) + if self.decode_data == True: + self.received_lines.append(str(data, "utf-8")) + else: + self.received_lines.append(data) # Implementation of base class abstract method def found_terminator(self): @@ -319,6 +323,8 @@ method(arg) return else: + if self.decode_data == False: + self.received_lines.append(str(line,"utf-8")) if self.smtp_state != self.DATA: self.push('451 Internal confusion') self.num_bytes = 0