Я использую веб-сервер с Apache2 и несколькими виртуальными доменами. Кроме того, для этих доменов есть почтовый сервер с веб-интерфейсом. Для каждого виртуального домена example.com
, У меня есть поддомен mail.example.com
указывая на мой интерфейс веб-почты (Roundcube). Он отлично работает со следующей конфигурацией:
<VirtualHost *:80>
ServerAdmin me@example.com
ServerName mail.example.com
ServerAlias mail.vname1.com, mail.vname2.com, mail.vname3.com, #...
DocumentRoot /srv/www/mail/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /srv/www/mail>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/mail.error.log
LogLevel warn
CustomLog /var/log/apache2/mail.access.log combined
</VirtualHost>
Однако для каждого нового клиента я должен, среди прочего, добавить соответствующее доменное имя в список ServerAlias
es.
Есть ли способ автоматически связать все mail.*
поддомены с /srv/www/mail/
?
Директива ServerAlias поддерживает подстановочные знаки - вы должны иметь возможность использовать следующее, чтобы сопоставить все «почтовые» поддомены.
ServerAlias mail.*
Поддомен с подстановочными знаками (например, * .domain.tld) хорошо документирован, но трудно найти какие-либо указания на то, что часть домена также может быть подстановочным знаком.
Я довольно часто использовал этот подход для общих поддоменов, когда использовал Apache. Единственная разница в том, что я использовал перенаправление на общий URL (потому что я хотел использовать SSL и не хотел получать сертификат для каждого домена). Тем не менее, он смог успешно захватить поддомен, поэтому такая же реализация должна работать в вашем сценарии. (Конечно, вам все еще нужна статическая директива ServerName).