Виртуальные домены


По умолчанию Sendmail отвергает все сообщения, не предназначенные для локального хоста. Чтобы в такой конфигурации почта работала, необходимо совпадение имени хоста почтового сервера с именем домена, то есть такая схема будет работать, если, например, почтовый сервер для домена аbsolutefreebsd.com будет работать на машине с именем absolutefreebsd.com. Но так бывает редко. Например, у меня почтовый сервер домена absolutefreebsd.com запущен на машине с именем bewilderbeast.blackhelicopters.org. Виртуальные домены позволяют организовать получение почты для другого домена. Одна машина, работающая под управлением FreeBSD, может обслуживать сотни и тысячи виртуальных доменов.

Конфигурирование виртуального домена производится в три этапа. Первый этап — определить почтовому серверу домен, за который он будет нести ответственность. Затем сконфигурировать пересылку электронной почты пользователей в этом домене на соответствующие учетные записи. И, наконец, опубликовать МХ-запись для этого домена, которая будет указывать на ваш почтовый сервер.

Файл /etc/mail/local-host-names

Файл /etc/mail/local-host-names определяет имена хостов и доменов, почту для которых будет принимать данная машина. Добавив хост или домен в этот файл, вы тем самым сообщаете Sendmail, что локальная машина является конечной точкой на пути электронной почты, связанной с этим хостом или доменом. Этот файл содержит список хостов и доменов, по одному в каждой строке, например так:

blackhelicopters.org
absolutefreebsd.com
absoluteopenbsd.com
pgpandgpg.com
ciscoroutersforthedesperate.com
...

He перечисляйте здесь домены, почту для которых вам не требуется принимать! Sendmail воспринимает этот файл как последнее слово для любого домена, перечисленного здесь, и если почта не сможет быть доставлена локально, отправителю будет возвращено сообщение об ошибке. Перечислив здесь лишние удаленные домены, вы никому не доставите неудобств — кроме своих пользователей.

Карта пользователей

Теперь, чтобы Sendmail могла принимать электронную почту домена, нужно сообщить системе, куда доставлять почту этого домена. По умолчанию Sendmail пытается отыскать учетную запись с тем же именем, что и адрес электронной почты. Моя машина принимает почту для доменов blackhelicopters.org и absolutefreebsd.com. По умолчанию Sendmail будет доставлять почту, направленную по адресу mwlucas@absolutefreebsd.com, локальному пользователю mwlucas, а почту, направленную по адресу mwlucas@blackhelicopters.org, также локальному пользователю mwlucas. Теоретически вполне возможно, что это два совершенно разных человека. Пользователем mwlucas@blackhelicopters.org мог бы быть Mark W. Lucas, не имеющий никакого отношения к вашему покорному слуге.* Мне не нужна его электронная почта, как и ему не нужна моя. Вы не можете запретить использование одинаковых имен пользователей в разных доменах. Решение состоит в том, чтобы обеспечить Sendmail возможностью отображения имен учетных записей в виртуальной таблице пользователей, /etc/mail/virtusertable. Ниже приводится пример нескольких записей:

stenchmaster@blackhelicopters.org   chris
postmaster@blackhelicopters.org     mwlucas
mwlucas@blackhelicopters.org        mwlucas
silence@blackhelicopters.org        erron:nouser spambait address
@blackhelicopters.org               error:nouser no such user

Первая запись отображает конкретный адрес электронной почты слева на конкретную учетную запись справа. Письма, отправленные на адрес stenchmaster@blackhelicopters.org, будут доставляться на локальную учетную запись chris. Следующие две записи тоже отображают конкретные электронные адреса в домене на учетную запись пользователя в локальной системе. Четвертая запись более интересна, поскольку возвращает отправителю сообщение об ошибке. Мне нужно, чтобы система возвращала сообщение «нет такого пользователя» любому, кто отправит письмо на адрес silence@blackhelicopters.org. Я использую этот адрес при заполнении форм на сайтах, от которых я ожидаю получить спам. Я активизирую этот адрес на несколько минут, чтобы получить письмо, необходимое для активизации учетной записи, а затем снова блокирую этот адрес. Наконец, последняя запись — это универсальное правило, которое применяется ко всему домену в целом. Указав адрес @blackhelicopters.org, я предписываю Sendmail применять это правило ко всем адресам электронной почты, для которых отсутствуют конкретные правила. В ответ на сообщения, отправленные на адреса, отсутствующие в этом списке, будет посылаться сообщение об ошибке «no such user» (нет такого пользователя).

Когда-то многие системные администраторы использовали такие универсальные адреса электронной почты собственных доменов, создавая адреса «на лету». «Хотите пообщаться со мной? Вот мой личный адрес электронной почты в домене». Однако теперь, когда спамеры могут выполнить подбор по словарю, наличие такого правила отображения универсального адреса на личную учетную запись представляет собой отличный способ получить огромный объем спама.

Подбор по словарю

Подбор по словарю (dictionary attack) — это одна из разновидностей атак, когда злоумышленник пытается перебирать возможные имена пользователей, одно за другим. Спамер может попытаться выполнить подбор по словарю, пробуя посылать спам на все возможные адреса в домене. Быстро рассылая сообщения по адресам в последовательности: aardvark@yourdomain.com, aardwolf@уourdomain.com, aaron@yourdomain.com и далее по словарю, спамер надеется, что какая-то часть макулатурной почты успеет достигнуть действительных пользователей до того, как его отключат. Файл /usr/share/diet/words содержит 235 882 слова; если ваш сервер будет принимать сообщения по адресам, соответствующим каждому из этих слов, и пересылать их на вашу учетную запись, вам не останется ничего иного, как уничтожить все сообщения разом, уповая на то, что во время атаки никто не послал вам ничего важного.

Создайте аналогичные записи для других виртуальных доменов. Если нужно, чтобы адреса mwlucas@absolutefreebsd.com и mwlucas@blackhelicopters.org соответствовали разным учетным записям, просто создайте отдельные записи в файле virtusertable:

mwlucas@absolutefreebsd.com   michael
mwlucas@blackhelicopters.org  mwlucas

Я рекомендую перечислять имена доменов в алфавитном порядке, чтобы уменьшить вероятность ошибки, когда у вас будут тысячи доменов на одной машине.

Подобно другим большим конфигурационным файлам Sendmail, доступ к информации в файле virtusertable осуществляется через файл базы данных, который необходимо обновлять после каждого изменения. Изменения в virtusertable не возымеют эффект, пока вы не перейдете в каталог /etc/mail и не запустите команду make maps, как поступали для обновления других файлов базы данных Sendmail.

Теперь достаточно опубликовать МХ-запись для вашего домена, указав в ней ваш почтовый сервер, и виртуальные домены начнут действовать.

Комментарии запрещены.