--- /dev/null
+diff -Nur postfix-1.1.2.orig/src/bounce/bounce_notify_util.c postfix-1.1.2/src/bounce/bounce_notify_util.c
+--- postfix-1.1.2.orig/src/bounce/bounce_notify_util.c Mon Nov 26 22:47:05 2001
++++ postfix-1.1.2/src/bounce/bounce_notify_util.c Mon Jan 28 12:33:52 2002
+@@ -275,7 +275,7 @@
+ post_mail_fputs(bounce, dest == var_bounce_rcpt
+ || dest == var_2bounce_rcpt || dest == var_delay_rcpt ?
+ "Subject: Postmaster Copy: Undelivered Mail" :
+- "Subject: Undelivered Mail Returned to Sender");
++ "Subject: Zwrot niedostarczonej poczty / Undelivered Mail Returned to Sender");
+ }
+
+ /*
+@@ -285,7 +285,7 @@
+ post_mail_fputs(bounce, dest == var_bounce_rcpt
+ || dest == var_2bounce_rcpt || dest == var_delay_rcpt ?
+ "Subject: Postmaster Warning: Delayed Mail" :
+- "Subject: Delayed Mail (still being retried)");
++ "Subject: Opoznienie wyslania / Delayed Mail (still being retried)");
+ }
+ post_mail_fprintf(bounce, "To: %s",
+ STR(quote_822_local(bounce_info->buf, dest)));
+@@ -300,15 +300,6 @@
+ post_mail_fputs(bounce, "");
+ post_mail_fputs(bounce, "This is a MIME-encapsulated message.");
+
+- /*
+- * MIME header.
+- */
+- post_mail_fputs(bounce, "");
+- post_mail_fprintf(bounce, "--%s", bounce_info->mime_boundary);
+- post_mail_fprintf(bounce, "Content-Description: %s", "Notification");
+- post_mail_fprintf(bounce, "Content-Type: %s", "text/plain");
+- post_mail_fputs(bounce, "");
+-
+ return (vstream_ferror(bounce));
+ }
+
+@@ -324,6 +315,73 @@
+ * word wrapping to make the text look nicer. No matter how hard we would
+ * try, receiving bounced mail will always suck.
+ */
++
++
++ /* teraz po polsku */
++ post_mail_fputs(bounce, "");
++ post_mail_fprintf(bounce, "--%s", bounce_info->mime_boundary);
++ post_mail_fprintf(bounce, "Content-Description: %s", "Informacja");
++ post_mail_fprintf(bounce, "Content-Type: %s", "text/plain; charset=iso-8859-2");
++ post_mail_fprintf(bounce, "Content-Transfer-Encoding: %s", "8bit");
++ post_mail_fputs(bounce, "");
++
++ post_mail_fprintf(bounce, "Informacja od systemu pocztowego %s.",
++ var_myhostname);
++ post_mail_fputs(bounce, "");
++ if (bounce_info->flush) {
++ post_mail_fputs(bounce,
++ "Twój list nie móg³ byæ dostarczony do jednego");
++ post_mail_fputs(bounce,
++ "lub wiêkszej liczby odbiorców.");
++ } else {
++ post_mail_fputs(bounce,
++ "########################################################################");
++ post_mail_fputs(bounce,
++ "# TO JEST TYLKO OSTRZE¯ENIE. NIE MUSISZ PONOWNIE WYSY£AÆ SWOJEGO LISTU #");
++ post_mail_fputs(bounce,
++ "########################################################################");
++ post_mail_fputs(bounce, "");
++ post_mail_fprintf(bounce,
++ "Twój list nie móg³ byæ dostarczony przez %.1f godzin.",
++ var_delay_warn_time);
++ post_mail_fprintf(bounce,
++ "Bêd± podejmowane próby wys³ania jeszcze przez %.1f dni.",
++ var_max_queue_time);
++ }
++
++ post_mail_fputs(bounce, "");
++
++ /* FIXME */
++#if 0
++ post_mail_fprintf(bounce,
++ "For further assistance, please contact <%s>",
++ STR(canon_addr_external(buf, MAIL_ADDR_POSTMASTER)));
++ if (flush) {
++ post_mail_fputs(bounce, "");
++ post_mail_fprintf(bounce,
++ "If you do so, please include this problem report. You can");
++ post_mail_fprintf(bounce,
++ "delete your own text from the message returned below.");
++ post_mail_fprintf(bounce,
++ "If you do so, please include this problem report. You can");
++ post_mail_fprintf(bounce,
++ "delete your own text from the message returned below.");
++ }
++ /* FIXME */
++ post_mail_fputs(bounce, "");
++ post_mail_fprintf(bounce, "\t\t\tProgram %s", var_mail_name);
++ post_mail_fputs(bounce, "");
++#endif
++
++ /*
++ * MIME header.
++ */
++ post_mail_fputs(bounce, "");
++ post_mail_fprintf(bounce, "--%s", bounce_info->mime_boundary);
++ post_mail_fprintf(bounce, "Content-Description: %s", "Notification");
++ post_mail_fprintf(bounce, "Content-Type: %s", "text/plain");
++ post_mail_fputs(bounce, "");
++
+ post_mail_fprintf(bounce, "This is the %s program at host %s.",
+ var_mail_name, var_myhostname);
+ post_mail_fputs(bounce, "");
+@@ -347,7 +405,7 @@
+ "It will be retried until it is %.1f days old.",
+ var_max_queue_time / 86400.0);
+ }
+-
++#if 0
+ post_mail_fputs(bounce, "");
+ post_mail_fprintf(bounce,
+ "For further assistance, please send mail to <%s>",
+@@ -359,6 +417,7 @@
+ post_mail_fprintf(bounce,
+ "delete your own text from the message returned below.");
+ }
++#endif
+ post_mail_fputs(bounce, "");
+ post_mail_fprintf(bounce, "\t\t\tThe %s program", var_mail_name);
+ return (vstream_ferror(bounce));
+@@ -420,6 +479,7 @@
+ if (bounce_info->log_handle == 0
+ || bounce_log_rewind(bounce_info->log_handle)) {
+ post_mail_fputs(bounce, "\t--- Delivery error report unavailable ---");
++ post_mail_fputs(bounce, "\t--- Raport dostarczenia niedostepny ---");
+ } else {
+ while (bounce_log_read(bounce_info->log_handle) != 0)
+ if (bounce_recipient_log(bounce, bounce_info) != 0)
+@@ -440,7 +500,8 @@
+ post_mail_fprintf(bounce, "--%s", bounce_info->mime_boundary);
+ post_mail_fprintf(bounce, "Content-Description: %s",
+ "Delivery error report");
+- post_mail_fprintf(bounce, "Content-Type: %s", "message/delivery-status");
++ post_mail_fprintf(bounce, "Content-Type: %s", "message/delivery-status; charset=iso-8859-2");
++ post_mail_fprintf(bounce, "Content-Transfer-Encoding: %s", "8bit");
+
+ /*
+ * According to RFC 1894: The body of a message/delivery-status consists
+@@ -529,6 +590,7 @@
+ if (bounce_info->orig_offs == 0 || vstream_fseek(bounce_info->orig_fp,
+ bounce_info->orig_offs, SEEK_SET) < 0) {
+ post_mail_fputs(bounce, "\t--- Undelivered message unavailable ---");
++ post_mail_fputs(bounce, "\t--- Niedostepna kopia niedostarczonego listu ---");
+ return (vstream_ferror(bounce));
+ }
+
+diff -Nur postfix-1.1.2.orig/src/global/pipe_command.c postfix-1.1.2/src/global/pipe_command.c
+--- postfix-1.1.2.orig/src/global/pipe_command.c Tue Nov 27 02:02:17 2001
++++ postfix-1.1.2/src/global/pipe_command.c Mon Jan 28 12:33:52 2002
+@@ -482,9 +482,9 @@
+ if (pipe_command_wait_or_kill(pid, &wait_status, SIGKILL) < 0)
+ msg_fatal("wait: %m");
+ if (pipe_command_timeout) {
+- vstring_sprintf(why, "Command time limit exceeded: \"%s\"%s%s",
++ vstring_sprintf(why, "Przekroczony czas wykonania polecania / Command time limit exceeded: \"%s\"%s%s",
+ args.command,
+- log_len ? ". Command output: " : "", log_buf);
++ log_len ? ". Wyniki polecenia / Command output: " : "", log_buf);
+ return (PIPE_STAT_BOUNCE);
+ }
+
+@@ -494,28 +494,28 @@
+ */
+ if (!NORMAL_EXIT_STATUS(wait_status)) {
+ if (WIFSIGNALED(wait_status)) {
+- vstring_sprintf(why, "Command died with signal %d: \"%s\"%s%s",
++ vstring_sprintf(why, "Polecenia zakonczone blendem / Command died with signal %d: \"%s\"%s%s",
+ WTERMSIG(wait_status),
+ args.command,
+- log_len ? ". Command output: " : "", log_buf);
++ log_len ? ". Wynik polecenia / Command output: " : "", log_buf);
+ return (PIPE_STAT_DEFER);
+ } else if (SYS_EXITS_CODE(WEXITSTATUS(wait_status))) {
+ vstring_sprintf(why, "%s%s%s",
+ sys_exits_strerror(WEXITSTATUS(wait_status)),
+- log_len ? ". Command output: " : "", log_buf);
++ log_len ? ". Wynik polecenia / Command output: " : "", log_buf);
+ return (sys_exits_softerror(WEXITSTATUS(wait_status)) ?
+ PIPE_STAT_DEFER : PIPE_STAT_BOUNCE);
+ } else {
+- vstring_sprintf(why, "Command died with status %d: \"%s\"%s%s",
++ vstring_sprintf(why, "Polecenie zakonczone bledem / Command died with status %d: \"%s\"%s%s",
+ WEXITSTATUS(wait_status),
+ args.command,
+- log_len ? ". Command output: " : "", log_buf);
++ log_len ? ". Wynik polecenia / Command output: " : "", log_buf);
+ return (PIPE_STAT_BOUNCE);
+ }
+ } else if (write_status & MAIL_COPY_STAT_CORRUPT) {
+ return (PIPE_STAT_CORRUPT);
+ } else if (write_status && errno != EPIPE) {
+- vstring_sprintf(why, "Command failed: %m: \"%s\"", args.command);
++ vstring_sprintf(why, "Polecenie niepowiodlo sie / Command failed: %m: \"%s\"", args.command);
+ return (PIPE_STAT_DEFER);
+ } else {
+ return (PIPE_STAT_OK);
+diff -Nur postfix-1.1.2.orig/src/global/sys_exits.c postfix-1.1.2/src/global/sys_exits.c
+--- postfix-1.1.2.orig/src/global/sys_exits.c Fri Dec 11 19:55:25 1998
++++ postfix-1.1.2/src/global/sys_exits.c Mon Jan 28 12:33:52 2002
+@@ -60,21 +60,21 @@
+ } SYS_EXITS_TABLE;
+
+ static SYS_EXITS_TABLE sys_exits_table[] = {
+- 0, EX_USAGE, "command line usage error",
+- 0, EX_DATAERR, "data format error",
++ 0, EX_USAGE, "bledne wywylanie polecanie / command line usage error",
++ 0, EX_DATAERR, "blad formatu danych / data format error",
+ 0, EX_NOINPUT, "cannot open input",
+- 0, EX_NOUSER, "user unknown",
++ 0, EX_NOUSER, "nieznany uzytkownik / user unknown",
+ 0, EX_NOHOST, "host name unknown",
+- 0, EX_UNAVAILABLE, "service unavailable",
+- 0, EX_SOFTWARE, "internal software error",
++ 0, EX_UNAVAILABLE, "niedostepny serwis / service unavailable",
++ 0, EX_SOFTWARE, "wewnetrzny blad oprogramowania / internal software error",
+ 1, EX_OSERR, "system resource problem",
+ 0, EX_OSFILE, "critical OS file missing",
+ 0, EX_CANTCREAT, "can't create user output file",
+ 0, EX_IOERR, "input/output error",
+- 1, EX_TEMPFAIL, "temporary failure",
++ 1, EX_TEMPFAIL, "chwilowe niepowodzenie / temporary failure",
+ 0, EX_PROTOCOL, "remote error in protocol",
+- 0, EX_NOPERM, "permission denied",
+- 0, EX_CONFIG, "local configuration error",
++ 0, EX_NOPERM, "brak dostêpu / permission denied",
++ 0, EX_CONFIG, "blad lokalnej konfiguracji / local configuration error",
+ };
+
+ /* sys_exits_strerror - map exit status to error string */
+
+--- postfix-2.0.10/src/smtpd/smtpd_check.c.orig Sun Jun 1 12:38:56 2003
++++ postfix-2.0.10/src/smtpd/smtpd_check.c Sun Jun 1 12:57:27 2003
+@@ -988,7 +988,7 @@
+ */
+ if (!valid_hostaddr(test_addr, DONT_GRIPE))
+ stat = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: invalid ip address",
++ "%d <%s>: %s odrzucony/rejected: niepoprawny adres IP/invalid IP address",
+ var_bad_name_code, reply_name, reply_class);
+ else
+ stat = SMTPD_CHECK_DUNNO;
+@@ -1024,7 +1024,7 @@
+ */
+ if (!valid_hostname(test_name, DONT_GRIPE))
+ stat = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: Invalid name",
++ "%d <%s>: %s odrzucony/rejected: Niepoprawna nazwa / Invalid name",
+ var_bad_name_code, reply_name, reply_class);
+ else
+ stat = SMTPD_CHECK_DUNNO;
+@@ -1060,7 +1060,7 @@
+ */
+ if (!valid_hostname(test_name, DONT_GRIPE) || !strchr(test_name, '.'))
+ stat = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: need fully-qualified hostname",
++ "%d <%s>: %s odrzucowny/rejected: need fully-qualified hostname",
+ var_non_fqdn_code, reply_name, reply_class);
+ else
+ stat = SMTPD_CHECK_DUNNO;
+@@ -1095,7 +1095,7 @@
+ (VSTRING *) 0, RR_ADDR_TYPES, T_MX, 0);
+ if (dns_status == DNS_NOTFOUND)
+ return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: Host not found",
++ "%d <%s>: %s odrzucony/rejected: Host not found",
+ var_unk_name_code,
+ reply_name, reply_class));
+ else if (dns_status != DNS_OK)
+@@ -1120,7 +1120,7 @@
+ (VSTRING *) 0, RR_ADDR_TYPES, T_MX, 0);
+ if (dns_status == DNS_NOTFOUND)
+ return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: Domain not found",
++ "%d <%s>: %s odrzucony/rejected: Domain not found",
+ var_unk_addr_code,
+ reply_name, reply_class));
+ else if (dns_status != DNS_OK)
+@@ -1201,7 +1201,8 @@
+ vstring_strcat(reply_msg, "%d <%s>: %s ");
+ vstring_strcat(reply_msg, var_reject_reply_msg_access_denied);
+ return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- vstring_export(reply_msg), var_relay_code, reply_name, reply_class));
++ "%d <%s>: %s odrzucony/rejected: Relay access denied",
++ var_relay_code, reply_name, reply_class));
+ }
+
+ /* permit_auth_destination - OK for message relaying */
+@@ -1650,7 +1651,7 @@
+ */
+ if (!*test_dom || !valid_hostname(test_dom, DONT_GRIPE) || !strchr(test_dom, '.'))
+ stat = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: need fully-qualified address",
++ "%d <%s>: %s odrzucony/rejected: need fully-qualified address",
+ var_non_fqdn_code, reply_name, reply_class);
+ else
+ stat = SMTPD_CHECK_DUNNO;
+@@ -1766,9 +1767,9 @@
+ */
+ if (STREQUAL(value, "REJECT", cmd_len)) {
+ return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: %s",
++ "%d <%s>: %s odrzucony/rejected: %s",
+ var_access_map_code, reply_name, reply_class,
+- *cmd_text ? cmd_text : "Access denied"));
++ *cmd_text ? cmd_text : "Brak dostepu / Access denied"));
+ }
+
+ /*
+@@ -1858,7 +1859,7 @@
+ && ISDIGIT(value[0]) && ISDIGIT(value[1]) && ISDIGIT(value[2])) {
+ code = atoi(value);
+ return (smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: %s",
++ "%d <%s>: %s odrzucony/rejected: %s",
+ code, reply_name, reply_class, cmd_text));
+ }
+
+@@ -2743,14 +2744,14 @@
+ cpp[1], PERMIT_ALL);
+ } else if (strcasecmp(name, DEFER_ALL) == 0) {
+ status = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: Try again later",
++ "%d <%s>: %s odrzucony/rejected: Sprobuj pozniej / Try again later",
+ var_defer_code, reply_name, reply_class);
+ if (cpp[1] != 0 && state->warn_if_reject == 0)
+ msg_warn("restriction `%s' after `%s' is ignored",
+ cpp[1], DEFER_ALL);
+ } else if (strcasecmp(name, REJECT_ALL) == 0) {
+ status = smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "%d <%s>: %s rejected: Access denied",
++ "%d <%s>: %s odrzucony/rejected: Brak dostepu / Access denied",
+ var_reject_code, reply_name, reply_class);
+ if (cpp[1] != 0 && state->warn_if_reject == 0)
+ msg_warn("restriction `%s' after `%s' is ignored",
+@@ -3356,10 +3357,10 @@
+ strlen(MAIL_ADDR_MAIL_DAEMON))
+ && NOMATCH(local_rcpt_maps, CONST_STR(reply->recipient)))
+ return (smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
+- "%d <%s>: User unknown%s",
++ "%d <%s>: Nieznany uzytkownik / User unknown%s",
+ var_local_rcpt_code, recipient,
+ var_show_unk_rcpt_table ?
+- " in local recipient table" : ""));
++ " in local recipient table" : ""));
+
+ /*
+ * Reject mail to unknown addresses in virtual mailbox domains.
+@@ -3368,10 +3369,10 @@
+ && *var_virt_mailbox_maps
+ && NOMATCHV8(virt_mailbox_maps, CONST_STR(reply->recipient)))
+ return (smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
+- "%d <%s>: User unknown%s",
++ "%d <%s>: Nieznany uzytkownik / User unknown%s",
+ var_virt_mailbox_code, recipient,
+ var_show_unk_rcpt_table ?
+- " in virtual mailbox table" : ""));
++ " in virtual mailbox table" : ""));
+
+ /*
+ * Reject mail to unknown addresses in relay domains.
+@@ -3380,7 +3381,7 @@
+ && *var_relay_rcpt_maps
+ && NOMATCH(relay_rcpt_maps, CONST_STR(reply->recipient)))
+ return (smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
+- "%d <%s>: User unknown%s",
++ "%d <%s>: Nieznany uzytkownik / User unknown%s",
+ var_relay_rcpt_code, recipient,
+ var_show_unk_rcpt_table ?
+ " in relay recipient table" : ""));
+@@ -3415,7 +3416,7 @@
+
+ if (var_message_limit > 0 && size > var_message_limit) {
+ (void) smtpd_check_reject(state, MAIL_ERROR_POLICY,
+- "552 Message size exceeds fixed limit");
++ "552 Przekroczony rozmiar wiadomosci / Message size exceeds fixed limit");
+ return (STR(error_text));
+ }
+ fsspace(".", &fsbuf);