diff -urN src.orig/transports/smtp.c src/transports/smtp.c --- src.orig/transports/smtp.c Thu Aug 30 17:31:06 2007 +++ src/transports/smtp.c Sun Jan 6 21:23:01 2008 @@ -706,6 +706,12 @@ 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, "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 Aug 30 17:31:06 2007 +++ src/verify.c Sun Jan 6 21:21:45 2008 @@ -722,6 +722,12 @@ 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, "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 */