Почтовые серверы · 2 min read · Nov 18, 2025
Виртуальный хостинг с Postfix, часть первая
Версия 1.0
Автор: Joe Topjian
Поддержка виртуальных доменов в Postfix на самом деле довольно надежна. Существует три разных способа хостинга виртуальных доменов с помощью Postfix, и все они описаны здесь. Мы рассмотрим третий вариант: отдельные домены и не-юнитные учетные записи.
Почему именно этот? Потому что в конечном итоге этот вариант дает нам наибольшую гибкость. Настроить и понять его немного сложнее, но это того стоит, когда вы хостите несколько доменов.
Наша конечная цель — иметь почтовый сервер, который поддерживает доставку почты на несколько доменов. Каждый адрес электронной почты будет аутентичен только этому домену. Например, [email protected] и [email protected] — это две разные учетные записи, которые получают разную почту.
Для начала мы собираемся превратить все домены в виртуальные хосты. Даже если у вас настроен Postfix с одним доменом, мы сделаем этот домен виртуальным. Вам не нужно это делать, но я это делаю, потому что считаю это более организованным. Хостинг одного реального домена и остальных виртуальных в Postfix означает, что вам всегда нужно будет настраивать Postfix дважды: один раз для каждого типа домена. Для этого мы изменим строку myhostname в main.cf на:
myhostname = localhost
Далее мы добавим следующую информацию о виртуальном домене в main.cf (все это будет объяснено позже):
virtual_mailbox_domains = /etc/postfix/vhosts.txt
virtual_mailbox_base = /var/spool/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
virtual_alias_maps = hash:/etc/postfix/valias.txt
В первой строке мы используем текстовый файл под названием vhosts.txt. Вы можете назвать его как угодно. Внутри этого текстового файла будет простой одноколоночный список всех доменов, которые вы хостите. Например:
domain1.com
domain2.com
virtual.org
Следующая строка указывает базовый каталог, где мы будем хранить всю нашу почту. Снова вы можете выбрать любое имя.
Третья строка указывает на текстовый файл, который я назвал vmaps.txt. Это текстовый файл с двумя колонками. Первая колонка указывает виртуальный адрес электронной почты. Вторая колонка указывает местоположение почтового ящика этого человека. Так же, как и при хостинге реального домена, если вы укажете / в конце местоположения, это станет форматом Maildir. Если нет, то это mbox. Я указал hash, потому что я также превращаю vmaps.txt в хеш-файл, запустив:
postmap vmaps.txt
Это приводит к созданию файла под названием vmaps.txt.db. Postfix может быстрее искать информацию в хешах, чем в обычном текстовом файле.
Содержимое vmaps.txt выглядит так:
[email protected]
domain1.com/joe/
[email protected]
domain2.com/joe/
[email protected]
virtual.org/john/
Обратите внимание на вторую колонку. Значение добавляется к нашей строке virtual_mailbox_base. Таким образом, абсолютный путь к виртуальному почтовому ящику становится, например, /var/spool/vmail/domain1.com/joe/. Не забудьте фактически создать каталоги domain1.com и joe. Поскольку этот почтовый ящик находится в формате maildir, нам нужно будет создать 3 подкаталога под этим почтовым ящиком: new, cur, tmp. Существует несколько скриптов для этого, но в основном это работает вполне нормально:
mkdir new cur tmp
chmod 700 new cur tmp
Следующие две строки определяют учетную запись, которую мы настроим и которая будет иметь разрешение на доступ к почтовым ящикам. Да, одна учетная запись будет иметь возможность читать всю виртуальную почту. Да, это можно считать проблемой безопасности. Пожалуйста, сделайте все возможное, чтобы никто не мог стать этим пользователем. Мы назовем учетную запись “виртуальной”. Добавьте ее любым способом в систему (например, useradd) и запомните ее uid и gid.
Последняя строка указывает текстовый файл, в который мы можем поместить псевдонимы для виртуальных учетных записей. Содержимое выглядит так:
[email protected]
[email protected]
Наконец, вам нужно будет передать право собственности на почтовые ящики виртуальному пользователю. Запуск этой команды решит эту задачу:
chown -R virtual:virtual /var/spool/vmail
И это все. Просто выполните “postfix reload”, и вы готовы. Конечно, теперь нам нужен способ фактически получать электронную почту. Я сделаю это во второй части.
Часть вторая:
https://www.howtoforge.com/linux_postfix_virtual_hosting_2
Оригинальное местоположение этого документа:
http://adminspotting.net/howtos/postfixvirtual.html
| |
Get new posts in your inbox
No spam. Unsubscribe anytime.