Akin to Puppet Templating, when Puppet copies a file it could pass the file contents through a filter, making changes in the process. This would be something like a simplistic client-side template system, although it would likely be significantly less powerful. You would define a filter, and then refer to it in the copy:
filter { mailserver:
replace => "s/MAILSERVER/$mailserver/g"
}
This is a relatively hideous example, in that it includes regular expressions and such, but something that provided that functionality would be nice. The biggest problem with filters is that they do not at all fit within Puppet's normal hash-table structures.