diff -urN ../exim-4.89.orig/src/transports/smtp.c ./src/transports/smtp.c --- ../exim-4.89.orig/src/transports/smtp.c 2017-03-04 23:21:35.000000000 +0200 +++ ./src/transports/smtp.c 2017-03-10 13:13:00.000000000 +0200 @@ -849,6 +849,13 @@ if (!sx->verify) msglog_line(sx->host, addr->message); + /* Stupid postfix answers 4xx for unknown users */ + if ((sx->buffer[0] == '4') && (Ustrstr(sx->buffer, "Recipient address rejected: User unknown in local recipient table"))) sx->buffer[0] = '5'; + if ((sx->buffer[0] == '4') && (Ustrstr(sx->buffer, "Recipient address rejected: User unknown in virtual mailbox table"))) sx->buffer[0] = '5'; + if ((sx->buffer[0] == '4') && (Ustrstr(sx->buffer, "Recipient address rejected: User unknown in relay recipient table"))) sx->buffer[0] = '5'; + if ((sx->buffer[0] == '4') && (Ustrstr(sx->buffer, "unknown user account"))) sx->buffer[0] = '5'; + if ((sx->buffer[0] == '4') && (Ustrstr(sx->buffer, "Recipient address rejected: undeliverable address"))) sx->buffer[0] = '5'; + /* The response was 5xx */ if (sx->buffer[0] == '5') diff -urN ../exim-4.89.orig/src/verify.c ./src/verify.c --- ../exim-4.89.orig/src/verify.c 2017-03-04 23:21:35.000000000 +0200 +++ ./src/verify.c 2017-03-10 13:10:45.000000000 +0200 @@ -446,6 +446,13 @@ addr->user_message = string_sprintf("Callout verification failed:\n%s", resp); + /* Stupid postfix answers 4xx for unknown users */ + if ((resp[0] == '4') && (Ustrstr(resp, "Recipient address rejected: User unknown in local recipient table"))) resp[0] = '5'; + if ((resp[0] == '4') && (Ustrstr(resp, "Recipient address rejected: User unknown in virtual mailbox table"))) resp[0] = '5'; + if ((resp[0] == '4') && (Ustrstr(resp, "Recipient address rejected: User unknown in relay recipient table"))) resp[0] = '5'; + if ((resp[0] == '4') && (Ustrstr(resp, "unknown user account"))) resp[0] = '5'; + if ((resp[0] == '4') && (Ustrstr(resp, "Recipient address rejected: undeliverable address"))) resp[0] = '5'; + /* Hard rejection ends the process */ if (resp[0] == '5') /* Address rejected */