Mon, Dec 15, 2008 at 12:45:43AM +0100, Thomas Siebert wrote:
I should start with this info ;) I'm running 1.1.7 I've tried with many combinations: ~/Mail/deliver.log; Mail/deliver.log; deliver.log; %h/Mail/deliver.log - without effect
OK, I checked the sources and there is indeed no variable expansion code for this parameters. So for now, I don't see how it is possible from within dovecot. There are probably some cheesy ways to do it via filtering for some syslog daemons, but I feel that variables and "~" should be expanded here. As this should be no complicated fix, maybe when Timo reads this he introduces it in the next version.
Changing two lines in deliver.c and recompiling could provisionally work [...]
Now 'log_path = %h/.MAIL/deliver.log' works for me! Thank you, Thomas! Here's a patch if someone would like to test this feature: --- src/deliver/deliver.c.orig 2008-11-19 18:43:13.000000000 +0100 +++ src/deliver/deliver.c 2008-12-15 01:30:38.000000000 +0100 @@ -682,7 +682,8 @@ const char *prefix, *log_path, *stamp; prefix = t_strdup_printf("deliver(%s)", username); - log_path = getenv("LOG_PATH"); + log_path = expand_mail_env( getenv("LOG_PATH"), + get_var_expand_table(username, getenv("HOME")) ); if (log_path == NULL || *log_path == '\0') { const char *env = getenv("SYSLOG_FACILITY"); int facility; @@ -695,7 +696,8 @@ i_set_failure_file(log_path, t_strconcat(prefix, ": ", NULL)); } - log_path = getenv("INFO_LOG_PATH"); + log_path = expand_mail_env( getenv("INFO_LOG_PATH"), + get_var_expand_table(username, getenv("HOME")) ); if (log_path != NULL && *log_path != '\0') i_set_info_file(log_path); -- Marcin Rzepecki m.rzepecki(at)iem.pw.edu.pl