diff -urN ../exim-4.88.orig/src/transports/smtp.c ./src/transports/smtp.c --- ../exim-4.88.orig/src/transports/smtp.c 2016-12-18 16:02:28.000000000 +0200 +++ ./src/transports/smtp.c 2016-12-29 22:50:36.853431154 +0200 @@ -886,6 +886,13 @@ setflag(addr, af_pass_message); msglog_line(host, addr->message); + /* Stupid postfix answers 4xx for unknown users */ + if ((buffer[0] == '4') && (Ustrstr(buffer, "Recipient address rejected: User unknown in local recipient table"))) buffer[0] = '5'; + if ((buffer[0] == '4') && (Ustrstr(buffer, "Recipient address rejected: User unknown in virtual mailbox table"))) buffer[0] = '5'; + if ((buffer[0] == '4') && (Ustrstr(buffer, "Recipient address rejected: User unknown in relay recipient table"))) buffer[0] = '5'; + if ((buffer[0] == '4') && (Ustrstr(buffer, "unknown user account"))) buffer[0] = '5'; + if ((buffer[0] == '4') && (Ustrstr(buffer, "Recipient address rejected: undeliverable address"))) buffer[0] = '5'; + /* The response was 5xx */ if (buffer[0] == '5') diff -urN ../exim-4.88.orig/src/verify.c ./src/verify.c --- ../exim-4.88.orig/src/verify.c 2016-12-18 16:02:28.000000000 +0200 +++ ./src/verify.c 2016-12-29 22:49:34.835432591 +0200 @@ -1253,6 +1253,13 @@ : string_sprintf("Called: %s\nSent: %s\nResponse: %s", host->address, big_buffer, responsebuffer); + /* Stupid postfix answers 4xx for unknown users */ + if ((responsebuffer[0] == '4') && (Ustrstr(responsebuffer, "Recipient address rejected: User unknown in local recipient table"))) responsebuffer[0] = '5'; + if ((responsebuffer[0] == '4') && (Ustrstr(responsebuffer, "Recipient address rejected: User unknown in virtual mailbox table"))) responsebuffer[0] = '5'; + if ((responsebuffer[0] == '4') && (Ustrstr(responsebuffer, "Recipient address rejected: User unknown in relay recipient table"))) responsebuffer[0] = '5'; + if ((responsebuffer[0] == '4') && (Ustrstr(responsebuffer, "unknown user account"))) responsebuffer[0] = '5'; + if ((responsebuffer[0] == '4') && (Ustrstr(responsebuffer, "Recipient address rejected: undeliverable address"))) responsebuffer[0] = '5'; + /* Hard rejection ends the process */ if (responsebuffer[0] == '5') /* Address rejected */