Я успешно скомпилировал, настроил и запустил Dovecot с функцией виртуальных пользователей.
Вот часть моего /etc/dovecot.conf
Файл конфигурации:
mail_location = maildir:/home/%d/%n/Maildir
auth default {
mechanisms = plain login
userdb passwd-file {
args = /home/%d/etc/passwd
}
passdb passwd-file {
args = /home/%d/etc/shadow
}
socket listen {
master {
path = /var/run/dovecot/auth-worker
mode = 0600
}
}
}
Я столкнулся с одной проблемой, которую не могу решить сам. Есть ли способ создать сопоставление доменов пользователей и указать имя пользователя в mail_location
?
Примеры: 1. в настоящее время у меня есть /home/domain.com/user/Maildir 2. Я бы хотел иметь /home/USER/domain.com/user/Maildir
Могу я как-нибудь этого добиться?
Привет, Стойко
Задумайтесь на мгновение, о чем вы просите. Вы хотите включить домашний каталог пользователя в mail_location
. На первый взгляд это кажется разумным запросом, но вы должны спросить - откуда Dovecot знает домашний каталог пользователя?
Системные пользователи хранятся в / etc / passwd - этот файл содержит
username:password:uid:gid:comment:home:shell
(Примечание: вместо пароля у вас может быть x
с паролем, хранящимся в / etc / shadow; или *
деактивировать аккаунт; комментарий на самом деле 'месторождение гекос')
Если Dovecot читает этот файл - он предоставляется вместе с домашним каталогом пользователя - как только он получит эту информацию, он сможет использовать ее в другом месте (то есть сможет использовать '~ /to signify the home directory, and will set
% h` к тому же).
Однако, если вы используете виртуальных пользователей, а не пользователей системы, одна из фундаментальных идей состоит в том, что не каждый виртуальный пользователь должен быть пользователем системы. В этом случае Dovecot не имеет возможности узнать, является ли виртуальный пользователь с тем же именем, что и системный пользователь, на самом деле тем же пользователем или нет (он также не может использовать UID, поскольку можно сопоставить несколько виртуальных пользователей с тот же UID). Он не будет предполагать ничего, кроме того, что предусмотрено в вашей userdb.
А Userdb может предоставить Dovecot следующую информацию:
В вашей конфигурации вы используете файл passwd, то есть файл с тем же форматом, что и системный файл passwd, но который вы настроили для этой цели (т.е. это не системный файл passwd). Dovecot принимает следующие формат файла passwd (и игнорирует поля gecos и shell):
user:password:uid:gid:(gecos):home:(shell):extra_fields
Вы можете переопределить определенные значения по умолчанию для каждого пользователя, указав (с разделителями пробелами) key=value
дополнительные поля (с ключами с префиксом userdb_
в большинстве случаев). Например, userdb_mail=Maildir:~/mail
переопределит mail_location
.
Повторюсь, используя виртуальных пользователей (а не используя системный файл passwd), вы сказали Dovecot, что эти пользователи могут не иметь никакого отношения к системным пользователям, и поэтому он будет использовать только предоставленную вами информацию, не предполагая что-нибудь еще.
Наконец, чтобы попытаться ответить на ваш вопрос:
mail_location
- они определены на Страница переменных Dovecot.%h
или, предпочтительно ~/
может использоваться для возврата домашнего каталога, который Dovecot извлек из своего запроса UserDB (и устанавливает mail_home
)mail_location
вернув userdb_mail из вашего запроса userdb.Итак, по сути, установите дом в своей userdb, если вы хотите использовать домашний каталог в Dovecot, потому что он не может знать, что вы ему не говорите.
В соответствии с эта ссылка Вы можете использовать "несколько переменных в настройке mail_location"
%u: Full username.
%n: User part in user@domain, same as %u if there's no domain.
%d: Domain part in user@domain, empty if there's no domain.
например.
mail_location = maildir:/home/%n/%d/%n/Maildir
должен указывать на / home / user / domain / user / Maildir