recipient addresses. For the sake of symmetry, we now also
have reject_unknown_sender_domain. This means the old
reject_unknown_address restriction is being phased out.
- Suggested by Rask Ingemann Lambertsen [XXX affiliation to
- be determined].
+ Suggested by Rask Ingemann Lambertsen, Denmark Technical
+ University.
Feature: unknown sender/recipient domain restrictions now
distinguish between soft errors (always: 450) and hard
rewrite that problem is eliminated. Thanks to Chris
Cappuccio, Empire Net, for assistance with testing.
+19990323
+
+ Bugfix: too much forwarding when users list their own name
+ in their .forward file (e.g. mail to user@localhost would
+ go through .forward, would be forwarded to user@$myorigin,
+ and would go through .forward again). Problem reported by
+ Roman Dolejsi, Prague University of Economics.
+
Future:
Planned: must be able to list the same hash table in
find $daemon_directory/* $config_directory/* ! -user root \
-exec $WARN not owned by root: {} \;
+ find $daemon_directory/. $config_directory/. \
+ \( -perm -020 -or -perm -002 \) \
+ -exec $WARN group or other writable: {} \;
+
find $queue_directory/* $config_directory/* -name '*core' \
-exec $WARN core file: {} \; 2>/dev/null
find $daemon_directory/* $config_directory/* ! -user root \
-exec $WARN not owned by root: {} \;
+ find $daemon_directory/. $config_directory/. \
+ \( -perm -020 -or -perm -002 \) \
+ -exec $WARN group or other writable: {} \;
+
find $queue_directory/* $config_directory/* -name '*core' \
-exec $WARN core file: {} \; 2>/dev/null
* Version of this program.
*/
#define VAR_MAIL_VERSION "mail_version"
-#define DEF_MAIL_VERSION "Snapshot-19990322"
+#define DEF_MAIL_VERSION "Snapshot-19990323"
extern char *var_mail_version;
/* LICENSE
* approach is that recipients in the expansion of an alias without
* owner- won't have separate delivery queue file status records, because
* for them, the message won't be resubmitted as a new queue file.
+ *
+ * Do something sensible on systems that receive mail for multiple domains,
+ * such as primary.name and secondary.name. Don't resubmit the message
+ * when mail for `user@secondary.name' is delivered to a .forward file
+ * that lists `user' or `user@primary.name'. We already know that the
+ * recipient domain is local, so we only have to compare local parts.
*/
if (state.msg_attr.owner != 0
- && strcasecmp(state.msg_attr.owner, state.msg_attr.recipient) != 0)
+ && strncasecmp(state.msg_attr.owner, state.msg_attr.recipient,
+ strlen(state.msg_attr.local) + 1) != 0)
return (deliver_indirect(state));
/*
-#ifndef _DIST_UNIX_H_INCLUDED_
-#define _DIST_UNIX_H_INCLUDED_
+#ifndef _DICT_UNIX_H_INCLUDED_
+#define _DICT_UNIX_H_INCLUDED_
/*++
/* NAME
* We can't specify a listen backlog, however, sending file descriptors
* across a FIFO gives us a backlog buffer of 460 on Solaris 2.4/SPARC.
*/
- return (fifo_listen(path, 0666, block_mode));
+ return (fifo_listen(path, 0622, block_mode));
#else
msg_fatal("stream connections are not implemented");
#endif