Default limit: 50 kbytes. Files: global/mime_state.c,
cleanup/cleanup_message.c.
+20021015
+
+ Bugfix: the code for missing postmaster/mailer-daemon
+ aliases had to be moved after the code that implements the
+ luser_relay feature. Files: local/alias.c, local/unknown.c.
+
+ Weird? The LMTP client lowercased the MAIL FROM and RCPT
+ TO addresses. Some remnant of code that someone put in
+ there long ago. File: lmtp/lmtp_proto.c.
+
Open problems:
Low: smtpd should log queue ID with reject/warn/hold/discard
date. Snapshots change only the release date, unless they include
the same bugfixes as a patch release.
+Incompatible changes with Postfix snapshot 1.1.11-20021015
+==========================================================
+
+The Postfix LMTP client no longer lowercases email addresses in
+MAIL FROM and RCPT TO commands.
+
Incompatible changes with Postfix snapshot 1.1.11-20021013
==========================================================
* Patches change the patchlevel and the release date. Snapshots change the
* release date only, unless they include the same bugfix as a patch release.
*/
-#define MAIL_RELEASE_DATE "20021013"
+#define MAIL_RELEASE_DATE "20021015"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE
#define REWRITE_ADDRESS(dst, src) do { \
if (*(src)) { \
quote_821_local(dst, src); \
- lowercase(vstring_str(dst)); \
} else { \
vstring_strcpy(dst, src); \
} \
alias.o: ../../include/vstring.h
alias.o: ../../include/mymalloc.h
alias.o: ../../include/mail_params.h
-alias.o: ../../include/mail_addr.h
-alias.o: ../../include/sent.h
alias.o: ../../include/defer.h
alias.o: ../../include/bounce.h
alias.o: ../../include/maps.h
unknown.o: ../../include/iostuff.h
unknown.o: ../../include/attr.h
unknown.o: ../../include/bounce.h
+unknown.o: ../../include/mail_addr.h
+unknown.o: ../../include/sent.h
unknown.o: local.h
unknown.o: ../../include/htable.h
unknown.o: ../../include/tok822.h
/* Global library. */
#include <mail_params.h>
-#include <mail_addr.h>
-#include <sent.h>
#include <defer.h>
#include <maps.h>
#include <bounce.h>
}
}
- /*
- * If no alias was found for a required reserved name, toss the message
- * into the bit bucket, and issue a warning instead.
- */
-#define STREQ(x,y) (strcasecmp(x,y) == 0)
-
- if (STREQ(name, MAIL_ADDR_MAIL_DAEMON)
- || STREQ(name, MAIL_ADDR_POSTMASTER)) {
- msg_warn("required alias not found: %s", name);
- *statusp = sent(SENT_ATTR(state.msg_attr), "discarded");
- return (YES);
- }
-
/*
* Try delivery to a local user instead.
*/
/* System library. */
#include <sys_defs.h>
+#include <string.h>
+
+#ifdef STRCASECMP_IN_STRINGS_H
+#include <strings.h>
+#endif
/* Utility library. */
#include <mail_params.h>
#include <mail_proto.h>
#include <bounce.h>
+#include <mail_addr.h>
+#include <sent.h>
/* Application-specific. */
return (deliver_pass(MAIL_CLASS_PRIVATE, var_fallback_transport,
state.request, state.msg_attr.recipient, -1L));
- /*
- * Bounce the message when no luser relay is specified.
- */
- if (*var_luser_relay == 0)
- return (bounce_append(BOUNCE_FLAG_KEEP, BOUNCE_ATTR(state.msg_attr),
- "unknown user: \"%s\"", state.msg_attr.local));
-
/*
* Subject the luser_relay address to $name expansion, disable
* propagation of unmatched address extension, and re-inject the address
- * into the delivery machinery. Donot give special treatment to "|stuff"
+ * into the delivery machinery. Do not give special treatment to "|stuff"
* or /stuff.
*/
- state.msg_attr.unmatched = 0;
- expand_luser = vstring_alloc(100);
- local_expand(expand_luser, var_luser_relay, &state, &usr_attr, (char *) 0);
- status = deliver_resolve_addr(state, usr_attr, vstring_str(expand_luser));
- vstring_free(expand_luser);
+ if (*var_luser_relay) {
+ state.msg_attr.unmatched = 0;
+ expand_luser = vstring_alloc(100);
+ local_expand(expand_luser, var_luser_relay, &state, &usr_attr, (char *) 0);
+ status = deliver_resolve_addr(state, usr_attr, vstring_str(expand_luser));
+ vstring_free(expand_luser);
+ return (status);
+ }
/*
- * Done.
+ * If no alias was found for a required reserved name, toss the message
+ * into the bit bucket, and issue a warning instead.
+ */
+#define STREQ(x,y) (strcasecmp(x,y) == 0)
+
+ if (STREQ(state.msg_attr.local, MAIL_ADDR_MAIL_DAEMON)
+ || STREQ(state.msg_attr.local, MAIL_ADDR_POSTMASTER)) {
+ msg_warn("required alias not found: %s", state.msg_attr.local);
+ return (sent(SENT_ATTR(state.msg_attr), "discarded"));
+ }
+
+ /*
+ * Bounce the message when no luser relay is specified.
*/
- return (status);
+ return (bounce_append(BOUNCE_FLAG_KEEP, BOUNCE_ATTR(state.msg_attr),
+ "unknown user: \"%s\"", state.msg_attr.local));
}
}
ldap_value_free(vals);
}
- if (ber != NULL)
+ if (ber)
ber_free(ber, 0);
}
if (msg_verbose)