Skip to content
HISTORY 568 KiB
Newer Older
Boris Mühmer's avatar
Boris Mühmer committed

	Feature: "reject_rhsbl <domain>" for sender domain
	blacklisting.  Provides the same per-domain customized
	response message mechanisms with $name expansion as
	reject_rbl.

	Safety: the smtpd_expansion_filter parameter controls what
	characters are allowed in the expansion of $name macros in
	template RBL responses.

	Cleanup. In order to make sensible warnings possible when
	expanding a non-existent $name in RBL reply templates,
	mac_expand() had to be changed so that an empty string
	result (i.e. the name does exist) will no longer cause
	${name?text} to succeed.  File:  util/mac_expand.c.

20020923

	Cleanup. Renamed the RBL features according to a scheme
Boris Mühmer's avatar
Boris Mühmer committed
	that was suggested by Liviu Daia in October 2001. The names
	are reject_rbl_client and reject_rhsbl_sender, respectively.
	Added domain name based reject_rhsbl_client and
	reject_rhsbl_recipient restrictions for completeness.  The
	reject_rbl restriction name is still recognized for
Boris Mühmer's avatar
Boris Mühmer committed
	compatibility with systems maintained by LaMont Jones.

20020924

	Bugfix: reject_rhsbl_<mumble> was broken when <mumble> was
	unavailable, causing the restrictions parser to get out if
	sync. Spotted by Ralf Hildebrandt.  File:  smtpd/smtpd_check.c.

20020928

	Bugfix: missing %s in the 20020923 RBL code. This was not
	exploitable because Postfix implements only a safe subset
	of all printf format operators and because memory for the
	result is dynamically allocated.  Victor Duchovni. File:
	smtpd/smtpd_check.c.

20020929

	Updated MacOSX support scripts from Gerben Wierda.  Files:
	auxiliary/MacOSX/*.

20021009

	Bugfix: SIZE errors should be reported at MAIL FROM time,
	and should not be postponed (with smtpd_delay_reject = yes)
	until RCPT TO time. Reported by Jeroen Scheerder, Utrecht
	University. Files: smtpd/smtpd.c smtpd/smtpd_check.c.

20021013

	When Postfix development started, Linux mail delivery
	software such as procmail did not use kernel locks, and
	Postfix picked one that seemed plausible, namely, flock().
	In the mean time, Linux mail delivery software seems to
	have standardized on fcntl() locks. File: util/sys_defs.h.

Boris Mühmer's avatar
Boris Mühmer committed
	Feature: body_checks_size_limit parameter to specify how
	much of a message body segment (or attachment, if you prefer
	to use that term) is subjected to body_checks inspection.
Boris Mühmer's avatar
Boris Mühmer committed
	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.

20021024

	Feature: proxy_interfaces parameter. Specify your NAT or
	other proxy addresses here to avoid mail delivery loops.
	Files: global/mail_params.[hc] global/own_inet_addr.[hc]
	global/resolve_local.c smtp/smtp_addr.c smtpd/smtpd_check.c.

	Paranoia: defend against a very unlikely false alarm in
	safe_open().

20021025

	Feature: X-Original-To: message headers with the raw original
	envelope recipient.

	Logging: status=sent/deferred/bounced/ logging now includes
	the original recipient address if it differs from the final
	address.

20021026

	Logging: SMTP UCE reject/warn/hold/discard logging now
	includes queue ID. This will break some logfile analyzers.

	Logging: SMTP UCE reject/warn/hold/discard logging now
	includes the protocol name and, if available, the hostname
	given in the SMTP HELO or EHLO command.

	Logging: header/body_checks reject/warn/hold/discard logging
	now includes the protocol name and, if available, the
	hostname given in the SMTP HELO or EHLO command.

20021028

	Bugfix: don't reset state after rejected EHLO. Reset state
	after HELO. Reported by Karthikeyan Bhargavan, upenn.edu.
	Files: smtpd/smtpd.c.

20021029

	Bugfix: local(8) did not prepend an X-Original-To:  message
	header while delivering to command, and local(8) did not
	document the X-Original-To:  message header.

	Workaround: DJBDNS produces a bogus A record when given a
	numerical hostname. File: dns/dns_lookup.c.

20021030

	Portability: support for Berkeley DB version 4.0 but not
	for Berkeley DB version 4.1 (yes, the API is different).
	Postfix is now going to be paranoid about the minor version
	number, too. File:  util/dict_db.c.

	Documentation: updated LMTP_README file by Amos Gouaux.

20021031

	Bugfix: (bug introduced 20021026) log NOQUEUE when rejecting
	ETRN, instead of trying to log a non-existent queue ID.
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	Cleanup: allow optional text after commands in SMTPD access
	maps. Based on initial effort by Victor Duchovni, Morgan
	Stanley. File: smtpd/smtpd_check.c.

	Portability: support for Berkeley DB version 4.1.  This
	version refuses to open zero-length files. This complicates
	lock management and requires extra code to remove broken
	files. Files:  util/dict_db.c, global/mkmap*.[hc].

20021101

	Bugfix: don't complain about out-of-order original recipient
	records for finished recipients. Files:  *qmgr/qmgr_message.c,
	cleanup/cleanup_envelope.c, cleanup/cleanup_extracted.c.

	Cleanup: further simplified the mkmap wrapper (used by
	postmap and postalias only) to remove some hurdles for
	Michael Tokarev's CDB support. Files: global/mkmap*.[hc].

20021105

	Postalias now produces YP_LAST_MODIFIED and YP_MASTER_NAME
	records only when NIS support is compiled in. File:
	postalias.c.

20021106

	Postalias now puts $myhostname in the YP_MASTER_NAME record,
	instead of the possibly bogus gethostname() result.  File:
	postalias.c.

	The PCRE map code did not reject non-numeric replacement
	indices in replacement text, and silently treated $text as
	$0. Found by Michael Tokarev. File: dict_pcre.c.

20021108

	Cleanup: the behavior of the SMTP server's defer_if_permit
	flag was changed, in order to maximize the opportunity to
	permanently reject mail without opening opportunities for
	losing legitimate mail. This was done in cooperation with
	Victor Duchovni, Morgan Stanley. File: smtpd/smtpd_check.c.

	The defer_if_permit flag is still set when an UCE reject
	restriction fails due to a temporary (e.g., DNS) problem,
	to prevent unwanted mail from slipping through. However,
	the flag is no longer tested at the end of client, helo or
	sender restrictions.  Instead, the flag is now tested at
	the end of the ETRN and recipient restrictions only.

	The behavior of the warn_if_reject restriction has changed.
	It no longer activates any already made defer_if_permit or
	defer_if_reject decisions (the defer_if_reject flag is set
	when some UCE permit restriction fails due to a temporary
	(DNS) problem, to avoid loss of legitimate mail).

	Bugfix: instead of setting the defer_if_permit flag, a
	failing reject restriction after warn_if_reject now merely
	logs that it would have caused mail to be deferred.

	A failing permit restriction after warn_if_reject still
	raises the defer_if_reject flag, to avoid loss of legitimate
	mail.

20021109

	Bugfix: a misguided change to the .forward macro expansion
	filter broke .forward file lookup.

	Bugfix: missing defer_if_permit test in smtpd_data_restrictions.
	Victor Duchovni. File:  smtpd/smtpd_check.c.

20021112

	Robustness: increase the mime_nesting_limit from 20 to 100,
	so that bounces can't loop. Each bounces increases the MIME
	nesting level by one.  Ralf Hildebrandt and Victor Duchovni.

20021113

	Robustness: reinstated SMTP client command flushing to
	avoid pipeline stalls.  File: smtp/smtp_chat.c.

20021114

	Robustness: distinguish between timeout and "lost connection"
	when the SMTP server is unable to send a reply to the remote
	client. File: smtpd/smtpd_chat.c.

20021115

	Bugfix: initialization error with "*" transport table
	lookup, reported by LaMont Jones. The transport map lookup
	code had grown into a monster and needed to be replaced.
	trivial-rewrite/transport.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021115

	Start implementing recipient verification. For now this is
	done by adding trace flags to queue files. In case of a
	verification request, a delivery agent does not deliver,
	deliver, it just records what would happen.

	This required instrumenting the bounce/defer/sent logging
	routines to send their data to the right place depending
	on the type of delivery request.

20021116

	New trace service. This is used for reporting if a recipient
	is deliverable (sendmail -bv) and for producing a record
	of delivery attempts (sendmail -v). The report is sent via
	email, using the bounce daemon. Files: global/trace.[hc].

	This required replacing the bounce/defer logfile format by
	an extensible name=value format. Files: global/bounce_log.c,
	bounce/bounce_append_service.c.

20021117

	New address verification service with simple expiration
	and refresh policy. Storage can be in-core or in permanent
	table. The daemon is appropriately called "verify". Files:
	global/verify_clnt.[hc], verify/verify.c.

20021118

	Cleaning up the code for tracing and verification. Files:
	global/{log_adhoc,bounce,defer,trace,verify}.[hc].

20021119

	New address_verification_negative_cache = yes/no parameter
	controls whether Postfix stores the result of negatieve
	address verification probes. This reduces cache pollution
	but causes Postfix to send a probe for each address
	verification service query. File: verify/verify.c.

	Added optimistic caching to the verify daemon, so that one
	failed probe will not clobber a known to be good address.
	As long as some probes succeeed, a good address will stay
	cached as OK.

	Cleaning up of the bounce daemon's code for bounce, delayed
	mail warning and trace notification.  Files: bounce/*.[hc],
	global/bounce_log.c.

20021120

	Changed the probe's sender address to "postmaster" so that
	we get better information about the address we're testing.
	File: verify/verify.c.

	Added some paranoia to the routine that reads data from
	the address verification cache. Ignore data that is obviously
	bogus. File: verify/verify.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021121

	Bugfix: garbage in "user@garbage"@domain address forms may
	cause the SMTP or LMTP client to terminate with a fatal
	error exit because garbage/tcp is not an existing service.
	This cannot be abused to cause the SMTP or LMTP client to
Boris Mühmer's avatar
Boris Mühmer committed
	send data into unauthorized ports.  Files: *qmgr/qmgr_message.c,
Boris Mühmer's avatar
Boris Mühmer committed
	trivial-rewrite/resolve.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021124

	Bugfix: don't use same VSTRING buffer for reading and
	writing.  File: verify/verify.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021128

	Feature: hashed hold queue support, with hashing turned on
	by default. Omission spotted by Victor Duchovni, Morgan
	Stanley. Files: global/hold_message.c, global/mail_params.h.

	Bugfix: the LMTP client lost the port(service) information
	when parsing host:port information. Victor Duchovni, Morgan
	Stanley. Fix is to have a new host_port(3) module that does
	the parsing for the SMTP and LMTP clients.

	Cleanup: host_port() routine that parses host/port information
	more consistently than the existing code in the LMTP and
	SMTP clients. Files: smtp/smtp_connect.c, lmtp/lmtp_connect.c,
	util/host_port.[hc].

Boris Mühmer's avatar
Boris Mühmer committed
20021130

	Cleanup: defer mail when recipient verification takes too
	long. File: smtpd/smtpd_proto.c.

	Feature: new reject_multi_recipient_bounce restriction, to
	reject "MAIL FROM: <>" with multiple recipients.  File:
	smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021201

	Compatibility: ignore the new Sendmail -A option. File:
	sendmail/sendmail.c.

	Workaround: sendmail -v now produces no output. You need
	to specify -v -v instead. This is to avoid problems when
	people request verbose mail delivery in their mail.rc file.
	File:  sendmail/sendmail.c.

20021202

	Cleanup: hash_queue_depth now defaults to 1 level of
	subdirectories. This makes "mailq" faster on most systems,
	but will result in poorer worst-case performance when lots
	of mail is queued.

	The check_relay_domains restriction is going away. The SMTP
	server logs a warning and suggests using reject_unauth_destination
	instead.

	Cleanup: the local(8) and virtual(8) delivery agents did
	not prepend X-Original-To: addresses to maildir files.
	Omission spotted by Matthias Andree.

Boris Mühmer's avatar
Boris Mühmer committed
	Specify "address_verify_sender=" or "address_verify_sender=<>"
	to use a null sender address while doing address verification
	probes.  Beware, doing so may trigger false negatives
	because some sites reject mail from the null sender, even
	though this is required by RFC standards.

Boris Mühmer's avatar
Boris Mühmer committed
	Bugfix: too many levels of dereferencing while testing for
	missing reject_rbl_mumble domain names. Patrik Rak.  File:
	smtpd/smtpd_check.c.

20021203

	Bugfix: the FILTER access table action included the FILTER
	command in the filter request, where only the transport+destination
	were expected. Noel Jones. File smtpd/smtpd_check.c.

	Cleanup: virtual_maps is now called virtual_alias_maps, in
	order to better distinguish it from virtual_mailbox_maps.
	The default value is $virtual_maps for backwards compatibility.

	New parameters virtual_alias_domains and virtual_mailbox_domains
	for the "domain.tld whatever" lookups.  These use the same
	syntax as the mydestination parameter.  Default settings
	are backwards compatible with Postfix 1.1.

	Concept: just like $mydestination+$inet_interfaces control
	what routes to $local_transport, $virtual_mailbox_domains
	now controls what routes to $virtual_transport (default
	transport:  virtual), and $relay_domains now controls what
	routes to $relay_transport (default transport: relay, a
	clone of the smtp transport).  Everything else routes to
	$default_transport as before.  This eliminates the need
	for transport map entries for every virtual(8) domain, and
	avoids performance problems with inbound relay mail. This
	was improvement was suggested by Victor Duchovni. File:
	trivial-rewrite/resolve.c.

20021206

	Cleanup: do allow regexps in aliases, virtual mailbox maps
	but do not allow regular expression substitutions. Files:
	util/dict.h, util/dict_regexp.c, util/dict_pcre.c.

20021207

	Cleanup: deleted the description of sendmail-style virtual
	domains from the virtual(5) manual page. This part of
	Postfix was too confusing.

	Performance: RFC 2821 blesses the use of CNAME domain names
	in MAIL FROM and RCPT TO. Not having to expand CNAME domain
	names speeds things up a bit.  File:  smtp/smtp_proto.c.

	Workaround: exclude error mailer destinations from transport
	mapping lookups :-(. File: trivial-rewrite/resolve.c.

	Cleanup: relocated_maps lookups are now moved to the
	trivial-rewrite server. As of now, the queue manager no
	longer does any map lookups, so it won't restart when maps
	change. Files:  *qmgr/qmgr_message.c, trivial-rewrite/resolve.c.

	Robustness: because the trivial-rewrite server now does
	many more table lookups, some of which are often LDAP or
	SQL based, trivial-rewrite clients must be be prepared for
	the case that the resolver reports a failure while processing
	a request (when it was unable to access a lookup table).
	Files:  trivial-rewrite/resolve.c, local/resolve.c,
	smtpd/smtpd_check.c.

	Robustness: moving possible LDAP or SQL table lookups into
	the trivial-rewrite server also required that trivial-rewrite
	be running as multiple processes to reduce lookup latencies.
	Files:  master/multi-server.c.

	Workaround: don't discard all the DNS lookup results when
	only one of the results has a malformed name or address.
	File:  dns/dns_lookup.c.

20021208

	Cleanup: with the preliminary address domain classification
	concept as implemented by the trivial-rewrite address
	resolver, a lot of table lookups could be eliminated from
	the SMTP server.  Files: smtpd/smtpd_check.c.

	Feature: new relay_recipient_maps parameter, for optional
	maps with all the recipients in the domains that match
	$relay_domains (so you can reject mail for unknown relay
	recipients). This is for consistency with virtual_xx_maps
	and virtual_xx_domains, and with local_recipient_maps and
	the local delivery agent.  File:  smtpd/smtpd_check.c.

	Cleanup: removed support for obsolete #number domain forms.
	File: smtpd/smtpd_check.c.

20021209

	The Postfix installation procedure no longer sets the
	"chattr +S" bit on Linux queue directories. Wietse has
	gotten too annoyed with naive reviewers who complain about
	performance without having a clue of what they are comparing.

	"Security": local_recipient_maps is now turned on by default,
	to reject mail for non-existent users at the SMTP port.
	See conf/main.cf for instructions, section REJECTING UNKNOWN
	LOCAL USERS.

	Safety: detection of missing or inaccessible passwd file
	database, to prevent massive complaints from people who
	suddenly lose all their mail because local_recipient_maps
	is now turned on by default.

Boris Mühmer's avatar
Boris Mühmer committed
20021210

	Feature: recipient address verification, using the code
	that already implements sender address verification.  Based
	on suggestion by Matthias Andree.  Files: src/smtpd/smtpd.c,
	src/smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021211

	Performance: doubled the default process limit (50->100)
	and default queue manager active queue message/recipient
Boris Mühmer's avatar
Boris Mühmer committed
	limits  (10k->20k).  File:  global/mail_params.h.

	Bugfix: the change that begot us multiple trivial-rewrite
	processes (good) also gave us multiple verify daemons (bad).
	File: conf/post-install.
Boris Mühmer's avatar
Boris Mühmer committed

20021212

	Cleanup: allow transport map lookups to override error
	mailer results (to avoid breaking existing installations),
	and do transport map lookups before relocated map lookups.
	Files:  trivial-rewrite/resolve.c, trivial-rewrite/transport.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Shortened the verify server's negative cache refresh time
	from 12 hours to 2 hours. File:  global/mail_params.h.

Boris Mühmer's avatar
Boris Mühmer committed
	Admin friendliness: the SMTP server now reports "User
	unknown in {local recipient | virtual alias | virtual
	mailbox | relay recipient} table". This will make trouble
	shooting a little easier. Files: smtpd/smtpd_check.c,
	trivial-rewrite/resolve.c.

20021213

	Cleanup: transport map entries with null nexthop ignored
	relayhost settings. Making the code simpler also made it
	more correct. Files: trivial-rewrite/resolve.c,
	trivial-rewrite/transport.c.

	Feature: "helpful_warnings" (default: yes) that can be
	turned off if you really know what you're doing and want
	to eliminate some unnecessary work.

	Feature: enforcement of master.cf process limits for
	processes such as qmgr and pickup that must run alone, and
	processes such as cleanup and bounce that must run without
	explicit process count limit. If an incorrect process limit
	is specified in master.cf the service aborts.

20021214

	Cleanup: it looks like we finally get it right with transport
	lookup table entries that either override or specify an
	error transport without updating the nexthop information.
	File:  trivial-rewrite/resolve.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Robustness: don't probe the sender address when probed for
	our own address verification probe sender address. File:
	smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Performance: don't do UCE checks (which may result in 4xx
	SMTP reply codes, and thus, repeated delivery attempts)
	when we already know that the recipient does not exist.
	Files:  smtpd/smtpd.c, smtpd/smtpd_check.c.

20021215

	Cleanup: further simplification of transport map handling
	after some really fine hair splitting with Victor Duchovni.
	Files: trivial-rewrite/resolve.c, trivial-rewrite/transport.c.

20021216

	Workaround:  transform the address local-part into unquoted
	form only when the address domain is local and the local-part
	contains routing operators.  Otherwise, we may damage the
	address local-part by inserting space between non-operator
	tokens. Some people use weird addresses and expect them to
	be handled without damage.  File: trivial-rewrite/resolve.c.

	Robustness: scan the resolved recipient address for routing
	operators in the address local-part, even when the local
	MTA does not recognize ! and % as valid operators.  File:
	trivial-rewrite/resolve.c.

	Cleanup: the address rewriting code no longer tries to
	rewrite broken user@ or user@. address forms into even more
	broken forms. bother. File: trivial-rewrite/rewrite.c.

	Cleanup: the address resolver code now treates forms ending
	in @ in a more rational manner (because the address rewriting
	code no longer messes up by appending .my.domain).

	Bugfix: a null address local-part before @domain now is
	properly quoted just like the null address. File:
	global/quote_82[12]_local.c.

20021217

	Cleanup: more work on the trivial-rewrite address rewriting
	and address resolving code. New regression tests for address
	rewriting and resolving that make some assumptions about
	main.cf settings. Files: global/Makefile.in (assumptions),
	global/rewrite_clnt.in, global/rewrite_clnt.ref,
	global/resolve_clnt.in, global/resolve_clnt.ref.

	Safety: configurable SMTPD reject codes for recipients not
	in {local,relay}_recipient,virtual_{alias,mailbox}}_maps,
	aptly named unknown_mumble_reject_code.  Postfix installs
	with unknown_local_recipient_reject_code=450, unless the
	site already ran Postfix with local_recipient_maps enabled.
	Files:  smtpd/smtpd.c, smtpd/smtpd_check.c, conf/post-install.

Boris Mühmer's avatar
Boris Mühmer committed
20021218

	Feature: specify unverified_recipient_reject_code=250 or
	unverified_sender_reject_code=250 to accept mail for an
	address that is known to bounce. File: smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
20021219

	Bugfix: longjmp() while sending "go away" without setjmp()
	in the QMQP server. Patrik Rak. File: qmqpd/qmqpd.c.

	Safety: the XVERP extension is restricted to clients listed
	in the authorized_verp_clients list (default: $mynetworks).
	File: smtpd/smtpd.c.

	Workaround: preliminary IPV6 support in valid_hostliteral().
	File: util/valid_hostname.c.

20021220

Boris Mühmer's avatar
Boris Mühmer committed
	Bugfix: the reject_multi_recipient_bounce restriction had
	an off-by-one error when used in smtpd_data_restrictions.
	File: smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Feature: new check_recipient_maps restriction that gives
	finer control over when unknown recipients are rejected.
	As with Postfix 1.1, the default is to do this at the end
	of the recipient restrictions. Sites that want to improve
	performance can put check_recipient_maps at the start of
	the smtpd_client_restrictions list and avoid doing unnecessary
	RBL lookups etc.  File:  smtpd/smtpd_check.c.

	Feature: new show_user_unknown_recipient_table parameter
	controls whether or not to reveal the lookup table name in
	"User unknown" responses. The extra detail makes trouble
	shooting easier but also reveals information that is nobody
	elses business.

20021221

	Workaround: don't allow the transport map to override the
	virtual alias class (error:User unknown) result.  File:
	trivial-rewrite/transport.c.

20030101

	Documentation update: new-style virtual domains broke the
	advanced content filtering example. Files: FILTER_README,
Boris Mühmer's avatar
Boris Mühmer committed
	RELEASE_NOTES-2.0.

20030102

	Cleanup: use different client instances when the same map
	is opened with different flags. File: global/maps.c.

	Feature: proxymap server for Postfix table lookups. This
	helps to consolidate the number of open lookup tables (such
	as MYSQL or LDAP), or to overcome chroot restrictions
	(example: specify proxy:unix:passwd.byname to avoid the
	need for a copy of the UNIX passwd file in chroot jails).
	Files:  global/dict_proxy.[hc], proxymap/proxymap.c

	Cleanup: multiservers such as trivial-rewrite and the new
	proxymap server now enforce the max_use total client number
	limit more agressively, by not accepting new connections
	after the limit is reached.  Based on a patch by Victor
	Duchovni, Morgan Stanley. File:  master/multi_server.c.

20030103

	Cleanup: client stream endpoints not only have an idle time
	limit ($ipc_idle) before a connection is closed, they now
	also have a time to live ($ipc_ttl) to prevent connections
	from becoming too persistent. This allows multi-servers
	such as trivial-rewrite or the proxymap server to refresh
	more frequently on busy systems. File:  global/clnt_stream.c.
Boris Mühmer's avatar
Boris Mühmer committed

20030104

	Cleanup: avoid warnings about flag mismatches when the same
	lookup table is listed under both virtual_alias_maps and
	virtual_mailbox_maps. Files: global/virtual8.h, virtual/virtual.c.

	Bugfix: an obscure memory leak that puzzled me for more
	than a year until I found out how to reproduce it. File:
	util/vstream.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030105

	Cleanup: removed the address syntax check from the queue
	manager, since a better test was implemented recently in
	the trivial-rewrite server. Files: *qmgr/qmgr_message.c.

	Bugfix: redirect bounce/defer to the address verification
	service where appropriate. Files: *qmgr/qmgr_bounce.c,
	*qmgr/qmgr_defer.c.

	Bugfix: "no such file or directory" warnings after "postfix
	reload" when a chrooted smtpd reconnects to the proxy
	service.  Fix: use "private/proxymap" if possible, otherwise
	use "$queue_dir/private/proxymap".  File:  global/dict_proxy.c.

	Robustness: daemons now chdir() to the queue directory
	before running the pre-jail initialization code, so that
	daemons running in stand-alone mode produce more consistent
	results.  Files:  master/single_server.c, master/multi_server.c.
	master/trigger_server.c.

	Bugfix: "sendmail -bs" tried to access the proxymap service.
	It should not try to open any user/domain/uce related tables
	at all. File:  smtpd/smtpd.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030106

Boris Mühmer's avatar
Boris Mühmer committed
	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.

Boris Mühmer's avatar
Boris Mühmer committed
	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.

20030107

	Robustness: check that FILTER actions in SMTPD access maps
	or cleanup header/body_checks have plausible syntax. Files:
	smtpd/smtpd_check.c, cleanup/cleanup_message.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030109

	Cleanup: unnecessary "premature end of file on xxx while
	reading yyy" warnings became exposed after some code
	simplification. Files" global/*_clnt.c, global/dict_proxy.c

	Robustness: undo the change that causes a multi-server
	process to stop accepting new connections while it still
	services existing clients for an extended amount of time.
	We need a better process retirement strategy. File:
	master/multi_server.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030110

	Cleanup: the virtual_mailbox_maps parameter is now optional
Boris Mühmer's avatar
Boris Mühmer committed
	even when virtual_mailbox_domains is. This makes virtual
	mailbox domains more like relay domains and the local
	domain.
Boris Mühmer's avatar
Boris Mühmer committed

	Portability: the makedefs script now uses the pcre-config
	utility to find out where things are installed.

	Bugfix: the SMTP server did not recognize the local built-in
	double bounce address as local. Reported by Matthias Andree.
	For safety sake, threw in the local postmaster address as
	well.  File:  smtpd/smtpd_check.c.

20030113

	Added MAILER-DAEMON to the list of always recognized local
	addresses, since it is generated by Postfix bounces. File:
	smtpd/smtpd_check.c.

20030114

	Bugfix: transport_errno was not reset upon successful
	transport map wildcard lookup after an earlier failure.
	Reported by Victor Duchovni. File:  trivial-rewrite/transport.c.

	Cleanup: unnecessary warnings from the proxymap client
	after proxymap server disconnect. File:  global/dict_proxy.c.

	Cleanup: Patrik Rak found a few more chattr invocations
	that were missed 20021209. Files: postfix-install,
	conf/post-install.

	Cleanup: the pcre-config command can produce null outputs.
	Matthias Andree.  File: makedefs.

	Bugfix: the virtual(8) Makefile included $(AUXLIBS) in the
	dependencies.

20030118

	Typos: some hyperlinks referred to flushd, which is the
	name that was used before the flush service was released.
	Reported by Victor Duchovni.

	Cleanup: smtpd no longer needed to open relocated_maps.

20030119

	Cleanup: bounce messages used "X-Postfix" even when mail_name
	was set to something other than the default "Postfix" name.
	File: bounce/bounce-notify_util.c.

20030120

	Bugfix: wrong FILTER_README instructions for disabling
	virtual alias mapping in the cleanup server before the
	content filter.

	Bugfix: wrong FILTER_README instructions for destination-dependent
	filtering, because relay_domains was specified incorrectly.

20030122

	Bugfix: 20021207 (move relocated table lookup from queue
	manager to trivial-rewrite server) broke relocated table
	lookup results with mail not rejected at the SMTP port.
	Files:  *qmgr/qmgr_deliver.c, *qmgr/qmgr_message.c.

20030123

	Bugfix: a widely used maildir filename algorithm was broken.
	Postfix now uses TIME.DEVICE_INODE.HOST. Files: local/maildir.c,
	virtual/maildir.c.

20030124

Boris Mühmer's avatar
Boris Mühmer committed
	Cleanup: queue structures no longer overload queue name
	and nexthop destination. Files: *qmgr/qmgr_message.c,
	*qmgr/qmgr_queue.c, *qmgr/qmgr_deliver.c.

20030125

	Feature: "REDIRECT user@domain" action in access maps or
	in header/body_checks causes mail to be sent to the specified
	address instead of the intended recipient(s). I would never
	recommend that people use this to redirect (bounced) SPAM
	to the beneficiaries of an advertisement campaign.  Files:
	smtpd/smtpd_check.c, cleanup/cleanup_message.c,
	*qmgr/qmgr_message.c.
Boris Mühmer's avatar
Boris Mühmer committed

20030126

	Update: maildir filename algorithm updated according to
	today's version of http://cr.yp.to/proto/maildir.html.

20030127

	Cleanup: use separate error messages for separate problems
	with computing the list of SASL authentication mechanisms.
	File: smtpd/smtpd_sasl_glue.c.

20030130

	Bugfix: allow $name in default time values. File:
	global/mail_conf_time.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030205

	Feature: allow !, /file/name and map:name in masquerade_exceptions.
	By Liviu Daia.  Files:cleanup_init.c, cleanup.h,
	cleanup_masquerade.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030219

	Bugfix: the local pickup daemon skipped unterminated records,
	since they happened to have the same record type code as
	content filtering instructions. Victor Duchovni.  Files:
	global/rec_type.h, pickup/pickup.c.
Boris Mühmer's avatar
Boris Mühmer committed
	Portability: Postfix could block, and thus not enforce
	command execution time limits, while delivering mail to
	command.  File: global/pipe_command.c.

	Bugfix: command execution time limits were not enforced
	because the child process killing code in pipe_command()
	was running with the wrong privileges. Problem reported by
	Ben Rosengart, Panix. File: global/pipe_command.c.

	Bugfix: duplicate recipient filtering in the cleanup server
	did not eliminate virtual expansion duplicates with the
	same original recipient. File: cleanup/cleanup_out_recipient.c.

20030223

Boris Mühmer's avatar
Boris Mühmer committed
	Cleanup: added postmap/postalias -p option (do not inherit
	the source file permissions when creating a new file), for
	completeness.  A feature that can't be turned off is a bug.
	Files:  postmap/postmap.c, postalias/postalias.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Bugfix: smtpd_hard/soft_error_limit off-by-one error, so
Boris Mühmer's avatar
Boris Mühmer committed
	that the real limit was one larger than the configured
	value.  File: smtpd/smtpd.c, smtpd/smtpd_chat.c.
Boris Mühmer's avatar
Boris Mühmer committed

20030226

	Safety: proxymap server defense against potential deadlock
	when some library routine wants to open a proxied table.
	Instead, proxymap opens the requested table directly. File:
	proxymap/proxymap.c.

Boris Mühmer's avatar
Boris Mühmer committed
	Portability: updated AIX 5.x system dependent definitions.
	File: util/sys_defs.h.

Boris Mühmer's avatar
Boris Mühmer committed
20030227

	Bugfix: added mynetworks to the list of proxy_read_maps
	parameter settings that are pre-authorized to use proxied
	table lookups.  File: global/mail_params.h.

Boris Mühmer's avatar
Boris Mühmer committed
	Cleanup: daemons now log what table has changed before
	restarting. Files: dict.c, and anything that invoked
	dict_changed().

	Cleanup: more consistency in the naming of lookup table
	handles as generated by maps(3) and by match_list(3).

Boris Mühmer's avatar
Boris Mühmer committed
20030305

	Workaround: Postfix removes too long non-address text from
	message headers in order to protect vulnerable Sendmail
	systems against exploitation of the remote buffer overflow
	vulnerability described in CERT advisory CA-2003-07.

20030311-19

Boris Mühmer's avatar
Boris Mühmer committed
	Bugfix: the access map actions HOLD, DISCARD, FILTER and
	REDIRECT were broken with smtpd_delay_reject=no and with
	ETRN.  This required re-architecting of the actions code.
	Files:  smtpd/smtpd.[hc], smtpd/smtpd_check.c, smtpd/smtpd_state.c.
Boris Mühmer's avatar
Boris Mühmer committed

20030315

	Bugfix: the postsuper manual page documented support for
	the -c command line option, but it was not implemented.
	File: postsuper/postsuper.c.

	Bugfix: the Postfix 2.0 recipient map checking code broke
	the VRFY command, causing it to reply with status code 252
	for non-existent addresses. This required re-architecting
	the recipient table lookup code. File:  smtpd/smtpd_check.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030319

	Feature: configurable limit on virtual alias expansion size
	and nesting depth, via the virtual_alias_expansion_limit
	and virtual_alias_recursion_limit parameters. The default
	limits are compatible with past Postfix versions.  Victor
	Duchovni, Morgan Stanley. Files: /sample-resource.cf,
	html/resource.html, cleanup/cleanup.c, cleanup/cleanup_init.c,
	cleanup/cleanup_map1n.c.

	Feature: the installation procedure records build information
	(by default:  in /etc/postfix/makedefs.out).

20030324

	Bugfix: smtp-source flushed too often, causing suboptimal
	performance with smtp-source sending directly into smtp-sink.
	Files: smtpstone/smtp-source.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030410

	Safety: log a fatal error when a net/mask pattern has a
	non-zero host part, so that mail delivery is deferred.
	File: util/match_ops.c.

20030411

	Bugfix: extraneous warning about out-of-order original
	recipient records by Patrik Rak. Files: *qmgr/qmgr_message.c.

Boris Mühmer's avatar
Boris Mühmer committed
20030412

	Workaround: log a warning and reset the queue file time
	stamps when the file system clock is ahead of the local
	clock.  File: global/mail_stream.c.

20030414

	Feature: PostgreSQL client module, adopted by LaMont Jones.
	Files: README_FILES/PGSQL_README, util/dict_pgsql.c,
	util/dict_pgsql.h, conf/sample-pgsql-aliases.cf.

	Cleanup: the generic smtp client/server code in smtp_stream.c
	now has an explicit flush operation, and the smtp-source/sink
	programs are updated to take advantage of this.

	Cleanup: the file system clock drift detection code now
	runs only once per process instance, to minimize the
	performance impact. File: global/mail_stream.c.

	Robustness: avoid TIME_WAIT state with smtp/qmqp-source
	client sockets.  This puts less strain on local system
	resources.

Boris Mühmer's avatar
Boris Mühmer committed
20030415

Boris Mühmer's avatar
Boris Mühmer committed
	Cleanup: the file system clock drift detection code now
	runs only for incoming mail. File: global/mail_stream.c.
Boris Mühmer's avatar
Boris Mühmer committed

20030416

	Bugfix: missing partial last line when 1) someone submits
	8-bit mail not ending in newline via /usr/sbin/sendmail
	and 2) MIME input processing is turned off, and 3) MIME
	8bit->7bit conversion is requested upon delivery via SMTP.

Boris Mühmer's avatar
Boris Mühmer committed
	Cleanup: auto-bcc recipients are now added in one place
	(the cleanup server) instead of by individual front-end
	servers (pickup, smtpd, qmqpd). This makes it easier to
	add auto-bcc features that trigger on sender or recipient
	addresses.

	Cleanup: "sendmail -t" (recipients from headers) is now
	implemented by the sendmail command instead of by the
	cleanup server. This means that the extract_recipient_limit
	configuration parameter is no longer needed.  Files:
	sendmail/sendmail.c, cleanup/cleanup_message.c,
	cleanup/cleanup_extracted.c.

	Compatibility: "sendmail -t" (recipients from headers) now