diff -urN src.orig/transports/smtp.c src/transports/smtp.c --- src.orig/transports/smtp.c Fri Sep 28 15:21:57 2007 +++ src/transports/smtp.c Thu May 1 17:31:21 2008 @@ -728,6 +728,13 @@ setflag(addr, af_pass_message); deliver_msglog("%s %s\n", tod_stamp(tod_log), 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 src.orig/verify.c src/verify.c --- src.orig/verify.c Thu Jun 14 17:18:19 2007 +++ src/verify.c Thu May 1 17:32:08 2008 @@ -722,6 +722,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 */