Доставка почты для одного пользователя из двух доменов в один почтовый ящик в Postfix+Dovecot
Я настраиваю почтовый сервер, используя Postfix+Dovecot на RHEL7. Хотя это и не требуется, я хотел бы настроить его так, чтобы почтовый сервер мог размещать несколько доменов.
Проблема, которая возникла, состоит в том, что у меня есть два доменных имени, которые являются абсолютно синонимами: в какой-то момент в прошлом было введено альтернативное имя, чтобы сэкономить пользователям несколько нажатий клавиш. Все электронные письма, которые существуют с одним доменным именем, также существуют с другим. Я хочу, чтобы письма, отправляемые на эти два домена, доставлялись в одни и те же почтовые ящики. Я хотел бы избежать жесткого переписывания адресов в одно написание: если пользователь отправляет электронное письмо с адреса, содержащего длинное доменное имя, то оно должно отображаться как таковое при доставке, то же самое с более короткими адресами электронной почты.
Postfix настроен на ретрансляцию почты на эти два домена
# in /etc/postfix/main.cf relay_domains = hash:/etc/postfix/relay_domains # in /etc/postfix/relay_domains my-long-named-domain.com lmtp:unix:private/lmtp-dovecot mydomain.com lmtp:unix:private/lmtp-dovecot
Postfix передает аутентификацию в Dovecot через Dovecot SASL
Аутентификация и доставка почты работают для логинов с короткими
user@mydomain.com
и провалиться на долгие логиныuser@my-long-named-domain.com
бросать сообщениеUser does not exist
, Я предполагаю, что это происходит из-за путей, которые объяснены в 3 и 4.Dovecot использует механизм passwd-file для
userdb
а такжеpassdb
, где%d
используется в путях к файлам, чтобы различать домены.# in /etc/dovecot/conf.d/auth-passwdfile.conf.ext passdb { driver = passwd-file args = scheme=CRYPT username_format=%n /etc/dovecot/%d/users } userdb { driver = passwd-file args = username_format=%n /etc/dovecot/%d/users default_fields = uid=vmail gid=vmail }
Файл пользователей находится только под коротким доменным именем:
/etc/dovecot/mydomain.com/users
,mail_location
параметр также использует%d
:mail_location = maildir:/var/vmail/%Ld/%Ln/Maildir
Вопрос: Есть ли способ сопоставить длинное доменное имя с коротким и сделать это только для этой конкретной пары доменов? Я хочу, чтобы все письма для этих двух доменов доставлялись в почтовые ящики с более коротким mydomain.com
:
/var/vmail/mydomain.com/user1/Maildir
/var/vmail/mydomain.com/user2/Maildir
/var/vmail/mydomain.com/user3/Maildir
Это должно быть сделано в Postfix или в Dovecot?
Я знаю, что могу создавать мягкие / жесткие ссылки, чтобы обеспечить существование обоих каталогов, но мне не нравится это решение (абсолютно!).
В целом, каков правильный подход к решению этой проблемы? Я довольно новичок в почтовом сервере.
Thanx
1 ответ
Вместо того, чтобы использовать relay_domains
вы могли бы использовать virtual_alias_domains
& virtual_alias_maps
указать длинную форму на короткую форму:
@my-long-named-domain.com @mydomain.com
Вы можете прочитать virtual(5) для получения дополнительной информации, или есть тонны инструкций для тонких деталей использования виртуальных псевдонимов в Postfix.
Вот точный пример, если virtual(5) слишком плотный для первого курса: https://www.mind-it.info/2013/10/23/setting-virtual-alias-domains-correctly-postfix/