It should not try to open any user/domain/uce related tables
at all. File: smtpd/smtpd.c.
+20020106
+
+ Bugfix: bouncing to owner-alias was broken, i.e. the mail
+ kept being deferred, and when that was fixed, another buglet
+ came to light. File: bounce/bounce.c.
+
+ Robustness: the master no longer aborts with "address
+ already in use" when inet_interfaces specifies the same IP
+ address multiple times, or when a TCP service in master.cf
+ specifies a hostname for which the same IP address is listed
+ multiple times. File: master/master_ent.c.
+
Open problems:
Med: do not postpone rejected "MAIL FROM" size information,
ATTR_TYPE_STR, MAIL_ATTR_ORCPT, orig_rcpt,
ATTR_TYPE_STR, MAIL_ATTR_RECIP, recipient,
ATTR_TYPE_STR, MAIL_ATTR_STATUS, dsn_status,
- ATTR_TYPE_STR, MAIL_ATTR_ACTION, dsn_status,
+ ATTR_TYPE_STR, MAIL_ATTR_ACTION, dsn_action,
ATTR_TYPE_STR, MAIL_ATTR_WHY, why,
- ATTR_TYPE_END) != 9) {
+ ATTR_TYPE_END) != 10) {
msg_warn("malformed request");
return (-1);
}
/*
/* BOUNCE_INFO *bounce_mail_one_init(queue_name, queue_id,
/* encoding, orig_recipient,
-/* recipient, status, why)
+/* recipient, dsn_status,
+/* dsn_action, why)
/* const char *queue_name;
/* const char *queue_id;
/* const char *encoding;
* 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 "20030106"
+#define MAIL_RELEASE_DATE "20030107"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "2.0.0-" MAIL_RELEASE_DATE
mymalloc(sizeof(*MASTER_INET_ADDRLIST(serv)));
inet_addr_list_init(MASTER_INET_ADDRLIST(serv));
inet_addr_host(MASTER_INET_ADDRLIST(serv), host);
+ inet_addr_list_uniq(MASTER_INET_ADDRLIST(serv));
serv->listen_fd_count = MASTER_INET_ADDRLIST(serv)->used;
} else if (strcasecmp(var_inet_interfaces, DEF_INET_INTERFACES) == 0) {
MASTER_INET_ADDRLIST(serv) = 0; /* wild-card */
serv->listen_fd_count = 1;
} else {
MASTER_INET_ADDRLIST(serv) = own_inet_addr_list(); /* virtual */
+ inet_addr_list_uniq(MASTER_INET_ADDRLIST(serv));
serv->listen_fd_count = MASTER_INET_ADDRLIST(serv)->used;
}
MASTER_INET_PORT(serv) = mystrdup(port);
/* host_port() splits a string into substrings with the host
/* name or address, and the service name or port number.
/* The input string is modified.
+/*
+/* The following input formats are understood:
+/*
+/* [host]:port, [host]:, [host].
+/*
+/* host:port, host:, host.
/* DIAGNOSTICS
/* The result is a null pointer in case of success.
/* In case of problems the result is a string pointer with