From: Wietse Venema A list of frequently forged MAIL FROM domains can be found at
-http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
- At some point in cyberspace/time, a list of frequently forged
+MAIL FROM domains could be found at
+http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in. NOTE: One of the first things you might want to do is to turn
on sender address verification for all your own domains.
A list of frequently forged MAIL FROM domains can be found at -http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in. -
+At some point in cyberspace/time, a list of frequently forged +MAIL FROM domains could be found at +http://www.monkeys.com/anti-spam/filtering/sender-domain-validate.in.
NOTE: One of the first things you might want to do is to turn on sender address verification for all your own domains.
diff --git a/postfix/proto/virtual b/postfix/proto/virtual index cf28b83d4..8a2a0b1f2 100644 --- a/postfix/proto/virtual +++ b/postfix/proto/virtual @@ -10,9 +10,12 @@ # # \fBpostmap -q - /etc/postfix/virtual <\fIinputfile\fR # DESCRIPTION -# The optional \fBvirtual\fR(5) alias table specifies address aliasing -# for arbitrary local or non-local recipient addresses. Virtual aliasing -# is recursive, and is done by the Postfix \fBcleanup\fR(8) daemon. +# The optional \fBvirtual\fR(5) alias table rewrites recipient +# addresses for all local, virtual and remote mail destinations. +# This is unlike the \fBaliases\fR(5) table which is used +# only for \fBlocal\fR(8) delivery. Virtual aliasing is +# recursive, and is implemented by the Postfix \fBcleanup\fR(8) +# daemon before mail is queued. # # The main applications of virtual aliasing are: # .IP \(bu diff --git a/postfix/src/cleanup/cleanup_api.c b/postfix/src/cleanup/cleanup_api.c index 15fbdc577..cac4ce6a8 100644 --- a/postfix/src/cleanup/cleanup_api.c +++ b/postfix/src/cleanup/cleanup_api.c @@ -193,7 +193,7 @@ int cleanup_flush(CLEANUP_STATE *state) int status; char *encoding; CLEANUP_STAT_DETAIL *detail = 0; -DSN_SPLIT dp; + DSN_SPLIT dp; /* * Raise these errors only if we examined all queue file records. diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 578989cf6..de38eed80 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change the patchlevel and the release date. Snapshots change the * release date only. */ -#define MAIL_RELEASE_DATE "20050329" +#define MAIL_RELEASE_DATE "20050330" #define MAIL_VERSION_NUMBER "2.3" #define VAR_MAIL_VERSION "mail_version" diff --git a/postfix/src/lmtp/lmtp_chat.c b/postfix/src/lmtp/lmtp_chat.c index 0a0c7e0fa..f42790691 100644 --- a/postfix/src/lmtp/lmtp_chat.c +++ b/postfix/src/lmtp/lmtp_chat.c @@ -238,7 +238,7 @@ LMTP_RESP *lmtp_chat_resp(LMTP_STATE *state) rdata.code = atoi(STR(state->buffer)); for (cp = STR(state->buffer) + 4; *cp == ' '; cp++) /* void */ ; - if ((len = dsn_valid(cp)) > 0 && len < sizeof(DSN_SIZE)) { + if ((len = dsn_valid(cp)) > 0) { DSN_UPDATE(rdata.dsn, cp, len); } else if (strchr("245", STR(state->buffer)[0]) != 0) { DSN_UPDATE(rdata.dsn, "0.0.0", sizeof("0.0.0") - 1); diff --git a/postfix/src/smtp/smtp_addr.c b/postfix/src/smtp/smtp_addr.c index 7609800af..618dfab9c 100644 --- a/postfix/src/smtp/smtp_addr.c +++ b/postfix/src/smtp/smtp_addr.c @@ -224,7 +224,8 @@ static DNS_RR *smtp_addr_one(DNS_RR *addr_list, char *host, unsigned pref, freeaddrinfo(res0); if (found == 0) { dsn_vstring_update(why, "5.4.4", "%s: host not found", host); - smtp_errno = SMTP_ERR_FAIL; + if (smtp_errno != SMTP_ERR_RETRY) + smtp_errno = SMTP_ERR_FAIL; } return (addr_list); } diff --git a/postfix/src/smtp/smtp_chat.c b/postfix/src/smtp/smtp_chat.c index ff9f219ad..889ce0fe1 100644 --- a/postfix/src/smtp/smtp_chat.c +++ b/postfix/src/smtp/smtp_chat.c @@ -261,7 +261,7 @@ SMTP_RESP *smtp_chat_resp(SMTP_SESSION *session) rdata.code = atoi(STR(session->buffer)); for (cp = STR(session->buffer) + 4; *cp == ' '; cp++) /* void */ ; - if ((len = dsn_valid(cp)) > 0 && len < sizeof(DSN_SIZE)) { + if ((len = dsn_valid(cp)) > 0) { DSN_UPDATE(rdata.dsn, cp, len); } else if (strchr("245", STR(session->buffer)[0]) != 0) { DSN_UPDATE(rdata.dsn, "0.0.0", sizeof("0.0.0") - 1);