[Dovecot] version 1.2.11 creating symlink loop for config file
Adrian Pepper
arpepper at uwaterloo.ca
Wed Apr 14 20:25:15 EEST 2010
What is the following at the end of "main_init" in dovecot 1.2.11
(src/master/main.c) intended to accomplish?
base_config_path = t_strconcat(settings_root->defaults->base_dir,
"/"PACKAGE".conf", NULL);
(void)unlink(base_config_path);
if (symlink(configfile, base_config_path) < 0) {
i_error("symlink(%s, %s) failed: %m",
configfile, base_config_path);
}
}
With our compilation parameters and runtime setup it ends up removing
the working base_config_path file and making it instead a symlink to
itself. (I.e. a non-working loop). Strangely, the one instance of
dovecot continues and seems to mostly work. But (for now) I need to
put back the proper dovecot.conf before I can restart it.
I think that would be the expected result if
strcmp(configfile, base_config_path) == 0.
Is that in fact not expected to be the case? (See my initial question).
I did not expect self-modifying of configuration like this.
(See my initial question).
Pattern matches (e.g. "config_path") find no apparent mention
of this in recent postings.
Adrian Pepper
Computer Science Computing Facility
David R. Cheriton School of Computer Science
University of Waterloo
arpepper at uwaterloo.ca
=========================================================================
After the bug has happened...
services110.cs# servers/dovecot -n
# 1.2.11: /software/imap-dovecot-1.2/data/etc/dovecot/dovecot.conf
Error: Can't open configuration file /software/imap-dovecot-1.2/data/etc/dovecot/dovecot.conf: Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS
Fatal: Invalid configuration in /software/imap-dovecot-1.2/data/etc/dovecot/dovecot.conf
services110.cs#
services110.cs# servers/dovecot -n
# 1.2.11: /software/imap-dovecot-1.2/data/etc/dovecot/dovecot.conf
Warning: fd limit 256 is lower than what Dovecot can use under full load (more than 768). Either grow the limit or change login_max_processes_count and max_mail_processes settings
# OS: SunOS 5.8 sun4u
base_dir: /software/imap-dovecot-1.2/data/etc/dovecot/
protocols: imap imaps pop3 pop3s
ssl_cert_file: /software/sslCerts/config/certs/dovecot.pem
ssl_key_file: /software/sslCerts/config/certs/private/dovecot.key
disable_plaintext_auth: no
login_dir: /software/imap-dovecot-1.2/data/etc/dovecot/home/
login_executable(default): /software/imap-dovecot-1.2/libexec/dovecot/imap-login
login_executable(imap): /software/imap-dovecot-1.2/libexec/dovecot/imap-login
login_executable(pop3): /software/imap-dovecot-1.2/libexec/dovecot/pop3-login
first_valid_uid: 100
last_valid_uid: 65535
first_valid_gid: 100
last_valid_gid: 65535
mail_location: mbox:~:INDEX=~/.imap:INBOX=/var/mail/%u
mmap_disable: yes
dotlock_use_excl: no
mail_nfs_storage: yes
mail_nfs_index: yes
mail_executable(default): /software/imap-dovecot-1.2/libexec/dovecot/imap
mail_executable(imap): /software/imap-dovecot-1.2/libexec/dovecot/imap
mail_executable(pop3): /software/imap-dovecot-1.2/libexec/dovecot/pop3
mail_plugin_dir(default): /software/imap-dovecot-1.2/lib/dovecot/imap
mail_plugin_dir(imap): /software/imap-dovecot-1.2/lib/dovecot/imap
mail_plugin_dir(pop3): /software/imap-dovecot-1.2/lib/dovecot/pop3
namespace:
type: private
separator: /
prefix: maildir_mail/
location: maildir:~/.maildir
list: yes
subscriptions: yes
namespace:
type: private
separator: /
location: mbox:~/.:INBOX=/var/mail/%u:INDEX=~/.imap1
inbox: yes
list: yes
subscriptions: yes
namespace:
type: private
separator: /
prefix: mail/
location: mbox:~/mail:INDEX=~/.imap2
list: yes
subscriptions: yes
lda:
postmaster_address: postmaster at cs.uwaterloo.ca
hostname: cs.uwaterloo.ca
auth default:
verbose: yes
debug: yes
passdb:
driver: passwd-file
args: /etc/shadow
userdb:
driver: passwd
args: blocking=yes
services110.cs#
This is not a production setup; some/most configuration is
experimental or speculative.
"dovecot -n" does not appear to remove the config file.
More information about the dovecot
mailing list