/* unlink/create the current alt path symlink */
i_unlink_if_exists(alt_symlink_path);
if (alt_path != NULL) {
- if (symlink(alt_path, alt_symlink_path) < 0 &&
- errno != EEXIST) {
+ int ret = symlink(alt_path, alt_symlink_path);
+ if (ret < 0 && errno == ENOENT) {
+ /* root_dir doesn't exist yet - create it */
+ if (mailbox_list_mkdir_root(list, root_dir,
+ MAILBOX_LIST_PATH_TYPE_DIR) < 0)
+ return;
+ ret = symlink(alt_path, alt_symlink_path);
+ }
+ if (ret < 0 && errno != EEXIST) {
i_error("symlink(%s, %s) failed: %m",
alt_path, alt_symlink_path);
}