6

Я настраиваю почтовый сервер, используя Postfix+Dovecot на RHEL7. Хотя это и не требуется, я хотел бы настроить его так, чтобы почтовый сервер мог размещать несколько доменов.

Проблема, которая возникла, состоит в том, что у меня есть два доменных имени, которые являются абсолютно синонимами: в какой-то момент в прошлом было введено альтернативное имя, чтобы сэкономить пользователям несколько нажатий клавиш. Все электронные письма, которые существуют с одним доменным именем, также существуют с другим. Я хочу, чтобы письма, отправляемые на эти два домена, доставлялись в одни и те же почтовые ящики. Я хотел бы избежать жесткого переписывания адресов в одно написание: если пользователь отправляет электронное письмо с адреса, содержащего длинное доменное имя, оно должно отображаться как таковое при доставке, то же самое с более короткими адресами электронной почты.

  1. 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
    
  2. Postfix передает аутентификацию в Dovecot через Dovecot SASL

    Аутентификация и доставка почты работают для логинов с коротким user@mydomain.com и не работают для длинных логинов user@my-long-named-domain.com выбрасывающих сообщение User does not exist . Я предполагаю, что это происходит из-за путей, которые объяснены в 3 и 4.

  3. 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 .

  4. Параметр 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 ответ1

0

Вместо использования 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/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .